testing-patterns について
Vitest、TRPC、Playwright を使う開発者向けのテストスキルです。まず単体テストを検討し、データベース連携やブラウザー操作に応じたテスト方法を案内します。
主な機能
- 01適切なテスト階層の選択
- 02Vitest 単体テストのパターン提示
- 03TRPC データベース連携テストの案内
- 04Playwright E2E テストの案内
- 05テスト配置場所とコマンドの説明
活用シーン
- 01純粋関数やパーサーの単体テスト作成
- 02モックレイヤーを用いた Effect サービスのテスト
- 03TRPC とデータベースの動作確認
- 04ブラウザー上のユーザーフローの検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ blogic-cz/ agent-tools --skill testing-patternsインストール後、Claude Code で/testing-patternsを入力して読み込まれたか確認します。
同梱ファイルreferences/examples.md
詳細
テストパターン
このスキルを使って、効果的なテストタイプの中から最も軽量なものを選び、Vitest の単体テスト、PGlite を使った TRPC の統合テスト、Playwright の E2E テストにプロジェクトで一貫したパターンを適用します。
テストの階層(まずはシンプルなものを優先)
- 単体テスト(推奨) - 純粋関数、パーサー、Effect サービスをカバーします。
- TRPC 統合テスト - TRPC とデータベース全体の動作をカバーします。
- E2E テスト - ブラウザーとユーザーフロー全体をカバーします。
テストタイプの使い分け
| 状況 | テストタイプ | アクション |
|---|---|---|
| 純粋関数、パーサー、ユーティリティ | 単体テスト | すぐに作成します |
| 依存関係のある Effect サービス | モックレイヤーを使った単体テスト | すぐに作成します |
| TRPC プロシージャ(DB ロジック) | TRPC 統合テスト | 判断プロセスに従います |
| ユーザー向けフロー、UI の動作 | E2E | 判断プロセスに従います |
テストファイルの場所
| コードの場所 | テストの場所 |
|---|---|
packages/X/src/file.ts | packages/X/src/__tests__/file.test.ts |
apps/web-app/src/infrastructure/trpc/routers/X.ts | apps/web-app/src/__tests__/X.test.ts |
apps/web-app/src/routes/** | apps/web-app/e2e/feature.e2e.ts |
判断プロセス(標準)
テストを書く前に、次の手順を適用します。
- 単体テストで対応できますか? すぐに単体テストを書きます。
- DB の動作(結合、制約、TRPC と永続化)が必要ですか?
- ユーザーが統合テストを明示的に依頼した場合は、そのまま実装します。
- それ以外の場合は、「この TRPC/データベースの動作に対する統合テストが必要ですか?」のように質問します。
- ブラウザー/UI フローの検証が必要ですか?
- ユーザーが E2E カバレッジを明示的に依頼した場合は、そのまま実装します。
- それ以外の場合は、「ここに E2E テストが必要ですか? E2E は最も保守コストの高いテストタイプです」のように質問します。
ユーザーがすでに明示的に指定したテストタイプについて、再度質問してはいけません。
単体テストのパターン
デフォルトでは単体テストを使います。
具体例については、references/examples.md を参照してください。
- Vitest の基本
@effect/vitestとモックレイヤーを使った Effect のテスト- モック境界で実際のサービスロジックを使うサービスレイヤーのテスト
用語を明確にします。「モック境界で実際のサービスロジックを使うサービスレイヤーのテスト」とは、外部境界(たとえば HTTP、DB、ファイルシステムのクライアント)をモックに置き換えながら、実際のサービス実装をテストすることを意味します。
TRPC 統合テストのパターン
同意と段階的な対応については、上記の標準的な判断プロセスに従います。
具体的なセットアップとシードヘルパーの例については、references/examples.md を参照してください。
@project/db/testing のシードヘルパーを使って、各ケースに必要な最小限の状態をセットアップします。
E2E テストのパターン
同意と段階的な対応については、上記の標準的な判断プロセスに従います。
具体的な E2E と認証ヘルパーの例については、references/examples.md を参照してください。
E2E が明示的に依頼されていない場合に限り、保守コストについて警告します。
コマンド
bun run test # Run all unit + TRPC integration tests
bun run test:watch # Watch mode
bun run test:coverage # With coverage
bun run test:e2e # Run E2E tests
bun run test:e2e:ui # E2E with UI
# Run specific test file (FROM PROJECT ROOT, full path required)
bun run vitest run packages/common/src/__tests__/pagination.test.ts
bun run vitest run apps/web-app/src/__tests__/formatters.test.ts
次のコマンドパターンは避けてください。
# These DO NOT work:
bun run test packages/common/src/__tests__/file.test.ts # script doesn't accept path
cd packages/common && bun run vitest run src/__tests__/file.test.ts # wrong cwd