test-detect について
プロジェクトのテストフレームワークを検出し、対応するテストを実行するスキルです。設定に基づいて全体または個別ファイルのテストを実行し、テストファイルの生成や結果報告も行います。
主な機能
- 01テストフレームワークの検出
- 02全体または個別テストの実行
- 03ソースファイルからのテスト生成
- 04結果と失敗内容の報告
- 05複数フレームワークと Monorepo への対応
活用シーン
- 01既存プロジェクトのテスト実行
- 02特定ソースファイルのテスト検索と実行
- 03関数、クラス、コンポーネントのテスト生成
- 04複数フレームワーク環境での実行コマンド選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill test-detectインストール後、Claude Code で/test-detectを入力して読み込まれたか確認します。
詳細
Test Detect
現在のプロジェクトで使用されているテストフレームワークを自動的に検出し、適切なテストを実行します。
ワークフロー
ステップ 1: テストフレームワークを検出する
以下のファイルを順番に確認します(最初に一致したものを採用)。
| チェック対象 | フレームワーク | 実行コマンド |
|---|---|---|
vitest.config.* が存在するか、devDeps に vitest がある | Vitest | npx vitest run |
jest.config.* が存在するか、devDeps に jest がある | Jest | npx jest |
playwright.config.* が存在する | Playwright | npx playwright test |
cypress.config.* が存在する | Cypress | npx cypress run |
pytest.ini、conftest.py、または [tool.pytest] を含む pyproject.toml | pytest | python -m pytest |
go.mod が存在する | Go test | go test ./... |
Cargo.toml が存在する | Rust/cargo | cargo test |
mix.exs が存在する | ExUnit | mix test |
rspec を含む Gemfile | RSpec | bundle exec rspec |
package.json の scripts.test が存在する | npm test | npm test |
処理を進める前に、検出したフレームワークを報告します。
ステップ 2: 引数を解析する
$ARGUMENTS を確認してモードを判断します。
- 引数なし、または "all": テストスイート全体を実行する(ステップ 3)
- ファイルパス(例:
src/auth/login.ts): そのファイルのテストを実行する(ステップ 4) - "generate" + ファイルパス(例:
generate src/utils.ts): テストを生成する(ステップ 5)
ステップ 3: テストスイート全体を実行する
検出したテストコマンドを実行します。完了後に以下を行います。
- テストの総数、成功、失敗、スキップの数を報告する
- テストが失敗した場合は、最初の 3 件の失敗メッセージを file:line の参照付きで表示する
- 「
/test-detect <失敗したファイル>を実行して、特定の失敗を調査してください」と提案する
ステップ 4: 特定のファイルのテストを実行する
ソースファイルのパスが与えられたら、そのテストファイルを探します。
検索戦略(順番に試す):
__tests__/<filename>.test.<ext>(Jest の慣例)<filename>.test.<ext>(同じディレクトリに配置)<filename>.spec.<ext>(別の慣例)test/<filename>_test.<ext>(Go/Python の慣例)tests/test_<filename>.<ext>(pytest の慣例)<filename>_test.go(Go の慣例)
Glob を使って一致するファイルを探します。見つかった場合は、そのテストファイルだけを実行します。
| フレームワーク | コマンド |
|---|---|
| Vitest | npx vitest run <test-file> |
| Jest | npx jest <test-file> |
| Playwright | npx playwright test <test-file> |
| pytest | python -m pytest <test-file> |
| Go | go test -run <TestName> ./<package>/ |
| Cargo | cargo test <test_name> |
テストファイルが見つからない場合は、「このファイルのテストが見つかりません。生成しますか? /test-detect generate <file> を実行してください」と尋ねます。
ステップ 5: テストを生成する
ソースファイルを読み込み、以下を分析します。
- エクスポートされているすべての関数、クラス、コンポーネントを特定する
- フレームワークに適したテストパターンを決定する
- 以下を含むテストファイルを生成する
- import 文
- 関数やクラスごとの
describeブロック - 正常系、エッジケース、エラーケースを対象とする
it/testブロック - フレームワークに適したアサーションとモック
慣例的な場所に保存する(検出したフレームワークごと):
- Jest/Vitest:
__tests__/<filename>.test.<ext>または<filename>.test.<ext>(既存の慣例に合わせる) - pytest:
tests/test_<filename>.py - Go:
<filename>_test.go(同じディレクトリ) - RSpec:
spec/<filename>_spec.rb
生成されたファイルのパスを表示し、新しいテストを実行するかどうかをユーザーに尋ねます。
ヒント
- 複数のフレームワークが検出された場合(例: 単体テスト用の Vitest と E2E 用の Playwright)は、両方に言及し、既定では単体テスト用のフレームワークを使用する
- モノレポの場合は、現在のディレクトリから最も近い設定ファイルを基に検出する
package.jsonにtestとtest:unit/test:e2eの両方のスクリプトがある場合、文脈から明らかであれば具体的なものを優先する
コメント
Markdown 対応