testing-react について
React 19 を扱うチーム向けのテスト戦略スキルです。ブラウザーでのコンポーネントテストとユーザーに見える動作の検証を推奨し、E2E、ミューテーション、プロパティベーステストのツールも紹介します。
主な機能
- 01Vitest Browser Mode によるコンポーネントテスト
- 02vitest-browser-react によるレンダリングと要素検索
- 03Playwright によるコンポーネント・E2E テスト
- 04Stryker によるミューテーションテスト
- 05fast-check によるプロパティベーステスト
- 06MSW による API リクエストのモック
活用シーン
- 01実際のブラウザーでのコンポーネント動作検証
- 02一連のユーザーフローの E2E テスト実行
- 03ミューテーションスコアによるテスト評価
- 04プロパティベースのテストケース生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill testing-reactインストール後、Claude Code で/testing-reactを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
React 19 + Compiler 1.0 のテスト戦略
バージョン: React 19.2+ | React Compiler 1.0 | Vitest 5 | Playwright
React Compiler 1.0(自動メモ化)はテストに影響しません。内部の最適化ではなく、ユーザーに見える動作をテストしてください。
2026年の推奨スタック
| 種類 | ツール | 用途 |
|---|---|---|
| ユニット/コンポーネント | Vitest 5 Browser Mode | Chromium/Firefox/WebKit をネイティブに使用 |
| コンポーネント(ブラウザー) | vitest-browser-react | render + ロケーター、Vitest Browser Mode に統合 |
| コンポーネントテスト | Playwright CT | RTL の代替 — 実際のブラウザー |
| コンポーネント(JSDOM) | React Testing Library 16 | 引き続きメンテナンスされています — 既存の JSDOM テストスイートに適しています |
| E2E | Playwright | ユーザー操作を完全に再現するフロー |
| ミューテーション | Stryker | テスト品質(スコア >= 80%) |
| プロパティベース | fast-check | テストケースの生成 |
JSDOM(動作が重く、不完全)よりも実際のブラウザー(Vitest Browser Mode、Playwright CT)を優先してください。React Testing Library 16 は引き続きメンテナンスされています。既存の JSDOM テストスイートで使用し、メリットがない場合は移行しないでください。
ソース: Vitest Browser Mode、vitest-browser-react、Playwright Component Testing、Stryker Mutator
必須の不変条件
- 新しいコンポーネントテストには Vitest Browser Mode(provider: playwright)を使用し、JSDOM は避けてください
- 実装ではなく、動作(ユーザーに見えるもの)をテストしてください
- React Compiler の最適化(メモ化)はテストしないでください
- マージ前に Stryker でミューテーションスコア >= 80% を達成してください
- モノレポには Vitest の
projectsを使用してください(unit / browser を分離)。workspaceは非推奨です - API 呼び出しのモックには MSW を使用してください(手動で
fetchをモックしないでください)
種類ごとのチェックリスト
| 種類 | 確認項目 |
|---|---|
| コンポーネント | Vitest Browser Mode または Playwright CT、実際のインタラクション |
| フック | Vitest、必要に応じて renderHook |
| RSC | 返された HTML のレンダリングをテスト(DOM は使用しない) |
| E2E | Playwright、expect().toHaveURL() を使った完全なフロー |
| ミューテーション | npx stryker run、閾値 break >= 50、high >= 80 |
詳細、コード例、設定、チェックリストについては、REFERENCE.md を参照してください。
コメント
Markdown 対応