OpenClaw 测试
证明策略
-
PR CI = 默认的广泛证明。 变更构建 + 重点测试通过 → 开放就绪 PR。CI 运行广泛套件;切勿因预 PR 套件运行而延迟 PR。
-
在 PR 之前,进行窄范围证明: 使用
pnpm test <file> --maxWorkers=1测试受影响的文件,进行目标类型检查、lint、格式检查。当依赖关系和当前主机容量合格时,优先进行本地证明以处理可信的、有限的工作。本地执行是可选的:一个重点命令可能仍然加载一个庞大的编译器图或扩展到广泛通道。 -
有意选择远程证明。 使用 PR CI 进行广泛证明;Crabbox/Testbox 可能涵盖昂贵的检查、繁忙或不合格的主机、其他操作系统/设备、实时提供商/通道、长 E2E 或重型基准。仅在命令就绪且容量及时授予时获取。如果排队,仅停止任务拥有的分配;使用 PR CI 或安全的本地范围。保持未覆盖的平台特定证明待定。切勿将繁重工作强加到繁忙机器上或链式提供商。使用针对所选工作负载证明的最小配置文件。
-
切勿仅为绿色而重跑或重新推送。 修复真实失败;在归因红色之前读取可用的 CI 失败分类。
-
证明变更的契约,完成必需的门控,结束。仅对变更的输入、失败或已命名的未解决风险进行扩展/重复。
-
遵循范围的
AGENTS.md;编写/审查测试:使用 边界指南 和 test-audit。
选择证明
-
为受影响的契约选择证明;重用有效证明(为变更的输入或缺失的覆盖重跑);在用户/主机限制内完成工作流的必需门控;报告未运行的检查和差距。在可行时通过真实流程证明用户可见行为;外部 API 需要实时契约证明;隔离的 mock-Gateway 工具 = 有效的通道边界证明。仅文档:文档健全性检查和
git diff --check。 -
运行时缺陷:重现真实入口点;重跑它 + 相关同级。
-
可信来源:
pnpm changed:lanes --json,重点测试 + 目标类型检查/lint/格式;pnpm check:changed= 可选的智能本地检查。 -
公共 SDK/插件契约:代表性消费者,而非全插件扫描。
-
构建输出、延迟导入、包边界:包含
pnpm build。 -
工作流:
git diff --check+pnpm check:workflows。 -
仅文档:相关文档/链接/格式检查 +
git diff --check;无运行时测试。 -
按需阅读:本地命令、 Crabbox、OpenClaw 远程设置、 包/Docker 证明、 发布 CI、 插件发布矩阵、 Docker 编写、通道技能/ Control UI E2E。
-
隔离的 mock-Gateway 工具是有效的通道边界证明;说明实时差距。在可行时通过真实流程证明用户可见行为;外部 API 要求实时契约证明。阅读范围的通道/平台指南以进行实时通道或原生应用工作。Telegram 声明需要 Test Server userbot 证明及 Convex 租用的凭证。 平台声明需要真实设备证据;macOS 权限证明需要稳定的 签名应用。
-
发布证明:保留候选/工具 SHA;绝不授予发布权限。
来源和状态边界
- 切勿在本地执行不可信的贡献者/分支代码、包装器、配置。使用无秘密的分支 CI 或通过 Crabbox 进行消毒的直接 AWS;绝不使用凭证注入的 Testbox。凭证执行:需要维护者审核批准后;绝不注入不可信租用。
- 隔离状态 + 空闲端口。未经明确每任务批准,切勿重启、编辑或测试操作员 Gateway/真实数据。保留无关进程和共享依赖安装。
- 并发测试/检查命令:使用不同的
OPENCLA_VITEST_FS_MODULE_CACHE_PATH值或串行运行;检查也可以运行 Vitest。仅使用仓库包装器,绝不使用原始 Vitest。准备的链接工作树:node scripts/check-changed.mjs和node scripts/run-vitest.mjs <file> --maxWorkers=1避免 pnpm 协调。
CI 失败
- PR CI 失败 →
pnpm test:ci-failed <pr>;读取预存在/新/未知分类。 - 修复新的失败;调查未知 →
pnpm test:ci-failed <pr> --run直到所选测试在本地通过 → 推送一次。 --run启用OPENCLAW_NODE_TEST_PLAN_CONTINUE_ON_FAILURE=1:跨所选配置收集普通失败,同时基础设施失败仍然停止;对手动重点重试使用相同的选择加入。- 预存在的失败:failure-table landing rule。匹配的签名 ≠ 仅作业名称的属性。
- 切勿
gh run rerun以追寻绿色;切勿为 CI 修复运行本地完整套件。 - 将诊断绑定到确切的 SHA + 作业。仅获取一次失败的日志;优先使用确切的运行/作业状态而非过时的 PR 汇总。
- 区分产品、工具、基础设施、凭证、已取代运行取消。快照在 macOS 通过/在 CI 失败:在重新生成前重现 Linux/Node 字节。
基线和预期失败异常
窄范围基线、快照、忽略和预期失败异常仅当每个条目针对来源验证且 PR 记录其原因(例如,工具拥有的元数据在升级快照中,而用户数据保持精确)时,才由实施者决定。切勿掩盖真实回归或用户数据更改。未经验证的泛化异常需要批准。精确的仅收缩棘轮更新是维护。
测试失败策略
- 失败 = 缺陷。有界的重现尝试(首先相同分片顺序);识别所有者;修复产品、固定装置、共享状态、排序错误。
- 已证明的修复:添加回归测试;在适用时引用另一个所有者的修复。
- 无法建立/完成安全修复:在 PR 中记录原始失败、尝试、证据、不确定性;在正常 CI/审核门控下继续。
- 未解决的失败本身既不阻止着陆也不要求额外批准。通过的重放 ≠ 已证明的修复。
- 切勿使用重试、更长的超时、更弱的断言、更广泛的模拟、更改的基线来隐藏失败。