关于 openclaw-testing
openclaw-testing 是为 OpenClaw 更改制定基于证据的测试与验证流程的 skill,帮助贡献者选择本地检查、远程验证或 CI,并兼顾来源可信度、覆盖率和未解决的问题。
主要功能
- 01按更改选择验证方式
- 02运行针对性测试与静态检查
- 03分类诊断 CI 失败
- 04可信来源与状态保护
- 05报告覆盖率和验证缺口
适用场景
- 01在提交 PR 前验证代码更改
- 02诊断 PR CI 失败
- 03为平台特性或实时行为选择验证方式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openclaw/ openclaw --skill openclaw-testing安装后在 Claude Code 中输入/openclaw-testing确认已加载。
附带文件references/package-and-docker.mdagents/openai.yaml
详细介绍
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 相关声明必须通过 使用 Convex 租赁凭据的 Test Server userbot 证明。 平台相关声明必须提供真实设备证据;macOS 权限证明必须使用稳定的签名应用。
-
发布证明:保留候选版本/Tooling 的 SHA;绝不授予发布权限。
源码与状态边界
- 切勿在本地执行不受信任的贡献者/分支代码、包装器或配置。 使用无密钥的分支 CI,或通过 Crabbox 直接访问经过清理的 AWS;切勿使用注入凭据的 Testbox。执行需要凭据的操作:必须经审查并获得维护者批准;切勿向不受信任的租约注入凭据。
- 使用隔离状态和空闲端口。未经针对具体任务的明确批准,切勿重启、编辑或测试运维人员的 Gateway/真实数据。保留无关进程和共享依赖安装。
- 并发运行测试/检查命令时:使用不同的
OPENCLAW_VITEST_FS_MODULE_CACHE_PATH值,或串行运行;检查命令也可能运行 Vitest。只能使用仓库包装器,切勿直接运行原始 Vitest。准备好的链接工作树:node scripts/run-vitest.mjs <file> --maxWorkers=1可避免 pnpm 协调;PR CI 会运行范围更广的检查。
CI 失败
- PR CI 失败 →
pnpm test:ci-failed <pr>;查看分类结果:既有/新增/未知。 - 修复新增失败;调查未知失败 → 运行
pnpm test:ci-failed <pr> --run,直到所选测试在本地通过 → 推送一次。 --run会启用OPENCLAW_NODE_TEST_PLAN_CONTINUE_ON_FAILURE=1:在所选配置中收集普通失败,但基础设施失败仍会中止;手动重新运行聚焦测试时,也使用相同的启用选项。- 既有失败:参见失败表格落地规则。匹配签名 ≠ 仅凭作业名称归因。
- 切勿通过
gh run rerun追求全绿;修复 CI 时切勿在本地运行完整测试套件。 - 将诊断与确切的 SHA 和作业绑定。只获取一次失败日志;优先依据确切的运行/作业状态,而非过时的 PR 汇总信息。
- 区分产品、测试框架、基础设施、凭据以及被后续运行取代而取消的情况。快照在 macOS 上通过、在 CI 中失败:先复现 Linux/Node 字节差异,再重新生成。
基线和预期失败例外
仅当每项狭义基线、快照、忽略和预期失败例外都已根据源码核实,且 PR 记录了原因时(例如,升级快照中由工具维护的元数据,而用户数据保持不变),实施者才能自行决定是否采用这些例外。切勿掩盖真实回归或用户数据变更。宽泛或未经核实的例外需要批准。仅精确缩减的阈值更新属于维护工作。
测试失败政策
- 失败即缺陷。进行有限的复现尝试(首先保持相同的分片顺序);确定负责人;修复产品、测试夹具、共享状态或顺序方面的缺陷。
- 已证实修复有效:添加回归测试;适用时注明其他负责人的修复。
- 无法确定/完成安全修复:在 PR 中记录原始失败、尝试、证据和不确定性;按正常 CI/审查门槛继续。
- 单独存在的未解决失败既不阻止合并,也不要求额外批准。重放通过 ≠ 已证实修复。
- 切勿通过重试、延长超时、削弱断言、扩大模拟范围或更改基线来掩盖失败。