OpenClaw テスト
証明ポリシー
-
PR CI = デフォルトの広範な証明。 変更ビルド + フォーカステストが合格 → オープン ready PR。CI は広範なスイートを実行します。プレPRスイートの実行のために PR を遅らせることは決してありません。
-
公開前のビルドが利用できない場合: 公開がすでに承認されており、 リモート容量が利用できず、ローカル実行が不適格な場合、欠落しているビルドと容量ギャップを正確に記録した ドラフト PR をプッシュ/オープンします。そのビルドを 正確なヘッド CI に延期します。ready またはマージの前にその成功を要求します。これにより 証明のタイミングのみが変更され、公開権限、ソースの信頼性、認証情報、 所有者の承認、またはマージゲートは変更されません。 自動 CI はドラフトをスキップします。信頼できるカノニカルブランチの場合は、既存の
ci.yml手動ディスパッチをtarget_refをプッシュされた完全なヘッド SHA に設定して使用します (ghx workflow run ci.yml --repo openclaw/openclaw --ref main -f target_ref=<sha>)。 選択されたチェックアウト SHA と成功したbuild-artifactsジョブが必要なビルドをカバーしていることを確認します。 CI のbuild:ci-artifactsは完全な宣言出力を省略します。カバーされていない証明は保留にします。 スキップされたジョブまたはワークフロー参照 SHA はビルド証明ではありません。 PR に実行結果をリンクし、通常の ready-PR CI とランディングゲートを使用します。 信頼できないソースはシークレットなしのルートを維持します。 -
PR の前に、狭く証明する: 影響を受けるテストを
pnpm test <file> --maxWorkers=1、ターゲット型チェック、lint、フォーマットで実行。 依存関係と現在の ホスト容量が適格である場合、信頼できる境界のある作業にはローカル証明を優先します。ローカル実行はオプションです。フォーカスされたコマンドでも 大きなコンパイラグラフをロードしたり、ブロードレーンに拡大したりする可能性があります。 -
リモート証明は意図的に選択します。 PR CI をブロード証明に使用します。Crabox/Testbox は 高価なチェック、ビジーまたは不適格なローカルホスト、別の OS/デバイス、 ライブプロバイダー/チャネル、長時間 E2E、または重いベンチマークをカバーする場合があります。 コマンドの準備ができていて容量がすぐに許可される場合にのみ取得します。キューに入れられた場合、 タスク所有の割り当てのみを停止します。PR CI または安全なローカルスコープを使用します。カバーされていない プラットフォーム固有の証明は保留にします。ビジーなマシンに重い作業を強制したり、 プロバイダーを連鎖させたりしないでください。選択されたワークロードに対して証明された最小のプロファイルを使用します。
-
グリーンのためだけに再実行または再プッシュしないでください。 実際の失敗を修正します。利用可能な CI 失敗分類を読んでから red の原因を特定します。
-
変更されたコントラクトを証明し、必要なゲートを完了し、終了します。変更された入力、失敗、または名前の付いた未解決のリスクに対してのみ拡大/繰り返します。
-
スコープ指定された
AGENTS.mdに従います。テストの作成/レビュー: 境界ガイド および test-audit を使用します。
証明を選択する
-
影響を受けるコントラクトの証明を選択します。有効な証明を再利用します(変更された入力または欠落しているカバレッジがある場合は再実行)。ユーザー/ホストの制限内でワークフローの必要なゲートを完了します。未実行のチェックとギャップを報告します。可能な場合は実際のフローを通じてユーザー可視の動作を証明します。外部 API はライブコントラクト証明が必要です。分離されたモックゲートウェイハーネス = 有効なチャネル境界証明。ドキュメントのみ:ドキュメントの健全性チェックと
git diff --check。 -
ランタイム欠陥:実際のエントリポイントを再現します。それと関連する兄弟を再実行します。
-
信頼できるソース:
pnpm changed:lanes --json、フォーカステスト + ターゲット型チェック/lint/フォーマット。pnpm check:changed= オプションのスマートローカルチェック。 -
公開 SDK/プラグインコントラクト:代表的なコンシューマー、全プラグインスイープではない。
-
ビルド出力、遅延インポート、パッケージ境界:
pnpm buildまたは変更されたコントラクトをカバーするリポジトリ CI ビルドを含めます。カバーされていないパッケージング/プラットフォーム/宣言要件を記録します。完全なパッケージまたはリリースビルドが必要な場合でも、それらに一致する証明が必要です。 -
ワークフロー:
git diff --check+pnpm check:workflows。 -
ドキュメントのみ:関連するドキュメント/リンク/フォーマットチェック +
git diff --check。ランタイムテストは不要。 -
必要に応じて参照:ローカルコマンド、 Crabox、OpenClaw リモート設定、 パッケージ/Docker 証明、 リリース CI、 プラグインリリースマトリックス、 Docker 作成、チャネルスキル/ Control UI E2E。
-
分離されたモックゲートウェイハーネスは有効なチャネル境界証明であり、 ライブのギャップを報告します。可能な場合は実際のフローを通じてユーザー可視の動作を証明します。 外部 API はライブコントラクト証明が必要です。ライブチャネルまたはネイティブアプリの作業については、スコープ指定されたチャネル/プラットフォームガイドを参照してください。Telegram の主張には Test Server ユーザーボット証明と Convex リース認証情報が必要です。 プラットフォームの主張には実機エビデンスが必要です。macOS の権限証明には 安定した署名付きアプリが必要です。
-
リリース証明:candidate/Tooling SHA を保持します。公開権限を付与することは決してありません。
ソースと状態の境界
- 信頼できないコントリビューター/フォークのコード、ラッパー、設定をローカルで実行しないでください。 シークレットなしのフォーク CI または Crabox を介したサニタイズされた直接 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を選択されたテストがローカルで合格するまで実行 → プッシュは1回。 --runはOPENCLAW_NODE_TEST_PLAN_CONTINUE_ON_FAILURE=1を有効にします。選択された設定間で通常の失敗を収集し、インフラストラクチャの失敗は停止します。手動でのフォーカスされた再実行にも同じオプトインを使用します。- 既存の失敗:failure-table ランディングルール。一致するシグネチャ ≠ ジョブ名のみの属性。
- グリーンを追いかけるために
gh run rerunを使用しないでください。CI 修復のためにローカルフルスイートを実行しないでください。 - 診断を正確な SHA + ジョブにバインドします。失敗したログを一度フェッチします。古い PR ロールアップよりも正確な実行/ジョブ状態を優先します。
- 製品、ハーネス、インフラストラクチャ、認証情報、置き換えられた実行のキャンセルを区別します。スナップショットは macOS で合格/CI で失敗:再生成する前に Linux/Node バイトを再現します。
ベースラインおよび期待される失敗の例外
狭いベースライン、スナップショット、無視、および期待される失敗の例外は、各エントリがソースに対して検証され、PR がその理由を記録している場合にのみ実装者の判断となります(たとえば、ユーザーデータが正確なままである間にアップグレードスナップショット内のツール所有メタデータ)。実際の回帰やユーザーデータの変更を決して隠さないでください。包括的または未検証の例外は承認が必要です。正確な縮小のみのラチェット更新はメンテナンスです。修正 PR は、スカッシュ本文が理由を述べている場合、それ自体の正当化された正味回帰テスト行に対して、別の追跡される config/test-lines-allocations/<change>.txt レコードを追加できます。共有スカラーは変更しないでください。独立した許可がマージされるようにします。チェッカーは、実際の LF 成長に対する有効な上限成長を制限し、継承された負債を保持します。スカラーのみの調整を含むその他の引き上げは承認が必要です。コスト予算については、コスト予算を参照してください。
モジュールモックについては、フィクスチャコントラクトに従ってください。
分離アノテーションが既存のベースラインエントリを廃止する場合、アノテーションと対応するベースライン削除を一緒にコミットします。
--prune はチェックアウト全体をスキャンするため、完全なベースライン差分を検査します。
更新されたベースラインを --prune なしのガード実行で検証します。
テスト失敗ポリシー
- 失敗 = 欠陥。限定された再現試行(最初に同じシャード順序)。 所有者を特定します。製品、フィクスチャ、共有状態、順序バグを修正します。
- 証明された修正:回帰を追加します。該当する場合は別の所有者の修正を引用します。
- 安全な修正を確立/完了できない場合:元の失敗、試行、証拠、不確実性を PR に記録します。通常の CI/レビューゲートの下で続行します。
- 未解決の失敗だけではランディングをブロックせず、追加の承認も必要としません。再実行の合格は修正が証明されたことを意味しません。
- リトライ、より長いタイムアウト、弱いアサーション、より広いモック、変更されたベースラインで失敗を隠さないでください。