テスト
- 完全なテストキット(スイート、ライブ、Docker): Testing
-
pnpm test:force: デフォルトの制御ポートを保持している残存Gatewayプロセスを強制終了し、その後、分離されたGatewayポートで完全なVitestスイートを実行して、サーバーテストが実行中のインスタンスと衝突しないようにします。前回のGateway実行でポート18789が使用中のままになった場合に使用します。 -
pnpm test:coverage: V8カバレッジ付きでユニットスイートを実行します(vitest.unit.config.ts経由)。グローバルしきい値は行数/分岐/関数/ステートメントで70%です。カバレッジからは、対象をユニットテスト可能なロジックに絞るため、統合負荷の高いエントリーポイント(CLI配線、gateway/telegramブリッジ、webchat静的サーバー)を除外します。 -
pnpm test:coverage:changed:origin/main以降に変更されたファイルのみを対象にユニットカバレッジを実行します。 -
pnpm test:changed:--changed origin/mainを付けてネイティブVitestプロジェクト設定を実行します。ベース設定では、プロジェクト/設定ファイルをforceRerunTriggersとして扱うため、必要な場合には配線変更でも広範囲に再実行されます。 -
pnpm test: ネイティブVitestルートプロジェクト設定を直接実行します。ファイルフィルターは、設定された各プロジェクト全体でネイティブに動作します。 -
ベースのVitest設定は、現在
pool: "threads"とisolate: falseをデフォルトとし、共有の非分離ランナーがリポジトリ設定全体で有効になっています。 -
pnpm test:channelsはvitest.channels.config.tsを実行します。 -
pnpm test:extensionsはvitest.extensions.config.tsを実行します。 -
pnpm test:extensions: extension/plugin スイートを実行します。 -
pnpm test:perf:imports: ネイティブルートプロジェクト実行で、Vitestのインポート時間およびインポート内訳レポートを有効にします。 -
pnpm test:perf:imports:changed: 同じインポートプロファイリングを実行しますが、origin/main以降に変更されたファイルのみを対象にします。 -
pnpm test:perf:profile:main: VitestメインスレッドのCPUプロファイルを書き出します(.artifacts/vitest-main-profile)。 -
pnpm test:perf:profile:runner: ユニットランナーのCPU + ヒーププロファイルを書き出します(.artifacts/vitest-runner-profile)。 -
Gateway統合:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testまたはpnpm test:gatewayでオプトインします。 -
pnpm test:e2e: Gatewayのエンドツーエンドスモークテスト(マルチインスタンスWS/HTTP/nodeペアリング)を実行します。デフォルトではvitest.e2e.config.tsでthreads+isolate: falseと適応的ワーカーを使用します。OPENCLAW_E2E_WORKERS=<n>で調整し、詳細ログにはOPENCLAW_E2E_VERBOSE=1を設定してください。 -
pnpm test:live: プロバイダーのライブテスト(minimax/zai)を実行します。APIキーが必要で、スキップ解除にはLIVE=1(またはプロバイダー固有の*_LIVE_TEST=1)が必要です。 -
pnpm test:docker:openwebui: Docker化されたOpenClaw + Open WebUIを起動し、Open WebUI経由でサインインし、/api/modelsを確認した後、/api/chat/completionsを通して実際のプロキシチャットを実行します。使用可能なライブモデルキー(たとえば~/.profile内のOpenAI)が必要で、外部のOpen WebUIイメージをpullし、通常のunit/e2eスイートのようにCIで安定することは想定していません。 -
pnpm test:docker:mcp-channels: シード済みのGatewayコンテナと、openclaw mcp serveを起動する2つ目のクライアントコンテナを開始し、ルーティングされた会話の検出、トランスクリプト読み取り、添付メタデータ、ライブイベントキューの挙動、送信ルーティング、および実際のstdioブリッジ上でのClaudeスタイルのチャネル + 権限通知を検証します。Claude通知のアサーションは、生のstdio MCPフレームを直接読み取るため、このスモークはブリッジが実際に出力するものを反映します。
ローカルPRゲート
ローカルのPR land/gateチェックでは、次を実行します。pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test が負荷の高いホストで不安定な場合は、回帰と見なす前に一度再実行し、その後 pnpm test <path/to/test> で切り分けてください。メモリ制約のあるホストでは、次を使用します。
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
モデル遅延ベンチマーク(ローカルキー)
スクリプト:scripts/bench-model.ts
使用方法:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- 任意の環境変数:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - デフォルトプロンプト: 「Reply with a single word: ok. No punctuation or extra text.」
- minimax 中央値 1279ms(最小 1114、最大 2431)
- opus 中央値 2454ms(最小 1224、最大 3170)
CLI起動ベンチマーク
スクリプト:scripts/bench-cli-startup.ts
使用方法:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: 両方のプリセット
sampleCount、avg、p50、p95、min/max、exit-code/signal 分布、および最大RSSサマリーが含まれます。任意の --cpu-prof-dir / --heap-prof-dir は、実行ごとのV8プロファイルを書き出すため、タイミング計測とプロファイル取得に同じハーネスを使用します。
保存済み出力の規約:
pnpm test:startup:bench:smokeは、対象のスモーク成果物を.artifacts/cli-startup-bench-smoke.jsonに書き出しますpnpm test:startup:bench:saveは、runs=5とwarmup=1を使って完全スイート成果物を.artifacts/cli-startup-bench-all.jsonに書き出しますpnpm test:startup:bench:updateは、runs=5とwarmup=1を使って、チェックイン済みベースラインフィクスチャをtest/fixtures/cli-startup-bench.jsonに更新します
test/fixtures/cli-startup-bench.jsonpnpm test:startup:bench:updateで更新pnpm test:startup:bench:checkで現在の結果をフィクスチャと比較
オンボーディング E2E(Docker)
Dockerは任意です。これはコンテナ化されたオンボーディングスモークテストにのみ必要です。 クリーンなLinuxコンテナでの完全なコールドスタートフロー:openclaw health を実行します。
QRインポートスモーク(Docker)
サポート対象のDocker Nodeランタイム(デフォルトのNode 24、互換のあるNode 22)でqrcode-terminal が読み込まれることを保証します。