ln-782-test-runner について
設定からテストフレームワークを検出し、テストを実行して、任意でカバレッジを含む構造化結果を返すテスト用スキルです。単独実行や CI のテスト工程に向いており、プロジェクトのビルドやテストの作成・修正は対象外です。
主な機能
- 01テストフレームワークの自動検出
- 02検出したテストスイートの実行
- 03成功・失敗・スキップ数と所要時間の解析
- 04任意のカバレッジレポート生成
- 05失敗詳細を含む構造化結果
- 06タイムアウトと並列実行の設定
活用シーン
- 01単独でのテスト実行
- 02CI パイプラインへのテスト工程追加
- 03テスト実行時のカバレッジ収集
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-782-test-runnerインストール後、Claude Code で/ln-782-test-runnerを入力して読み込まれたか確認します。
同梱ファイルreferences/ci_tool_detection.mdreferences/monitor_integration_pattern.md
詳細
パス: ファイルパス(
references/、../ln-*)は、このスキルディレクトリからの相対パスです。
必読: references/ci_tool_detection.md を読み込んでください。テストフレームワークのレジストリ、コンパクトフラグ(--tb=short -q、--reporter=json)、正規化チェーンが記載されています。
ln-782-test-runner
タイプ: L3 ワーカー カテゴリ: 7XX プロジェクトのブートストラップ
目的
テストフレームワークを検出し、すべてのテストスイートを実行して、合格/失敗の件数や、任意のカバレッジを含む結果を報告します。
対象範囲:
- プロジェクト設定からテストフレームワークを自動検出します
- 検出されたすべてのフレームワークのテストスイートを実行します
- テスト出力を解析して合格/失敗の件数を取得します
- 有効な場合、カバレッジレポートを生成します
対象外:
- プロジェクトのビルド(ln-781 が担当)
- コンテナ操作(ln-783 が担当)
- テストの作成や修正
使用するタイミング
| シナリオ | このスキルを使用 |
|---|---|
| 単独で実行可能 | はい |
| 単独でのテスト実行 | はい |
| CI/CD パイプラインのテストステップ | はい |
| ビルド検証が必要 | いいえ。ln-781 を使用 |
ワークフロー
ステップ 1:テストフレームワークを検出する
プロジェクト設定ファイルからテストフレームワークを特定します。
| マーカー | テストフレームワーク | プロジェクトタイプ |
|---|---|---|
| vitest.config.* | Vitest | Node.js |
| jest.config.* | Jest | Node.js |
| package.json 内の *.test.ts | Vitest/Jest | Node.js |
| *.csproj 内の xunit / nunit | xUnit/NUnit | .NET |
| pytest.ini / conftest.py | pytest | Python |
| *_test.go ファイル | go test | Go |
| Cargo.toml を含む tests/ | cargo test | Rust |
ステップ 2:テストスイートを実行する
検出された各フレームワークのテストを実行します。
| フレームワーク | 実行方法 |
|---|---|
| Vitest | JSON レポーターを使用し、単一実行モードで実行します |
| Jest | JSON 出力で実行します |
| xUnit/NUnit | 構造化出力用のロガーを使用して実行します |
| pytest | JSON プラグインまたは詳細出力を使用して実行します |
| go test | JSON 出力フラグを使用して実行します |
| cargo test | 標準出力を解析して実行します |
ステップ 3:結果を解析する
フレームワークの出力からテスト結果を抽出します。
| メトリクス | 説明 |
|---|---|
| total | 検出されたテストの合計数 |
| passed | 正常に完了したテスト |
| failed | アサーションに失敗したテスト |
| skipped | スキップ/無視としてマークされたテスト |
| duration | 合計実行時間 |
ステップ 4:カバレッジを生成する(任意)
カバレッジが有効な場合、カバレッジ指標を収集します。
| フレームワーク | カバレッジツール |
|---|---|
| Vitest/Jest | c8 / istanbul |
| .NET | coverlet |
| pytest | pytest-cov |
| Go | go test -cover |
| Rust | cargo-tarpaulin |
カバレッジ指標:
| メトリクス | 説明 |
|---|---|
| linesCovered | テスト中に実行された行数 |
| linesTotal | コードベースの総行数 |
| percentage | カバレッジ率 |
ステップ 5:結果を報告する
構造化された結果をオーケストレーターに返します。
結果の構造:
| フィールド | 説明 |
|---|---|
| suiteName | テストスイートの識別子 |
| framework | 検出されたテストフレームワーク |
| status | 合格/失敗/エラー |
| total | テストの合計数 |
| passed | 合格したテスト数 |
| failed | 失敗したテスト数 |
| skipped | スキップされたテスト数 |
| duration | 実行時間(秒) |
| failures | 失敗の詳細(テスト名、メッセージ)の配列 |
| coverage | カバレッジ指標(有効な場合) |
エラー処理
| エラータイプ | 対応 |
|---|---|
| テストが見つからない | 警告を報告し、status = passed(テスト数 0)とします |
| テストがタイムアウトした | タイムアウトを報告し、途中までの結果を含めます |
| フレームワークエラー | エラーをログに記録し、ステータスを error として報告します |
| 依存関係が不足している | 不足しているテスト依存関係を報告します |
オプション
| オプション | デフォルト | 説明 |
|---|---|---|
| skipTests | false | テストが見つからない場合、実行をスキップします |
| allowFailures | false | テストが失敗しても成功として報告します |
| coverage | false | カバレッジレポートを生成します |
| timeout | 300 | 最大実行時間(秒) |
| parallel | true | 可能な場合、テストスイートを並列実行します |
重要なルール
- 検出されたすべてのテストスイートを実行する — テストスイートを黙ってスキップしないでください
- 実際の結果を解析する — 終了コードだけに頼らないでください
- 失敗の詳細を含める — デバッグに役立つ具体的な情報を提示してください
- タイムアウトを守る — 無限ループによるハングを防いでください
Monitor との統合(Claude Code 2.1.98+)
必ず読むこと: references/monitor_integration_pattern.md を読み込んでください
実行に 30 秒を超えると予想されるテストスイートでは、Monitor を使って失敗をリアルタイムにストリーミングしてください。
| パターン | コマンド | timeout_ms |
|---|---|---|
| 失敗をストリーミング | {test_command} 2>&1 | grep --line-buffered -E 'FAIL|Error|✗|AssertionError' | timeout * 1000(Options から取得) |
| 全出力 | {test_command} 2>&1 | timeout * 1000 |
残りのテストが実行を続けている間も、最初の失敗にはただちに対応してください。
フォールバック:Monitor を利用できない場合(Bedrock/Vertex)は、Bash(run_in_background=true) を使用してください。
完了の定義
- すべてのテストフレームワークを検出済み
- すべてのテストスイートを実行済み
- 結果を解析して構造化済み
- カバレッジを収集済み(有効な場合)
- 結果をオーケストレーターに返却済み
参照ファイル
- 親:
../ln-780-bootstrap-verifier/SKILL.md
バージョン: 2.0.0 最終更新日: 2026-01-10