mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 19:06:15 -08:00
5.0 KiB
5.0 KiB
测试与验收
测试层次
| 层 | 内容 | 运行位置 |
|---|---|---|
| 单元 | Emitter、配置、转换、索引、排序、选择状态、消息解析、时钟算法 | 保留 node:test;新工具需单独决策 |
| 生命周期 | 初始化失败、重复销毁、切源并发、过期响应、资源清理和 Promise 结算 | 可控时钟/媒体 adapter;关键流程再到真实浏览器 |
| 浏览器集成 | 完整播放器、插件 DOM、真实媒体、seek、字幕、鼠标/键盘/触控 | Playwright Chromium/Firefox/WebKit |
| 产物 | 由正常脚本构建的 tarball,UMD/AMD/global/require/ESM/legacy/i18n | 隔离消费者项目,不能靠 workspace 源码链接通过 |
| 类型 | 正向样例、错误断言、类型推断、插件扩展、JS 用户、声明入口 | 明确版本的 tsc,bundler 和 Node 模块解析分别检查 |
| 设备/供应商 | Safari 真机、PiP、Chromecast、IMA、模型和实际 codec | 有能力的设备/外部环境,记录真实版本和限制 |
| 性能/资源 | 初始化、交互、帧调度、反复装卸、CPU/内存/事件资源 | 固定设备、媒体和测量流程,多次运行 |
基线与差分
- 基线产物来自 BASE-01 固定的发布版本,保存 tarball integrity、源码 SHA、工具版本和样本信息。
- 同一测试对旧产物和候选产物运行,比较公开结果、事件 trace、属性描述符和 DOM 状态。
- 不使用整个 minified bundle 的文本相等作为 API 兼容证据。
- 已确认缺陷使用单独用例记录“旧版本复现,候选修复”;差分例外必须有变更记录,不能一键更新全部快照掩盖回归。
- 接口、类型与行为三项分别验收。只有类型检查通过不能证明运行时正确。
核心测试清单
- 正常初始化、useSSR、配置错误、无容器、重复容器、初始化中途失败。
- play/pause/toggle、自动播放拒绝、内部播放触发不产生未处理拒绝。
- currentTime/seek、switchUrl/switchQuality、同 URL、连续切换、切换中销毁、错误重试。
- ready/restart/destroy 次数和状态,video 原生事件转发参数及顺序。
- 一个实例销毁两次、多个实例互斥、销毁监听器重入/抛异常、removeHtml=false。
- 控件/设置 add/update/remove、selector 高亮、重复名称、mounted/beforeUnmount。
- 字幕载入、失败、切换顺序、cue 数组、偏移、URL 回收。
- fullscreen/fullscreenWeb/PiP/mini 进入退出和异常,移动端方向、手势和安全区域。
- 热键、焦点、document 重绑、全局监听器及组件清理。
- i18n、图标、主题、样式注入及用户 CSS 覆盖。
- 每个内置插件:autoPlayback、autoOrientation、fastForward、lock、miniProgressBar。
此清单是验收目录;具体任务状态仍只记入 tasks.json。
媒体样本
优先复用仓库中许可明确的本地 MP4/WebM/VTT/SRT/ASS;补充短 HLS/DASH、音轨/清晰度变化、无音轨、空字幕、损坏内容、慢响应和中断样本。媒体服务支持 Range 与受控错误。不要让公共直播 URL 的可用性决定 PR 是否通过。
浏览器不能解码特定样本时,要区分浏览器/codec 能力和播放器回归。需要实际支持的路径不能静默 skip;可选能力的 skip 必须有原因,设备验收在发布清单中保持待完成。
CI 分层
| 触发 | 内容 |
|---|---|
| 每次 PR | 固定安装、只读 lint、类型、受影响单元/生命周期、核心浏览器 smoke、受影响发布包检查 |
| 核心或共享构建改变 | 全部 22 包构建/类型检查,旧插件对候选核心的回归,扩展浏览器矩阵 |
| 定期或候选发布 | 完整浏览器组合、压力/资源、性能、外部 SDK 与真机清单 |
| 发布前 | 干净环境完整 CI、tarball 消费、新旧组合、文档站、回退演练 |
快速检查必须存在依赖映射;无法确定受影响范围时运行完整核心及生态检查,不仅按文件名选择测试。
证据要求
每次记录命令、HEAD、运行时与浏览器版本、样本、通过/失败/跳过数、报告路径和限制。报告持久化到可追溯的 CI artifact 或仓库中适量文本摘要,不只给开发机器临时路径。不提交大型录像/媒体/trace 到源码仓库。
必要门槛:没有新增未解释的失败,没有已知合法旧调用失效,关键资源在销毁后停止增长,发布路径存在且可加载。覆盖率报告先建立真实基线,再在 ENG 阶段按模块制定分支覆盖门槛;禁止用无意义测试堆数字。
性能门槛在 BASE-06 固定设备和统计方式后登记。若候选包 gzip 大小增长超过基线 5%,或主要测量中位数退化超过 10%,作为初始审查阈值触发调查,不能以一次波动判定回归,也不能以无测量声称优化。
本计划不代表已有测试
以上新增命令、测试目录和矩阵都是待实现内容。现有测试事实及评估范围见 progress.md。