diff --git a/refactor/README.md b/refactor/README.md index e1be9f675..7a9beb9c0 100644 --- a/refactor/README.md +++ b/refactor/README.md @@ -23,6 +23,7 @@ | [核心设计](core-design.md) | 核心各模块的目标职责、迁移方式和生命周期设计 | | [包迁移规范](packages.md) | 全生态统一流程、组合矩阵及包特有风险 | | [测试与验收](testing.md) | 测试层次、浏览器/消费者矩阵、证据和回归门槛 | +| [已落实的测试可靠性规则](test-reliability.md) | 历史失败、候选回归、设备缺口、精确异常及等待/重试的执行规则 | | [docs 页面与编辑器测试](docs-browser-testing.md) | 复用已有 HTML、加载版本、隔离状态和补强文档 smoke | | [多轮复盘与 npm 准入](release-reviews.md) | Chrome 验证分工、三轮全局复盘、问题闭环和候选发布门槛 | | [工具链与发布](toolchain-release.md) | TypeScript、Bun、构建、版本管理和发布回退 | diff --git a/refactor/changes/2026-09-10-ENG-10-test-reliability.md b/refactor/changes/2026-09-10-ENG-10-test-reliability.md new file mode 100644 index 000000000..144c5682a --- /dev/null +++ b/refactor/changes/2026-09-10-ENG-10-test-reliability.md @@ -0,0 +1,12 @@ +# ENG-10:接续现有失败分类与测试规则 + +核对现有 risks.json、环境矩阵、typecheck/打包/发布基线消费器、Playwright 配置和浏览器实现, +形成 [执行规则](../test-reliability.md)。使用既有风险 ID/负责人/环境和精确历史结果,不再建重复台账。 + +明确已复现缺陷、声明事实、环境缺口、新回归和偶发失败的不同处理;候选零类型诊断、仓库外隔离、 +无默认重试、无跳过验收、受控等待、错误取消的精确范围、trace 和风险关闭证据均与当前实现对照。 +chapter 历史缺陷观察只约束发布版本,候选修复有独立测试。设备/远端缺口继续保留。 + +文档任务:通过计划、本地链接和风险校验,无新增依赖、源码或测试实现,没有重复宣称新一轮播放。 +最近完整验证由 PKG-CHAPTER-04 提供。下一项 PILOT-01 汇总现有证据并核对当前指纹,随后 CORE-01。 +本任务独立提交,无推送/发布;回退该提交即可。 diff --git a/refactor/plan.md b/refactor/plan.md index 5e3e88cd1..73fd8eb2d 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -4,7 +4,7 @@ 基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 214 项,范围 22 个包及工作区/示例。 -状态:todo 180 / doing 0 / blocked 0 / done 34 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 +状态:todo 179 / doing 0 / blocked 0 / done 35 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。 @@ -83,7 +83,7 @@ | ENG-07 | workspace
建立 tarball 消费与产物检查 | ENG-04, ENG-06 | 隔离 npm 消费 fixtures、API/声明/入口差分 | 不借 workspace 源码通过,能识别缺文件与默认导出变化 | H | done | | ENG-08 | workspace
增加覆盖率、资源与性能报告 | ENG-03, ENG-05, BASE-06 | 覆盖率基线、资源清理断言、性能报告与阈值 | 关键生命周期分支有门槛,报告不靠无意义断言堆数量;将 BASE-06 的同环境多组配对、计时/压缩审查阈值与资源异常分开接入候选,不把历史现象冻结成正常要求 | M | todo | | ENG-09 | workspace
建立全包依赖影响和文档检查 | ENG-07, DOC-04 | 共享核心/构建影响映射、文档及每任务完成提交的 Git 审计接入;契约-支持版本-测试 ID-命令-候选/报告-任务的覆盖索引 | 核心变化触发必需生态检查;原有 DOC-01 至 04 基线例外明确,后续 done 任务不能缺失独立 commit;计划/已执行/缺证据分开,识别缺少验证归属的公开契约 | M | todo | -| ENG-10 | workspace
建立历史失败分级和测试可靠性规则 | ENG-03, ENG-04, ENG-05, ENG-07, BASE-07 | 历史失败 ID/环境/旧版复现/负责修复任务、逐模块门槛、受控等待与 trace/retry 规则 | 不靠全局忽略或无理由 skip 隐藏问题,新增回归阻止交付,设备缺口和偶发失败单独可见;以 risks.json 为统一差异索引;关闭必须有 resolutionEvidence/rationale,已复现、源码事实、未验证分开,登记不等于豁免 | M | todo | +| ENG-10 | workspace
建立历史失败分级和测试可靠性规则 | ENG-03, ENG-04, ENG-05, ENG-07, BASE-07 | 历史失败 ID/环境/旧版复现/负责修复任务、逐模块门槛、受控等待与 trace/retry 规则 | 不靠全局忽略或无理由 skip 隐藏问题,新增回归阻止交付,设备缺口和偶发失败单独可见;以 risks.json 为统一差异索引;关闭必须有 resolutionEvidence/rationale,已复现、源码事实、未验证分开,登记不等于豁免 | M | done | ## 2.2 GitHub CI/CD @@ -433,6 +433,7 @@ - ENG-05: [记录](changes/2026-09-10-ENG-05-browser-tests.md) [记录](baselines/browser-validation.json) - ENG-06: [记录](changes/2026-09-10-ENG-06-build-development.md) [记录](build-development.md) [记录](baselines/build-validation.json) - ENG-07: [记录](changes/2026-09-10-ENG-07-package-consumers.md) [记录](baselines/package-validation.json) +- ENG-10: [记录](changes/2026-09-10-ENG-10-test-reliability.md) [记录](test-reliability.md) - PKG-CHAPTER-01: [记录](changes/2026-09-10-PKG-CHAPTER-01-contract.md) [记录](baselines/chapter-contract.md) - PKG-CHAPTER-02: [记录](changes/2026-09-10-PKG-CHAPTER-02-tests.md) [记录](baselines/chapter-validation.json) - PKG-CHAPTER-03: [记录](changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md) [记录](baselines/chapter-migration-validation.json) diff --git a/refactor/progress.md b/refactor/progress.md index b7b80a206..3c1628a7c 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,9 @@ # 进度与证据 +## 当前实施:ENG-10 测试可靠性规则完成 + +核对并整合现有风险分类、候选零诊断、旧发布隔离、精确媒体取消和无重试/跳过验收规则,见 [记录](changes/2026-09-10-ENG-10-test-reliability.md)。不新增测试框架或重复基线。当前 214 项,35 完成、179 待办;chapter TS 已完成,核心源码尚未开始。下一项 PILOT-01 核对现有产物/源码证据并汇总,再进入 CORE-01。 + ## 当前实施:PKG-CHAPTER-04 类型消费闭环完成 chapter 公开命名类型、核心/插件 CJS/ESM 桥接及旧 legacy/language 回退通过五组编译模式(31 场景),实际 tarball 严格发布检查诊断为零;62 项 Node/基线测试和 54 项安装产物三浏览器检查通过。关闭 BASE-TYPE-01/03,旧发布基线不改。见 [交付](changes/2026-09-10-PKG-CHAPTER-04-public-types.md)。当前 214 项,34 完成、180 待办。生产运行时:chapter 已 TS 化,核心仍未迁移;本任务核心只修正类型入口。03 提交 48660c4e;下一项 ENG-10 接续现有风险/可靠性规则,然后 PILOT-01 汇总现有试点证据,进入 CORE-01。 diff --git a/refactor/tasks.json b/refactor/tasks.json index 15b85832e..215868368 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -621,9 +621,12 @@ "scope": [ "workspace" ], - "status": "todo", + "status": "done", "risk": "M", - "evidence": [], + "evidence": [ + "changes/2026-09-10-ENG-10-test-reliability.md", + "test-reliability.md" + ], "id": "ENG-10", "phase": "2 工程保障", "title": "建立历史失败分级和测试可靠性规则", diff --git a/refactor/test-reliability.md b/refactor/test-reliability.md new file mode 100644 index 000000000..dd005a952 --- /dev/null +++ b/refactor/test-reliability.md @@ -0,0 +1,39 @@ +# 历史失败与测试可靠性 + +ENG-10 接续已有验证入口,不增加第二份风险清单。差异 ID、确认程度、责任任务和关闭证据以 +[risks.json](risks.json) 为准;支持环境和缺设备项以 [环境矩阵](environment-matrix.md) 为准。 + +| 类别 | 当前证据及入口 | 如何处理 | +| --- | --- | --- | +| 已发布版本的真实缺陷 | BASE-LIFE 系列及 BASE-PERF;baselines/lifecycle.json、performance.json 和对应脚本 | 保留旧版可重跑结果;候选需要修复用例与差异记录,不能只让新代码满足旧缺陷 | +| 已发布类型失败 | BASE-TYPE-01/02/03;baselines/consumers.json 的编译器、模式、fixture 和精确诊断 | 旧版仍按原诊断验证;候选 core/chapter 已修复,typecheck 和严格打包均要求零诊断 | +| 声明/源码不一致但未完成运行验证 | BASE-TYPE-04 等 source-observed 项 | 原任务继续核实;不能写成已复现或自动豁免 | +| chapter 已修缺陷 | chapter.spec.js 的 published-only 历史观察及 candidate 修复场景,chapter-migration-validation.json | 旧结果与修复回归分开;不把旧版本的 NaN、残留标题作为候选期望 | +| 浏览器允许的媒体取消 | playback.spec.js 中按引擎、错误码、media 类型、同源、当前 case 与两个 URL 限定 | 保留原始请求记录;其他错误仍失败,不全局忽略 net::ERR_ABORTED | +| SDK、codec、素材和设备缺口 | environment-matrix.md 与各包任务;确认程度 unverified | 保持缺证据状态,不计入通过;不能用 mock 代替目标设备支持 | +| 新候选回归或测试不稳定 | 本次运行的结果、版本、SHA、网络与 trace | 先作为失败处理,定位来源后修复;重试通过仍需保留首次失败及解释 | + +## 每次运行 + +- 使用固定 Node/Yarn/浏览器工具链;源码、发布包、安装候选各自标注来源。 +- `yarn ci:check` 负责严格类型、Node 行为、冻结基线、计划与风险校验。 +- `yarn test:package:release` 重建并在仓库外消费候选,不能从 workspace 补声明; + `refactor/scripts/consumers.mjs` 同样在仓库外重跑旧发布包。旧版数据文件保持不可覆盖。 +- 浏览器报告包含引擎版本、资源 SHA、事件、实际媒体状态、请求和错误;故障保留截图与 trace。 + `ARTPLAYER_BROWSER_ARTIFACTS` 明确指定安装候选,无源代码 fallback。 +- Playwright 当前 retries=0,CI forbidOnly=true;交付需 unexpected/skipped/flaky 均为 0。 + 若手工诊断时启用重试,只作为取证,不能替代默认配置的最终回归。不得用 skip/only 缩小交付范围。 +- 播放准备、seek、切源和异步状态用事件或条件等待,有明确超时。现有 pause 后 200ms 等待 + 专门测量媒体时钟是否保持停止,不用于猜测加载完成。新等待必须说明相同的可观察目的。 +- 控制时间/进度与 DOM 读数在同一次 evaluate 中完成,防止原生 timeupdate 插入造成误报。 + 对画面/布局容差说明实际像素和浏览器差异,不能用放宽容差掩盖功能变化。 + +## 模块交付与发布 + +迁移中的模块不能继承未解释的错误:对应合法旧调用、修复回归、严格源类型、真实环境和打包消费 +都必须完成。无关未迁移包可以继续保留有负责人、有来源的历史风险;这不允许它们通过发布准入。 +关闭风险必须更新 resolutionEvidence 和 resolutionRationale,运行风险校验;文件存在检查不是 +人工审查的替代品。设备缺口在对应包和发布批次保留,不降低全项目目标。 + +本次核对配置与测试实现,没有新增运行时改动或重复跑整套浏览器;引用的最新实际执行是 +[chapter 类型闭环](changes/2026-09-10-PKG-CHAPTER-04-public-types.md)。