テスト最適化 は何をしますか?
目標:実際のOpenClawテスト/ランタイムの高速化を、カバレッジを維持したまま達成する。シャードを追加したり、アサーションをスキップしたり、ゲートを弱めたり、ランナーフラグを調整したりしないでください。これらは主な修正方法ではありません。
実行手順
docs/help/testing.md、docs/ci.md、および編集するサブツリーのスコープ付きAGENTS.mdファイルを読む。- 編集前に証拠を確立する:
- 全ランキング:
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/<name>.json - 対象ファイル:
timeout 240 /usr/bin/time -l pnpm test <file> --maxWorkers=1 --reporter=verbose - インポートの疑い:
OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1を追加する
- 全ランキング:
- 最もリターンの高いホットスポットから優先的に攻める:
- ブロードなバレルインポートまたはホットテストでの
importActual() - テストごとの
vi.resetModules()と新しいインポート - 高価なゲートウェイ/サーバー/クライアントのセットアップ(リセット/再利用で同じ動作が証明される場合)
- 拡張機能が所有する振る舞いをアサートするコアテスト
- 重複したフィクスチャ構築またはコントラクトアサーション
- ブロードなバレルインポートまたはホットテストでの
- プロダクション品質の修正を優先する:
- ブロードなモックよりも狭いランタイムシーム
- 静的パース/メタデータ用の純粋ヘルパー
- モジュールリセットよりも依存性注入
- バンドルされたプラグイン/プロバイダー/チャネル動作のための拡張機能所有テスト
- 各変更後、同じベンチマークと証明テストレーンを再実行する。利用可能な場合は、前後のウォールタイム、Vitestの実行時間、最大RSSを記録する。
pnpm check:changedを実行する。影響を受けるサーフェスがある場合は、より広範なゲート(pnpm check、pnpm test、pnpm build)を実行する。- スコープ付きの変更を
scripts/committer "<conventional message>" <paths...>でコミットする。リクエストがあればプッシュする。CIが赤の場合、gh run list/viewで検査し、修正、プッシュ、現在のCIが緑になるか、ブロッカーが無関係であると証明されるまで繰り返す。
出力
プッシュされたコミット、前後のタイミング、実行されたゲート、現在のCI状態、および別途最適化が必要な残りのテールレーンで終了する。