Files
ArtPlayer/refactor/changes/2026-09-14-SITE-SMOKE-01-documentation-smoke.md
T

64 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SITE-SMOKE-01 文档示例生成与就绪检查
起点 `d74ecc43ccee99dcd2e3090356a6fb761825e6af`。从 SITE-02 拆出示例生成和运行器,
保留原父任务负责编辑器声明生成。保留 `yarn build:test`、脚本路径、测试页面及
`docs/test/test.js` URL;没有修改生产包 API、公开声明、播放器 DOM、事件或入口。
## 实现与缺陷
- `scripts/docs-smoke/parser.ts` 用现有 MarkdownIt tokens 替换共享正则游标。
原生成器在异常围栏中反复 continue 且不推进,测试对固定旧提交使用 VM 超时
复现;新解析有限结束,并在语法检查阶段带文件/行号失败。未闭合、空示例和
marker 后不是 JavaScript 围栏也明确报错。只支持现有 Run Code 标记约定。
- `generator.ts` 负责确定性枚举、语法编译、页面脚本依赖和 esbuild 打包;生成前
验证全部输入。保留 11 个中文文件的 233 段旧代码(仅统一 CRLF 为 LF),新增
examples.json 清单。重复生成一致,无时间戳;`--check` 只读拒绝漂移。
- `runtime.ts` 管理每例独立 iframe、顺序依赖、返回 Promise、当前实例 ready、
error/unhandledrejection 和清理。移除固定 100ms 无条件成功;4500ms 是失败
deadline,ready 后仅多一个事件循环任务用于接收未处理拒绝。销毁失败仍移除
frame、恢复 storage,并将原错误和清理错误一起报告。拒绝并发案例。
- 原 JS CLI 是兼容入口,由严格 checkJs 覆盖;自有实现拆成 TS。维护地图和边界见
`scripts/docs-smoke/README.md`,文档站、测试与 CI 说明同次更新。
## 工具链与 CI
根开发依赖新增精确 `@types/node` 24.10.0、`@types/markdown-it` 14.1.2,分别为
Node 工具和已有 MarkdownIt 14.1.0 提供严格类型;没有播放器运行依赖变化。只维护
根 yarn.lock,Node 24.21.0 原生类型擦除执行工具,Yarn Classic 1.22.22 frozen
安装成功。新增 typecheck:docs-tools/check:docs-smoke 加入 ci:check,build:test
加入 ci:build;没有把本地配置视为远端 CI 通过。
安装后发现共享 tsc bin 指向 `typescript-runtime-compat` 5.1.6,而主编译器是
5.9.3。旧别名检查 Node 24 类型因 esnext.disposable/Symbol.dispose 等退出 2;
新工具与根 React 检查改用显式 `node node_modules/typescript/bin/tsc`,保留旧
编译器用于历史消费测试。严格检查不使用 skipLibCheck 掩盖错误。工具配置的
ES2021 lib 用于 Node parser 的 replaceAll;浏览器产物 target 仍为 ES2020。
## 验证与限制
- 5 项生成器回归通过:固定旧代码比较、旧卡死复现、围栏反例、确定性与真实
Mocha 注册、CLI 只读/失败不覆盖既有结果。完整 baseline 522 通过、0 跳过。
- 三浏览器各 11 项,共 33 通过、0 跳过/重试通过:真实核心/受控媒体就绪、
超过旧 100ms 后仍等待、连续挂载清理、三段未改原示例、并发拒绝、同步/返回/
未处理/ready 回调/销毁错误、脚本失败、永不 ready、跨案例定时器与全局隔离。
- 初次扩展测试有 31 通过/2 失败,均为 Windows WebKit 报告 640x360 而非媒体
320x180。原报告保留。按既有 DPIP-MEDIA-01 记录精确两组尺寸,其他浏览器只
接受 320x180;不扩大超时、不重试取绿,也未关闭原生尺寸问题或真实 Safari 门槛。
- 主编译器的工具/React 检查、CI 50 项测试、根 lint(0 error/1 既有生成声明
warning)、严格工具链(22 workspace/38 固定工具/1470 依赖选择器)通过。
完整生产与消费者类型检查结果及输入/输出/日志指纹见验证 JSON。
iframe 是同源归属隔离,不是安全沙箱。需独占测试 origin;storage 恢复会覆盖
其他同源并发写入,不为跨 tab 合并机制。案例交给其它窗口的资源不由本运行器
接管。就绪不等于播放/seek/点击/延迟回调功能验收;完整 233 例、外部 SDK、
所有语言/插件文档与真实设备仍由 EX-03、SITE-04 和包验收覆盖。本次没有手动
连接 Chrome/iab、远端 CI、推送或发布。没有声称全部示例已通过浏览器执行。
## 状态与回退
SITE-SMOKE-01 单独完成提交;SITE-02 的声明生成器尚未完成。生成器生成资产,
不得手改 test.js;解析/语法失败保证写入前退出,磁盘多文件写入不承诺事务性。
回退本任务提交并执行 frozen 安装可恢复旧生成器和依赖;旧无限循环与 100ms
假通过会随之恢复,因此优先修复具体回归。后续改动运行 README 对应命令并
更新当前 site-inventory,历史验证 JSON 保持原证据。