mcpField
T
testing-patterns

testing-patterns

github.com/blogic-czテスト・品質037 回インストール今日更新
リポジトリ

testing-patterns について

Vitest、TRPC、Playwright を使う開発者向けのテストスキルです。まず単体テストを検討し、データベース連携やブラウザー操作に応じたテスト方法を案内します。

主な機能

  1. 01適切なテスト階層の選択
  2. 02Vitest 単体テストのパターン提示
  3. 03TRPC データベース連携テストの案内
  4. 04Playwright E2E テストの案内
  5. 05テスト配置場所とコマンドの説明

活用シーン

  1. 01純粋関数やパーサーの単体テスト作成
  2. 02モックレイヤーを用いた Effect サービスのテスト
  3. 03TRPC とデータベースの動作確認
  4. 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 テストにプロジェクトで一貫したパターンを適用します。

テストの階層(まずはシンプルなものを優先)

  1. 単体テスト(推奨) - 純粋関数、パーサー、Effect サービスをカバーします。
  2. TRPC 統合テスト - TRPC とデータベース全体の動作をカバーします。
  3. E2E テスト - ブラウザーとユーザーフロー全体をカバーします。

テストタイプの使い分け

状況テストタイプアクション
純粋関数、パーサー、ユーティリティ単体テストすぐに作成します
依存関係のある Effect サービスモックレイヤーを使った単体テストすぐに作成します
TRPC プロシージャ(DB ロジック)TRPC 統合テスト判断プロセスに従います
ユーザー向けフロー、UI の動作E2E判断プロセスに従います

テストファイルの場所

コードの場所テストの場所
packages/X/src/file.tspackages/X/src/__tests__/file.test.ts
apps/web-app/src/infrastructure/trpc/routers/X.tsapps/web-app/src/__tests__/X.test.ts
apps/web-app/src/routes/**apps/web-app/e2e/feature.e2e.ts

判断プロセス(標準)

テストを書く前に、次の手順を適用します。

  1. 単体テストで対応できますか? すぐに単体テストを書きます。
  2. DB の動作(結合、制約、TRPC と永続化)が必要ですか?
    • ユーザーが統合テストを明示的に依頼した場合は、そのまま実装します。
    • それ以外の場合は、「この TRPC/データベースの動作に対する統合テストが必要ですか?」のように質問します。
  3. ブラウザー/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

コメント