openclaw-docker-e2e-authoring について
OpenClaw のコントリビューター向けに、Docker E2E テストレーンの追加・変更方法をまとめたスキルです。決定的な依存境界テストと、実プロバイダーによる検証を使い分けます。
主な機能
- 01決定的テストと実環境テストの選択
- 02JSONLログによる境界ペイロード検証
- 03テスト補助コードの本番コードからの分離
- 04パッケージスクリプトとシナリオレーンの追加
- 05chat.send の完了と履歴の検証
活用シーン
- 01Docker リリースパステストの追加
- 02偽サーバーによるペイロードルーティングの検証
- 03実プロバイダーの挙動確認
- 04表示履歴を使った chat.send のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openclaw/ openclaw --skill openclaw-docker-e2e-authoringインストール後、Claude Code で/openclaw-docker-e2e-authoringを入力して読み込まれたか確認します。
詳細
OpenClaw Docker E2E の作成
Docker E2E のレーン、リリースパスの Docker テスト、または実プロバイダーを使った Docker の検証を追加・変更するときに使用します。
レーンの選択
- 決定論的 Docker:依存関係/サーバーを偽装し、境界を越える実際のランタイム契約を厳密に検証します。
- 実環境 Docker:ユーザーに見える動作で実サービスが必要な場合に限り、実際のプロバイダー認証情報/モデルを使用します。
- 異なるリスクを検証できる場合は、両方を優先します。決定論的テストではバイト/ペイロードのルーティングを、実環境テストでは実際のプロバイダーの動作を検証します。
作成ルール
- テスト専用ヘルパーは、本番コードからインポートされる場合を除き、
src/**ではなくtest/helpersまたはscripts/e2e/lib/<lane>/に配置します。 - パッケージとしてインストールされたアプリは
/appから実行し、明示的なハーネス/ヘルパーのパスのみを読み取り専用でマウントします。 - フェイクサーバーは境界リクエストを JSONL として記録し、クライアントはプロセスの成功だけでなく、実際の依存関係ペイロードを検証します。
- パッケージスクリプトと
scripts/lib/docker-e2e-scenarios.mjsのレーンは、同じ変更で追加します。 - レーンが npm からプラグインをインストールする場合は、公開版とローカルのオーバーライドパスの両方をテストできるよう、環境変数で spec のデフォルトを設定します。
メディアとビジョン
- 正解は、テスト対象のピクセルまたはプロバイダー出力にのみ存在する必要があります。
- 中立的なファイル名とプロンプトを使用し、メタデータから情報が漏れないようにします。
- ランダムなビットマップ/OCR トークンでは、テスト専用のより強力なグリフセットがない限り、リポジトリの OCR セーフな文字セット
24567ACEFを使用します。 - 実際の画像理解を検証する場合は、実行ごとに正解が一意になるようにします。
chat.send E2E
chat.sendがstatus: "started"と文字列のrunIdを返すことを確認します。agent.waitで完了を待ちます。- イベント順序がテスト対象の動作ではない場合は、
chat.historyで最終的にユーザーに表示されるテキストを検証します。 - 不具合の経路でキューに入った受信メッセージ/チャネルのコンテキストが必要な場合に限り、送信元のチャネル/アカウントのメタデータを保持します。
検証
変更したレーンを網羅する、最小限の検証を実行します。
pnpm exec oxfmt --write <changed files>
node --check <new .mjs files>
bash -n <new .sh files>
node scripts/run-vitest.mjs test/scripts/docker-e2e-plan.test.ts
OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:<lane>
実プロバイダーを使うレーンでは、決定論的 Docker のテストが成功した後、対応する実環境 Docker スクリプトを実行します。コミット/PR の前に $autoreview を実行して完了します。
コメント
Markdown 対応