OpenClaw 測試
證明政策
-
PR CI = 預設廣泛證明。 變更建置 + 重點測試通過 → 開啟 準備好的 PR。CI 執行廣泛套件;絕不為了預先執行 PR 套件而延遲 PR。
-
在 PR 之前,進行狹窄證明: 被觸及的測試使用
pnpm test <file> --maxWorkers=1,有目標的型別檢查、lint、格式化。 當依賴項與目前主機容量合格時,優先對可信任、有界限的工作使用本地證明。 本地執行是可選的:一個有焦點的命令仍可能載入大型編譯器圖形或擴展到廣泛的通道。 -
審慎選擇遠端證明。 使用 PR CI 進行廣泛證明;Crabbox/Testbox 可用於涵蓋昂貴的檢查、忙碌或不合格的本地主機、另一個作業系統/裝置、 即時提供者/頻道、長時間的 E2E 或繁重的基準測試。僅在命令準備就緒且 容量被及時授予時才獲取。如果處於佇列中,僅停止任務擁有的分配;使用 PR CI 或安全的本地範圍。保持未涵蓋的平台特定證明待處理。絕不將繁重工作 強加到忙碌的機器上或鏈接提供者。使用為所選工作負載證明的最小設定檔。
-
絕不為了綠燈而重新執行或重新推送。 修復真正的失敗;在將紅色歸因於 CI 之前,先閱讀可用的 CI 失敗分類。
-
證明已變更的合約,完成必要的關卡,結束。僅針對變更的輸入、 失敗或已命名的未解決風險進行擴展/重複。
選擇證明方式
-
執行時期缺陷:重現真正的進入點;重新執行它 + 相關的同級項目。
-
可信任來源:
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 撰寫,頻道技能/ 控制 UI E2E。
-
Mock-Gateway 邊界證明有效;標記即時差距。
-
發布證明:保留候選版本/Tooling SHA;從不授予發布權限。
來源與狀態邊界
- 絕不在本地執行未經信任的貢獻者/分支程式碼、包裝器、設定。 使用無機密的 fork CI 或透過 Crabbox 清理後的直接 AWS;絕不使用 已注入憑證的 Testbox。憑證執行:需要維護者在審查後批准; 絕不為未經信任的租約注入憑證。
- 隔離狀態 + 空閒連接埠。未經明確的任務批准,絕不重新啟動、編輯或測試 操作者 Gateway/真實資料。保留不相關的處理程序和 共享的依賴項安裝。
- 並行的測試/檢查命令:使用不同的
OPENCLAW_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直到選定的測試在本機通過 → 推送一次。 - 既有失敗:失敗表降落規則。匹配簽章 ≠ 僅以作業名稱歸因。
- 絕不執行
gh run rerun來追求綠燈;絕不為 CI 修復執行本地完整套件。 - 將診斷綁定到確切的 SHA + 作業。擷取失敗的日誌一次;優先使用確切的執行/作業 狀態,而非過時的 PR 摘要。
- 區分產品、測試框架、基礎設施、憑證、被取代的執行 取消。快照在 macOS 通過 / CI 失敗:在重新產生之前,先在 Linux/Node 位元組層級重現。
測試失敗政策
- 失敗 = 缺陷。有界限的重現嘗試(首先使用相同的測試分片順序); 識別負責人;修復產品、測試固定裝置、共享狀態、排序錯誤。
- 已驗證的修復:添加回歸測試;如適用,引用另一個負責人的修復。
- 無法建立/完成安全修復:在 PR 中記錄原始失敗、嘗試、 證據、不確定性;在正常的 CI/審查關卡下繼續。
- 未解決的失敗本身既不會阻礙合併,也不需要額外的批准。 通過重新執行 ≠ 已驗證的修復。
- 絕不透過重試、更長超時、更弱的斷言、更廣泛的模擬、 更改基準線來隱藏失敗。