test(performance): [ENG-13] enforce measured teardown observation minimum

This commit is contained in:
Harvey Zhao committed 2026-09-14 16:02:05 +08:00
1 parent 23a4f22b72
commit 48a7f1ecb0
11 files changed
+22120 -12

No files matched your search

@@ -0,0 +1,47 @@
# ENG-13 性能资源探针的最小观察时间
MOD-03在新的实际安装包上执行正式性能配对时,Firefox第一轮报告因一项candidate
资源观察只有349ms而失败。该项是第二组chapter的最后一次资源探针;原门槛要求
至少350ms,因此失败是有效的观察缺口,不能把它四舍五入成通过或覆盖原报告。
Chromium/WebKit同轮完成,仍有既有体积/计时review-required信号。
## 原因与修复范围
冻结BASE-06夹具在记录起始时钟后只执行一次原生setTimeout(350),然后记录实际
performance.now差值。名义延时不等于该次记录一定已满350ms;现有证据不能进一步
区分计时量化和原生调度因素,不能据此断言Firefox存在特定计时器实现缺陷。
修改只在`scripts/performance-fixture.mjs`的当前适配层加入waitForObservation。
它按同一个实测时钟计算剩余时间,等待后重新核对,不足时继续等待剩余部分。
使用probe已有的原始定时器,不把观察器自身加入播放器待释放定时器列表;没有
改变库的清理动作。记录仍使用实际now()-waitStarted,保持超出的实测时间。
`refactor/fixtures/performance.js`、旧JSON、所有计时阈值及350ms校验均不修改。
适配层对旧、新两个播放器使用相同处理;构造/ready/play/destroy计时循环、媒体、
热身、样本数量和交替顺序不变。变化仅限计时采样之外的销毁后资源观察窗口及
原有结果传输替换,测试逐字反向恢复冻结源来保护这个边界。
## 验证
- 原报告保留:`run-firefox-ERtLa6/report.json`,observedMs=349,校验明确失败;
原Chromium/WebKit报告也保留,不把本轮重测覆盖到它们。
- 虚拟单调时钟覆盖首次349ms后补1ms、原生超出到364ms时保留实测值、已经满足
时不再等待,以及定时器拒绝原样传播。原349ms候选报告变体仍须被校验器拒绝。
- 适配层测试证明去掉结果传输和最小观察适配后,内容与冻结文件完全一致。
- 使用同一`run-rawoRh`实际安装的core/chapter产物重新执行三引擎完整三组配对。
包的源文件、构建工具和安装字节由现有严格验证器核对;该补丁不改变包内容。
最终9项测试通过(含冻结发布性能/压缩基线),定向lint、严格工具链、计划及风险
校验通过。原生三引擎三项完整配对测试通过,共108个旧新资源窗口,54个候选窗口
均通过严格清理检查。最短实际观察为Chromium350.2000000476837ms、Firefox350ms、
WebKit350ms;没有取整或使用名义延时代替真实值。第二轮没有计时reviewSignals,
但首轮Chromium销毁计时信号仍保留,不能把样本波动当作本补丁带来的计时收益。
三引擎均因原有分发体积信号保持review-required。
具体最终结果、环境、来源指纹、原失败和修复后报告见
[机器证据](../baselines/observation-window-validation.json)。该任务只处理观察窗口
可靠性,不能把review-required变成性能发布通过;MOD-03及ENG-PERF-01/02继续。
也不表示所有插件、物理设备、远端CI或最终候选发布完成。无新依赖或API改动。
回退本任务提交即可恢复旧适配器;不要回写冻结夹具或放宽350ms断言。原失败应
继续保留。完成后独立本地提交;不push/publish。