7.8 KiB
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 绘制停止都有断言。 见安装证据与 检查点记录。 05仍doing,物理移动设备与完整分发验收未完成;以下早期记录保留其当时范围。
先读 发布契约。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证据见 生命周期验证 和 实施记录。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项三引擎媒体回归通过;安装消费者证据、包哈希、 初始失败及明确限制见 类型验证证据 和 实施记录。类型与两代导出具体风险已 关闭;当前待做范围为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视图清理推导代理已无残余绘帧。见 实施记录。
子项最终56项Node专项、27项浏览器及978项CI通过,无skip;证据见 代理采样验证。05新增PKG-CANVAS-04依赖, 等待最终代理实现后再执行整体组合验收,当前保留todo;下一步先核对代理发布契约。