脚本入口与测试范围
scripts/ 同时包含回归测试、构建/发布工具和 REA 恢复工具;文件数量不等于测试覆盖数量。不要遍历目录逐个执行脚本。 某些工具会连接窗口、调用模型、下载包或发布产物,必须先阅读其用途、参数和隔离要求。
默认离线基线
npm test
# 等同于 npm run test:core
包含类型检查、聊天状态/消息顺序、会话存储、持久化和会话渲染回归。使用模拟宿主或临时目录,不启动真实模型或桌面应用。这个入口是跨模块基础检查,不是全产品、SDK 或 UI 验收,也不替代构建。
按改动选择专项
| 改动范围 | 应选入口 | 重要边界 |
|---|---|---|
| 对话/模型/权限/折叠 | test:alignment、test:conversation;交互变更加 test:alignment:dom |
普通 alignment 无 DOM 依赖时明确 SKIP;严格 DOM 入口缺依赖会失败。授权回归含 mock,非真实 SDK 证明 |
| 推荐技能/安装状态 | test:recommended-skills、test:recommended-skills:dom |
前者受控安装归档;真实发布包为单列可选检查,不能把 SKIP 算通过 |
| 能力选择/使用草稿 | test:composer-capabilities |
不启动真实模型;完整应用事件链另验 |
| 正文/代码/数学/媒体 | test:markdown、test:recovered、test:media;图片异步/折叠变更加 test:image-lifecycle |
后者需 YCODE_TEST_DOM_MODULE;根据实际变更选取,不代表像素一致 |
| 文件/会话持久化 | test:resources、test:persistence、test:sessions |
先核对脚本临时目录与宿主隔离 |
| 升级/发布 | test:updates、test:release |
不等于执行 release 或 updates:deploy;发布命令单独授权 |
| 设计 token/恢复闭包 | check:tokens、test:fold-summary 等 |
非零退出必须保留;已有失败不能刷新 baseline 掩盖 |
需要 jsdom 的测试使用已安装模块,不自动下载依赖:
# Unix 示例;替换为实际已安装 jsdom 路径
YCODE_TEST_DOM_MODULE=/absolute/path/to/node_modules/jsdom npm run test:alignment:dom
YCODE_TEST_DOM_MODULE=/absolute/path/to/node_modules/jsdom npm run test:recommended-skills:dom
PowerShell 使用 $env:YCODE_TEST_DOM_MODULE = <绝对路径>,再运行相同 npm 命令。依赖安装与锁文件变更按项目约定单独处理。
Windows / 真实窗口验证
npm run test:permissions:loopback 是独立的 Linux 本地权限集成验证:实际 ClaudeKernel/SDK/CLI、仅回环假模型、一次性 HOME/userData/workspace。会执行固定测试目录中的读写和 Bash 命令,不使用用户供应商或实际数据,不属于默认离线基线。其他平台明确阻塞;Windows/PowerShell 和真实窗口需另验。建议外层使用 timeout --signal=TERM --kill-after=5s 120s npm run test:permissions:loopback,脚本内部另有请求和时间上限。
例如 test:recommended-skills:ui、node scripts/verify-task-menu.cjs、node scripts/test-mode-chip-native.mjs。这些是特定场景,不是统一全量 UI 集。先读脚本并确认临时 userData/工作目录、受控宿主、是否访问模型/网络;不得连接生产数据或原版 WorkBuddy 进行未经允许的操作。
T01–T03 正式入口约定:模式标签通过 Node 构建夹具,再启动 CJS Electron 子入口(不要直接用 Electron 执行 .mjs 构建器);推荐技能 hover 必须取得真实可信鼠标事件、命中与计算样式变化,:hover 选择器仅作诊断;图片连续帧 QA 窗口关闭后台节流,但保留真实 rAF、布局断言和 20 秒截止。只改测试窗口,不更改产品窗口策略。--build-only、离线契约测试和 jsdom 通过均不等于 Windows 原生命令通过。
test:recommended-skills:app、SDK smoke、网络包验证等可能需要额外资源或有外部行为,不纳入默认离线入口。无 DISPLAY、native 模块或权限导致启动失败,应标为环境阻塞,不是通过。--build-only、SSR、jsdom、静态 CSS 断言都不等于真实布局或像素验收。
真实 dev 启动遵循 Dev 启动 SOP,测试应用另用隔离数据,不能以启动测试窗口代替用户要求的 dev。
维护工具,不是产品测试
scripts/rea/:REA 证据解析、源码/样式恢复、可复用采集配置及相应工具自测。必须保留生成物来源与重建依赖;只通过 REA 查看原版。scripts/updates/:发布、签名和更新维护。自测与实际发布命令分开。shot及保留的现场探针:人工诊断工具,不在默认测试中运行;先确认目标应用/端口/数据。scripts/fixtures/:受测试引用的夹具,不因没有 npm 入口而删除。
历史一次性探针和停用的直接 WorkBuddy CDP 工具已按本次清理清单删除,不复制到另一目录制造第二份。旧文档中的路径可能属于历史提交,请按清单的基线 SHA 从 Git 恢复或查看;不能据此复活已禁用的采集通道。
新增与删除规则
- 优先扩展同模块测试,不为每个 UI 小修复制完整 Electron 启动器。
- 新脚本注明需求/模块、运行环境、是否联网/模型/真实数据,以及明确的 PASS/FAIL/SKIP;跳过不能冒充通过。
- 必要断言不能为变绿删除;失败区分产品缺陷与环境缺失。
- 删除前检查 npm 入口、import/require、runner 动态文件列表、夹具、恢复链及当前文档;仅历史记录引用不等于运行依赖,但须给恢复路径。
- 提交测试证据时写明受测代码 SHA、实际命令和未验证范围。默认基线通过不自动关闭需求验收。
Windows 私有运行时
相关变更使用 node scripts/private-runtimes-regression.cjs、node --test scripts/runtime-bundle.test.mjs 和配置 YCODE_TEST_DOM_MODULE 后的 node scripts/test-private-runtimes-dom.mjs。runtimes:prepare/verify 校验实际包;runtimes:smoke 仅在 Windows x64 执行真实工具,在其他平台明确 SKIP。见 Windows 内置工具链,不计入默认离线核心测试的 Windows 覆盖。