mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 19:06:15 -08:00
109 lines
7.8 KiB
Markdown
109 lines
7.8 KiB
Markdown
# Ambilight 测试维护
|
||
|
||
## 已安装产物检查点
|
||
|
||
`yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas`
|
||
生成包含两包的实际隔离安装及 browser-artifacts.json。把该路径传给
|
||
ARTPLAYER_BROWSER_ARTIFACTS 后,Ambilight/Canvas helper 校验当前源码与构建快照
|
||
及安装文件摘要,不回退内存构建。原生生命周期/代理组合测试可直接复用;同目录
|
||
的 legacy map 必须指向 tarball 中已登记的 legacy 文件。
|
||
|
||
现代45项、增强组合销毁断言后的现代9项、legacy45项三引擎全部通过;49+57+10项
|
||
专项/工程检查通过。两个原生 RAF owner 的销毁后归零和 proxy 绘制停止都有断言。
|
||
见[安装证据](baselines/ambilight-installed-validation.json)与
|
||
[检查点记录](changes/2026-09-14-PKG-AMBILIGHT-05-installed-combination.md)。
|
||
05仍doing,物理移动设备与完整分发验收未完成;以下早期记录保留其当时范围。
|
||
|
||
先读 [发布契约](baselines/ambilight-contract.md)。ambilight-release.json冻结两个真实
|
||
发布及工作区Git来源,verifyAmbilightContract逐成员核对,不随候选更新历史哈希。
|
||
|
||
`node --test refactor/scripts/ambilight-contract.test.mjs`执行7组:归档、CJS/script/legacy、
|
||
原生ESM、声明形状及三实现的配置/样式/坐标/同步返回。test/helpers/ambilight.js提供
|
||
受控DOM/Canvas/RAF;模拟RGB只检查取样及写入顺序,不证明浏览器解码或跨域取色。
|
||
|
||
02复现频率/暂停/零尺寸/重复start-stop/销毁/异常;03拆分视图、取色和调度,修复已
|
||
复现问题;04兼容类型及旧CJS.default;05/06做真实媒体、代理、浏览器和安装包验证。
|
||
stop保留最后画面,核心destroy终止资源。zIndex仍忽略,参数省略及两版声明差异分别
|
||
处理;Git关联不构成连续核心支持范围。
|
||
|
||
## 02历史回归
|
||
|
||
`node --test test/ambilight.test.js`运行30项Node回归并接入test:unit;正常参数/频率/暂停与已确认的
|
||
历史问题分别断言。`yarn test:browser test/browser/ambilight.spec.js`运行三实现/三核心/
|
||
三引擎真实媒体;核心标签published是实际npm5.4.0,published-5.1.7是实际npm5.1.7,
|
||
candidate是当前源码;以browser-evidence的manifest和实际version为准。
|
||
跨origin使用同一服务的localhost与127.0.0.1,读像素抛原生SecurityError;换回同源
|
||
后持续错误是待03修复的历史污染。Node零尺寸记录只证明未保护,未模拟为浏览器结论。
|
||
|
||
02最终30项Node、54项三引擎/三核心浏览器通过,未skip;新建Canvas能读取已恢复的
|
||
同源视频,而旧插件Canvas仍抛SecurityError。主CI955项通过(另44项重复观察)。
|
||
完整报告与输入来源见baselines/ambilight-behavior-validation.json。03开始修复这些问题。
|
||
|
||
## 03候选生命周期
|
||
|
||
`yarn test:ambilight`现在执行30项历史及16项候选测试。候选直接构建当前src入口,
|
||
不读取旧dist作回退。设置ARTPLAYER_AMBILIGHT_BASELINE=1可把同一16项要求交给冻结
|
||
工作区:14项失败、2项正常语义对照通过;候选16项通过。环境变量只应用于独立负向
|
||
命令,正常CI不得设置。另7项发布契约继续通过,专项共53项。
|
||
|
||
`yarn test:browser test/browser/ambilight-lifecycle.spec.js`在实际npm核心5.1.7/5.4.0和
|
||
候选核心、Chromium/Firefox/WebKit中执行18项,无skip。原生视频/Canvas不模拟;
|
||
词法RAF观察器只跟踪插件自己的帧,调用仍交给原生RAF,核心和测试等待帧不计入。
|
||
验证ready自动取色、stop保色、destroy(false)移除DOM/清空帧、逃逸方法不复活,及真实
|
||
跨origin失败后切回同源在同一插件/视图内恢复,不调用stop/start来协助恢复。
|
||
|
||
首次宽度重置方案15/18通过,Firefox全部3项恢复失败。独立诊断证明新Canvas能读取
|
||
已恢复视频,原Canvas重设宽度仍抛SecurityError,随后改为下次有效取色创建新Canvas。
|
||
保留失败与通过报告;最终18/18通过。持续跨域素材仍不可取色,失败期间的分配成本
|
||
需在性能复盘评估。正式构建更新三种分发及docs/compiled,未手改生成内容。
|
||
|
||
03证据见 [生命周期验证](baselines/ambilight-lifecycle-validation.json) 和
|
||
[实施记录](changes/2026-09-12-PKG-AMBILIGHT-03-lifecycle.md)。04公开声明及CJS.default、
|
||
05代理/实际设备、06安装包和8082 demo仍未完成;三浏览器通过不能代替这些验收。
|
||
|
||
## 04公开类型与安装消费者
|
||
|
||
`node --test refactor/scripts/ambilight-types.test.mjs`覆盖五种TS模式、10项非法用法、
|
||
实际1.0.0/1.1.0声明对照、编辑器语义生成及正式main/legacy/global/ESM导出。已接入
|
||
test:baseline和根typecheck。CommonJS自default别名兼容两代调用;可选参数重载放在前,
|
||
必填Option签名必须放最后以保护Parameters提取。新的d.mts/d.cts为相同公共声明提供
|
||
正确模块身份,typesVersions补齐旧解析器的legacy子路径。
|
||
|
||
`yarn test:ambilight-types-package`打包当前核心和插件,在仓库外分别安装两个真实
|
||
发布插件和候选,离线/frozen安装及逐文件哈希检查防止误用workspace链接。共17个
|
||
编译场景:候选7个(含TS5.9.3/4.3.5关闭interop)全部零诊断且各拒绝10项非法用法;
|
||
旧包10个场景中1.1.0 NodeNext ESM精确保留4个既有错误,其余零诊断。已发表的类型
|
||
不一致与候选失败严格分开,不把旧错误写成候选白名单。
|
||
|
||
1.0.0字段必填变为1.1.0可选是历史差异,本候选没有继续扩大推导。新测试在03提交上
|
||
3失败/1通过,实装额外复现旧TS legacy缺映射、tsconfig打包泄漏和旧NodeNext问题。
|
||
05代理/设备、06完整分发和8082 demo继续;当前统一test:package默认scope仍仅core/
|
||
chapter,专项安装命令的存在不代表全部包已加入该门槛。
|
||
|
||
04最终四组专项、975项完整CI及18项三引擎媒体回归通过;安装消费者证据、包哈希、
|
||
初始失败及明确限制见 [类型验证证据](baselines/ambilight-types-validation.json) 和
|
||
[实施记录](changes/2026-09-12-PKG-AMBILIGHT-04-types.md)。类型与两代导出具体风险已
|
||
关闭;当前待做范围为05/06,旧阶段记录保留其当时状态。
|
||
|
||
## 05拆出:Canvas输出尺寸
|
||
|
||
PKG-AMBILIGHT-PROXY-01从组合检查中独立修复采样边界:Canvas用实际width/height,
|
||
原生video保留videoWidth/videoHeight。`yarn test:ambilight`加入3项输出resize/零尺寸
|
||
与正常视频测试;修改前2失败/1通过,候选加历史/契约专项56项通过。
|
||
|
||
`yarn test:browser test/browser/ambilight-proxy.spec.js test/browser/ambilight-lifecycle.spec.js`
|
||
合计27项:6项真正Canvas组合(实际npm5.4.0/候选×三引擎)、3项实际npm5.1.7不支持
|
||
proxy配置的原生播放能力对照、18项原生生命周期和跨域恢复。Canvas组合使用实际工作区
|
||
代理源码和真实视频解码,通过公开callback绘制九色均匀区域,用原生getImageData
|
||
检查九格颜色。不是下载媒体或模拟canvas返回值;这不是实际npm代理归档兼容证明。
|
||
|
||
首次把5.1.7也当作代理是错误假设,诊断显示VIDEO节点、代理drawCount=0;旧option
|
||
声明和真实Artplayer.option都不存在proxy,最终断言明确此能力边界。初始失败及中间
|
||
诊断保留。本子项不关闭05最终设备/代理生命周期要求;代理自身仍需PKG-CANVAS系列
|
||
完成后回归,不能从Ambilight视图清理推导代理已无残余绘帧。见
|
||
[实施记录](changes/2026-09-12-PKG-AMBILIGHT-PROXY-01-sampling.md)。
|
||
|
||
子项最终56项Node专项、27项浏览器及978项CI通过,无skip;证据见
|
||
[代理采样验证](baselines/ambilight-proxy-validation.json)。05新增PKG-CANVAS-04依赖,
|
||
等待最终代理实现后再执行整体组合验收,当前保留todo;下一步先核对代理发布契约。
|