test(danmuku): [PKG-DANMUKU-07] verify native load and shared layer stability

This commit is contained in:
Harvey Zhao committed 2026-09-13 23:16:04 +08:00
1 parent 4f559cb31d
commit 00e81309ca
14 files changed
+6724 -11

No files matched your search

@@ -0,0 +1,66 @@
# PKG-DANMUKU-07 弹幕稳定性与共享层边界
已完成本任务限定的验收,任务及提交状态以tasks.json和Git为准。此项对12后的生产
实现增加原生负载和资源验收,没有改变运行时、声明、依赖、版本或构建内容。
## 验收范围
- 候选核心中比较固定npm5.3.0插件与候选源码,三引擎,每秒2和20条,各三轮
14秒真实媒体播放。每轮追加12秒的时间戳序列,三轮总计72/720条;其余时间
让弹幕自然显示和到期。保留真实RAF、视频时钟、Worker与原始readys getter。
- 候选逐项检查采样/显示无丢失,三轮总显示和回收均恰好一次;队列追加语义、
每条对象只属于一个对应状态池、空闲池唯一性、根层节点和空闲池一致均受断言保护。
包装原始节点getter只记录身份,确认实际重复使用旧节点,并且有空闲节点时
不绕过池分配新节点;Worker必须存在且唯一,正常请求全部回复,销毁恰好一次。
- 旧插件结果保留为对照观察,没有把其可能的历史缺陷豁免用于候选断言。
每轮帧间隔单独统计;包含暂停/加载转换的总采样间隔另列,不能当纯播放卡顿。
可选performance.memory是未强制GC的读数,不能证明泄漏或作跨引擎内存排名。
- 两核心、三引擎运行已有资源用例:共享挂载、初始化回滚、发送取消/锁、原始
错误、destroy(false)、替换加载移除被移动的节点、热图实例隔离。
- 新增两核心的CSS mask边界用例:注册前就取得核心根层,以固定内联SVG mask
验证emit/reset/无参替换load/hide/show/destroy(false)中的层引用和样式保持,
销毁后两帧没有晚请求和新子节点。此用例设置资源测试的ready前置状态、采用
原生0.25播放速率,不能当时间戳负载证据;负载用例没有这些设置。
## 问题处置与兼容性
早期原生时间窗口诊断区分了两个来源:800ms主线程完全阻塞,及600ms用户异步
回调使旧调度停止采样。11独立修复隐藏Worker等待吞掉显示寿命;12独立修复异步
放置期间的采样和到期维护。07继续检查这些修复后的实际负载及资源状态。
没有把公开±0.1秒窗口改成无限追赶,因此完全阻塞时未被采样的时间点仍可错过。
本轮首个测试版本错误地把`load(rows)`当作替换,第二轮队列断言收到48/480而
错误预期24/240。核实原实现后修正累计队列预期,当轮显示数仍精确24/240;没有
修改生产语义。初步12项通过后,经独立审查补足Worker非空、节点身份复用、
逐条状态归属和跨轮恰好一次的断言,最终需按补强后的文件重新验证。
Mask仅依赖核心提供的video/弹幕根层及ready/destroy,不读取弹幕队列、Owner
或插件事件。旧契约文档误称根层由Danmuku建立,已依据核心模板纠正并注明日期。
固定发布归档和生产Mask源码未改。Mask自身晚推理复活RAF、模型dispose、并发
start、模型和完整组合问题仍由Mask迁移任务处理,不能从本CSS测试判定通过。
## 维护与重跑
```sh
yarn test:browser test/browser/danmuku-stability.spec.js test/browser/danmuku-mask-boundary.spec.js test/browser/danmuku-resources.spec.js --workers=2
```
负载测试的90秒单例deadline来自三轮42秒媒体预算及设置/销毁开销;没有扩大
已有短用例超时。每次运行必须等待进程终态,归档report/results,再运行另一格式。
正常来源是当前源码UMD;两个新用例均支持ARTPLAYER_DANMUKU_ARTIFACT。
包内ARCHITECTURE.md与refactor/danmuku-stability.md记录根层归属、诊断及限制。
07未修改生产,因此复用12已记录的264项源码/136项产物单测、严格类型/构建,及
其异步/几何/生命周期验证;不声称这些由本次持续负载套件重新完成。
08完整组合、09最终分发、真实Mask模型/设备以及全项目发布复盘继续保留。
回退本任务只撤销测试和文档,不应回退11/12已交付修复。
## 最终结果
补强后的66项浏览器检查全部通过(12项负载、6项CSS边界、48项资源),0重试、
0跳过。每个负载用例完成三轮42秒原生媒体推进,候选两档各72/720条均完整且
只显示/回收一次。精确节点复用、堆读数和帧间隔见
[机器证据](../baselines/danmuku-stability-validation.json)。
新测试lint通过;影响分析检查通过,保留Danmuku/Mask组合验证边,仅纠正其
“Danmuku创建根层”的错误原因,不降低CI范围。测试由现有Playwright目录自动发现。
未运行远端CI、未推送或发布。