#66084·Node.js

test_runner: 允许适配器处理未处理的 Promise 拒绝

作者: domenic创建于 2026年9月17日更新于 2026年9月17日
标签feature request

这个功能能解决什么问题?

(AI披露:由GPT-6 Astra Extra High所写的文本,然后由@domenic阅读,微调并签名。)

我们[将jsdom的测试移到'Node:test'(https://GitHub.com/jsdom/jsdom/pul/3650)。 我们的网络平台测试适配器在jsdom实例中运行每个WPT文件,等待嵌入式'testharness. js ' 把握完成,并对照我们的期望检查结果。

一些WPT在iframe窗口中刻意产生未经处理的拒绝. 这些并不一定构成母窗口测试带的故障. 其他拒绝应当成为操纵故障,适配器需要对照未执行功能的预期故障进行评估.

目前,`node: test' 失败,当它观察到一个未经处理的拒绝时,在我们适配器完成对WPT的评价之前,就中止了附加测试。 添加我们自己的"process.on ("未处理的拒绝")"听取者并不妨碍测试跑取者独立地失败测试.

我们需要一种支持的方法,让嵌入式测试控制器负责选择的拒绝,同时对无关的拒绝保留正常的测试运行器故障处理.

你为解决问题而提出的特征是什么?

每一次测试的钩可以处理单个未处理的拒绝,在测试跑者自动失败或中止测试之前.

例如,API可能看起来像这样:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 测试( “嵌入式吊带”, { ) 未处理的拒绝(理由、承诺){ 如果 (! 适应者. owns ) 保证( 保证) { 假返回; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

适配器. 记录未处理的拒绝( 理由, 承诺) ; 返回真实; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? ,同声() {{{{{} 等待适配器. run( ); 适配器. sassert ExpectedResults (); 高通通通通通通通通通通通通通通通通通通通通通通通通通通通通.

  • ;

重要能力是:

- 钩子既收到拒绝理由,也收到实际承诺,使适配器能够识别所有权。
- 返回`真'表示适配方接受拒绝的责任。 试跑者不会自动失败 也不会中止测试
- 返回 " 虚假 " 或 " 不明 " 保留目前的行为。 从钩上扔出失败测试.

< 细节>
<摘要> GPT-6 Astra Extra High 想法很重要,

- 拒绝归因于原试验的同步上下文,包括试验结束后报告的拒绝。 声称的逾期拒绝不应独立导致测试文件失败;未声称的逾期拒绝应保留当前的行为.
- 钩子只控制测试跑者的反应 它不压制其他过程的收听者,也不改变该过程所配置的无手-拒绝政策.

这将让适配器对拒绝进行分类,并完成检查结果,而不需要节点来理解嵌入式带的语义. 适配器将继续负责等待相关的拒绝通知,然后才能完成测试。
. . . . . . .