Files
ArtPlayer/refactor/changes/2026-09-13-PKG-VTT-THUMB-02-failures.md
T

36 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PKG-VTT-THUMB-02 异常与生命周期复现
新增 test/vtt-thumbnail.test.js,108 项历史测试全部通过。这里的通过表示
**成功复现历史结果**,不表示候选已经修复。十二个固定夹具复用 01 的归档/源码校验;
1.0.0 仅有效随包源码,1.0.1–1.0.3 编译产物显式使用其可接受的 compact 时间戳。
## 证据与处置
| 场景 | 真实旧代码在可控 host 中的结果 | 03 的处置方向 |
| --- | --- | --- |
| fetch 尚未完成即 destroy | 没有请求选项或取消信号,返回后仍添加控件并响应 hover | 注册前建立生命周期,阻止迟到安装并处理取消 |
| 移动拖动后 destroy | 500ms 计时器和 setBar 仍保留;迟到回调继续改样式 | 所有权覆盖监听器、计时器和控件,阻断销毁后写入 |
| fetch 或 response.text 拒绝 | 原始异常通过注册 Promise 拒绝,无控件/计时器 | 保持原始拒绝,并释放新增生命周期资源 |
| HTTP 404 但 body 为有效 VTT | 未检查 ok,仍显示图片 | 后续显式拒绝 HTTP 失败,作为缺陷修复记录 |
| 空文本或仅 WEBVTT | 添加空控件,hover 隐藏 | 保留有效空结果,避免误判为请求异常 |
| 错误时间、无 payload、无 hash、cue ID、NOTE | TypeError,安装之前拒绝 | 分开有效标准扩展与格式损坏,给出可定位错误,不静默写入坏 CSS |
| 重排 yxhw、坏坐标、缺坐标 | 字符串按键映射;坏值直接形成 CSS | 正常几何保持,异常输入补明确检查,不能把重排键当成不存在 |
| restart 后修改 option.vtt | 不重新请求,继续使用注册时的 cue 列表 | 不能未经公开行为评估新增自动重新下载 |
| cue 间隙、NaN 进度 | 隐藏预览,不选择另一个 cue | 保持边界行为 |
另用真实 docs/assets/sample/bbb-thumbnails.vtt 的 **120 个 cue**逐个触发命中,
核对图片路径、x/y 背景位置、宽高。该文件 SHA 与运行结果在验证记录中;
这仍是受控样式记录,不等于浏览器 CSS 接受了这些值或真实图片已加载。
复现不修改候选生产源码、声明或 dist,也不增加依赖。新增 `yarn test:vtt-thumbnail`
用于运行本包历史契约和故障测试;故障测试同时纳入 `test:unit`,CI 会持续执行。
VTT-THUMB-LIFE-01 从 source-observed 提升为 reproduced,所有风险继续 open。
## 后续任务与回退
03 拆分纯解析/查找、请求、视图和注册资源,添加面向修复结果的候选测试,先在旧版上
观察失败再验证候选;当前历史断言永久保留为对照,不能直接改成新行为消除差异。
04 严格 TS 和声明消费者;05 真实核心/浏览器,06 构建安装包与 demo/编辑器。
执行结果见 [验证记录](../baselines/vtt-thumbnail-failures.json)。本任务独立本地提交;
回退只移除这批故障测试、命令和记录,不改变播放器运行逻辑。没有推送或发布。