mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 10:56:15 -08:00
2.9 KiB
2.9 KiB
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/编辑器。 执行结果见 验证记录。本任务独立本地提交; 回退只移除这批故障测试、命令和记录,不改变播放器运行逻辑。没有推送或发布。