test(ci): [CI-01] checkpoint installed adaptive and thumbnail coverage

This commit is contained in:
Harvey Zhao committed 2026-09-15 02:33:16 +08:00
1 parent 7094cf6f9c
commit b90de99bc2
25 files changed
+10494 -45

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -0,0 +1,65 @@
# CI-01 HLS、DASH 与 Auto Thumbnail 接入安装范围
## 实现与边界
十二包统一安装名单新增 HLS Control、DASH Control、Auto Thumbnail。七个浏览器
文件通过 browser-candidate.js 加载校验后的实际 tarball 安装文件,拒绝显式产物
覆盖和 Auto Thumbnail frozen baseline;缺失/过期/篡改安装不退回源码。
既有源码入口保留,DASH 安装入口额外拒绝诊断 SDK 替换与恢复探针,防止诊断变体
混入正常验收。source 模式仍保留明确诊断开关。相关守卫负例已纳入 Node 测试。
HLS 使用固定实际 SDK、manifest/分片,区分无 Worker 与有真实 Worker 两套用例。
DASH 的 controlled 文件仅验证真实核心 DOM/原生 MP4 和受控 SDK 方法;SDK 文件
加载真实固定 dash.js 4.5.2/5.2.1。SDK 能力附件只记录可用候选,不声称加载插件;
dash-plugin-inputs 记录集成场景的实际选包。纯原生 SDK 无插件对照保持不变。
Auto Thumbnail 使用原生视频、Canvas 和 JPEG,但核心宿主是 stub;无原生帧呈现
回调时首两格仍为诊断而非通过,AUTO-THUMB-PIXEL-01 不因此关闭。
首次十二包准备被 HLS 的 tsconfig 泄漏拦截;PKG-HLS-PACK-01 已独立修复并提交
7094cf6f9,详细旧/中间/新归档证据另存。CI 接入未改公开生产 API、超时、SDK 或
断言;lint 自动修正了改动文件内既有 finally 括号格式。无新增依赖,根锁不变。
## 工程验证
Windows x64,固定 Node 24.21.0、Yarn 1.22.22。run-UmEnUj 实际十二包构建/pack/
隔离安装/冻结复装和完整成员核验通过。通用消费者仍只覆盖 core/chapter 的
36 运行时、5 旧类型模式、8 精确类型模式,不是全生态 Node/类型准入。
相关单元 278/278、工程 47/47、scoped lint、library 严格类型、严格工具链、CI
工作流契约与 actionlint 1.7.12 通过;未调用 shellcheck/pyflakes。初始 lint
四处格式错误日志保留,最终改正。完整 installed collection 为 32 文件/1137 项;
本轮实跑仅新增七文件三引擎 375 项,workers=2,retries=0,结果见机器证据。
## 维护与剩余工作
维护入口为三个包的 ARCHITECTURE.md、scripts/browser-validation/README.md、
test/package/README.md。所有实际失败、能力跳过和原生对照单独计数;保留旧
AUDIO-BUFFER-01 与 CHAPTER-TIMING-01 报告,未在本次重复执行此前插件集合。
CI-01 与各包真实 SDK/设备/完整分发门槛继续开放。尚未运行远端 Actions,也没有
发布候选授权。回退此检查点恢复九包 installed 范围;HLS 排除配置修复为独立提交。
## 实测结果
Chromium 153.0.8010.12、Firefox 155.0、WebKit 26.6。375 项共 293 通过、
2 失败、80 跳过,耗时 350.040 秒,实际退出 1、无重试;Chromium/Firefox 各
124 通过与 1 失败,WebKit 45 通过与 80 能力跳过。32 文件/1137 项只是完整
collection,本轮没有重跑其他二十五文件,不能将新子集结果当成完整十二包 CI。
两项失败均为裸 dash.js 4.5.2 的暂停边界 seek,重新播放后 currentTime 停在 6,
未达到大于 6.2 的断言。该路径未创建 ArtPlayer 实例,候选插件没有参与;已有
DASH-SEEK-01 与候选插件的精确版本修复分别保留。实际候选插件集成通过并不修复
裸 SDK。状态附件在清理后的视频尺寸/时间归零不能被反推为失败当时的解码状态。
原始 trace/截图/报告保留在 ci01-adaptive-installed-report,读取旧附件路径时映射
到归档目录的 results;没有重跑覆盖、升级 SDK 或放宽 seek 断言。
80 项跳过全部在 Windows WebKit:DASH SDK 48、HLS 主矩阵 16、HLS SDK 矩阵 16。
实际能力记录仍验证无 MSE 的边界,不等于适配流播放通过。Auto Thumbnail 三引擎
候选 27 项通过,但 WebKit 两个像素用例对首两格仅记录诊断,不能关闭首帧风险。
测试输入附件确认 221 项选择已验证候选安装文件,其中含能力边界与受控宿主,
不把该数当作 221 项真实自适应解码。固定 SDK 为 hls.js 1.5.17/1.7.2、dash.js
4.5.2/5.2.1,来源和实际包成员哈希均保留。
刻意继承 installed map 后,source 入口清除了它。三个 Chromium 源码定向用例
(HLS 解码/选择、DASH 5.2.1 MPD/选择、Auto Thumbnail pattern 像素)3/3 通过,
附件均为 source-build;这不重验所有源码文件。所有结果见
[机器证据](../baselines/ci-adaptive-installed-validation.json)。
+1 -1
View File
@@ -2,7 +2,7 @@
浏览器CI现在分别执行 `yarn test:browser:source` 和
`yarn test:browser:installed`。前者清除继承的安装map并保留全部spec;后者要求已
核验的core/chapter/Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles安装,执行明确列出的installed子集。两步不
核验的core/chapter/Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles/HLS Control/DASH Control/Auto Thumbnail安装,执行明确列出的installed子集。两步不
吞失败,普通失败后仍保存另一范围的证据,分别上传browser-source/browser-installed。
入口与报告规则见[维护说明](../scripts/browser-validation/README.md)。source全量
耗时/60分钟预算、其余插件安装矩阵与远端运行仍待CI-01/CI-04,不计为已通过。
+1 -1
View File
@@ -509,7 +509,7 @@
- ENG-09: [记录](changes/2026-09-12-ENG-09-integration.md) [记录](baselines/engineering-integration.json)
- ENG-10: [记录](changes/2026-09-10-ENG-10-test-reliability.md) [记录](test-reliability.md)
- ENG-11: [记录](build-analysis.md) [记录](baselines/bundle-attribution.json) [记录](changes/2026-09-11-ENG-11-build-analysis.md)
- CI-01: [记录](ci-setup.md) [记录](changes/2026-09-13-CI-01-matrix-summary.md) [记录](baselines/ci-matrix-validation.json) [记录](changes/2026-09-13-CI-01-node-consumers.md) [记录](baselines/node-consumer-validation.json) [记录](changes/2026-09-14-CI-01-installed-full.md) [记录](baselines/ci-installed-full-validation.json) [记录](changes/2026-09-14-CI-01-source-chromium.md) [记录](baselines/ci-source-chromium-validation.json) [记录](changes/2026-09-15-CI-01-ads-installed.md) [记录](baselines/ci-ads-installed-validation.json) [记录](changes/2026-09-15-CI-01-subtitles-installed.md) [记录](baselines/ci-subtitles-installed-validation.json)
- CI-01: [记录](ci-setup.md) [记录](changes/2026-09-13-CI-01-matrix-summary.md) [记录](baselines/ci-matrix-validation.json) [记录](changes/2026-09-13-CI-01-node-consumers.md) [记录](baselines/node-consumer-validation.json) [记录](changes/2026-09-14-CI-01-installed-full.md) [记录](baselines/ci-installed-full-validation.json) [记录](changes/2026-09-14-CI-01-source-chromium.md) [记录](baselines/ci-source-chromium-validation.json) [记录](changes/2026-09-15-CI-01-ads-installed.md) [记录](baselines/ci-ads-installed-validation.json) [记录](changes/2026-09-15-CI-01-subtitles-installed.md) [记录](baselines/ci-subtitles-installed-validation.json) [记录](changes/2026-09-15-CI-01-adaptive-installed.md) [记录](baselines/ci-adaptive-installed-validation.json)
- CI-02: [记录](changes/2026-09-14-CI-02-pages-artifact.md) [记录](baselines/pages-artifact-validation.json) [记录](pages-deployment.md)
- PILOT-01: [记录](changes/2026-09-10-PILOT-01-chapter.md) [记录](baselines/pilot-validation.json)
- CORE-01: [记录](changes/2026-09-10-CORE-01-typed-utils.md) [记录](baselines/core-utils-validation.json)
+8
View File
@@ -1,5 +1,13 @@
# 进度与证据
## CI-01 自适应控制和自动缩略图接入安装矩阵
十二包实际安装通过,清单扩展到 32 文件/1137 项。新增七文件三引擎实跑
375 项:293 通过、2 裸 dash.js 4.5.2 seek 失败、80 Windows WebKit MSE 能力
跳过。Auto Thumbnail 首帧限制仍保留,未把能力诊断计为通过。源码定向 3/3、
相关单元 278/278、工程 47/47 通过;见[记录](changes/2026-09-15-CI-01-adaptive-installed.md)。
CI-01 继续 doing,197/263 完成;后续补齐其余安装覆盖并审查全矩阵耗时与失败归类。
## PKG-HLS-PACK-01 修正实现配置进入 npm 包
十二包安装准备发现 HLS 的内部 tsconfig 未排除。已修正 .npmignore,实际旧包
+9 -4
View File
@@ -3080,10 +3080,13 @@
"refactor/changes/2026-09-14-CI-01-source-chromium.md",
"refactor/baselines/ci-source-chromium-validation.json",
"refactor/changes/2026-09-14-PKG-DASH-SEEK-01-buffer-metrics.md",
"refactor/baselines/dash-seek-recovery-validation.json"
"refactor/baselines/dash-seek-recovery-validation.json",
"refactor/changes/2026-09-15-CI-01-adaptive-installed.md",
"refactor/baselines/ci-adaptive-installed-validation.json"
],
"compatibleResolution": "PKG-DASH-SEEK-01 已在候选插件按精确版本和真实空缓冲同步 SDK 指标,新旧核心及两引擎严格跳转通过。裸 SDK 4.5.2 和冻结旧插件仍保留原始失败;不伪造媒体事件、不偏移 seek、不强制升级 SDK,完整组合及发布验收仍开放。",
"closureCriteria": "原失败的新旧核心/插件组合有确定根因与对应修复/可验证环境边界;原生对照及原顺序、原目标回归成立,后续偶然通过不能关闭。"
"closureCriteria": "原失败的新旧核心/插件组合有确定根因与对应修复/可验证环境边界;原生对照及原顺序、原目标回归成立,后续偶然通过不能关闭。",
"workspaceState": "CI-01 十二包安装扩展中,裸 SDK 4.5.2 在 Chromium/Firefox 的恢复时间仍为 6,原断言大于 6.2 失败;候选插件集成通过不关闭裸 SDK 原始缺陷,完整失败报告保留。"
},
{
"id": "ADS-TYPE-01",
@@ -4259,11 +4262,13 @@
"refactor/changes/2026-09-14-PKG-AUTO-THUMB-03-first-seek.md",
"refactor/baselines/auto-thumbnail-first-seek.json",
"refactor/changes/2026-09-14-PKG-AUTO-THUMB-03-native-decoder.md",
"refactor/baselines/auto-thumbnail-native-decoder.json"
"refactor/baselines/auto-thumbnail-native-decoder.json",
"refactor/changes/2026-09-15-CI-01-adaptive-installed.md",
"refactor/baselines/ci-adaptive-installed-validation.json"
],
"compatibleResolution": "Establish actual decoded-frame readiness for the existing timeline/grid and preserve silent independent extraction; do not waive colored pixel checks as unsupported media. Intrinsic-size hidden/opacity/clip/visible rendering crossed with current/readyState/first-loadeddata-event strategies still misses the unique first frame in all 12 Windows WebKit profiles. Correct Firefox frames retain totalVideoFrames=0, so that counter cannot be a portable readiness gate. Do not reintroduce these unvalidated workarounds. First-seek diagnostics additionally exclude drawing the first loadeddata frame without seek, one/two RAF waits, post-seek RAF waits and verified forward/back seeking on the recorded Windows WebKit host. The warm comparison first had an invalid stale-event completion, then a timeout; final bounded retries verify actual [1,1,0] seeking and still miss purple. Controls retain purple. These are exclusions, not production fixes.",
"closureCriteria": "Candidate source and artifacts generate usable sampled pixels on native browser controls with lifecycle checks; supported Safari and core combinations remain explicit final gates.",
"workspaceState": "The frames module now waits for native presentation and seek completion on capable browsers. Chromium/Firefox source/main/legacy assert all five cells including first purple frame, second red cell, legitimate black and presentation times. Callback-less Windows WebKit first two cells remain diagnostic, later cells asserted; physical Safari/core combinations remain open. 84 native lifecycle/pixel cases passed with explicit held native-frame vs Blob-fallback paths; 19 new Node cases fail 17 ways on prior checkpoint and all 52 current cases pass per candidate. Risk and task03 remain open. Native-only18-case Windows probe also misses the purple first frame in all6 WebKit26.6 cases (hidden/visible paused and immediate play-pause, original and no-B-frame H.264);12 Chromium/Firefox controls recover it. No ArtPlayer/plugin is imported, narrowing but not resolving the native surface boundary. Rate/offset/layout explorations failed and must not be reintroduced as assumed fixes."
"workspaceState": "The frames module now waits for native presentation and seek completion on capable browsers. Chromium/Firefox source/main/legacy assert all five cells including first purple frame, second red cell, legitimate black and presentation times. Callback-less Windows WebKit first two cells remain diagnostic, later cells asserted; physical Safari/core combinations remain open. 84 native lifecycle/pixel cases passed with explicit held native-frame vs Blob-fallback paths; 19 new Node cases fail 17 ways on prior checkpoint and all 52 current cases pass per candidate. Risk and task03 remain open. Native-only18-case Windows probe also misses the purple first frame in all6 WebKit26.6 cases (hidden/visible paused and immediate play-pause, original and no-B-frame H.264);12 Chromium/Firefox controls recover it. No ArtPlayer/plugin is imported, narrowing but not resolving the native surface boundary. Rate/offset/layout explorations failed and must not be reintroduced as assumed fixes. CI-01 实际安装候选三引擎生命周期/像素 27 项通过;Windows WebKit 两个像素用例仍明确仅验证后面三格,首两格为诊断。没有将此结果用于关闭原首帧风险或认定完整核心组合。"
},
{
"id": "VTT-THUMB-DIST-01",
+1 -1
View File
@@ -90,7 +90,7 @@ export function validateCIWorkflow(source) {
const vueIndex = browser.steps.findIndex(step => step.run === 'yarn test:vue-consumer 2>&1 | tee refactor/.cache/ci/vue-consumer.log')
assert(vueIndex > consumerIndex && !Object.hasOwn(browser.steps[vueIndex], 'if'), 'Run Vue installed consumers after restoring canonical Node')
assert(browser.steps.some(step => step.uses?.startsWith('actions/upload-artifact@') && step.if === 'always()' && step.with.path.split('\n').includes('refactor/.cache/vue-consumer-*/')), 'Retain Vue consumer failure evidence')
const extraIndex = browser.steps.findIndex(step => step.run?.startsWith('yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles '))
const extraIndex = browser.steps.findIndex(step => step.run?.startsWith('yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles,artplayer-plugin-hls-control,artplayer-plugin-dash-control,artplayer-plugin-auto-thumbnail '))
const sourceEngineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:source 2>&1 | tee refactor/.cache/ci/browser-source.log')
const engineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:installed 2>&1 | tee refactor/.cache/ci/browser-installed.log')
assert(extraIndex > Math.max(consumerIndex, reactIndex, vueIndex) && extraIndex < engineIndex, 'Prepare installed Ambilight/Canvas/Document PiP/Ads after consumer probes and before browser checks')
+3 -1
View File
@@ -766,7 +766,9 @@
"changes/2026-09-15-CI-01-ads-installed.md",
"baselines/ci-ads-installed-validation.json",
"changes/2026-09-15-CI-01-subtitles-installed.md",
"baselines/ci-subtitles-installed-validation.json"
"baselines/ci-subtitles-installed-validation.json",
"changes/2026-09-15-CI-01-adaptive-installed.md",
"baselines/ci-adaptive-installed-validation.json"
]
},
{