react-testing-library について
Testing LibraryでReactコンポーネントのテストを書く開発者やAIエージェント向けのガイドです。優先度別の9カテゴリ、計43ルールで、クエリや非同期処理からアクセシビリティまで扱います。
主な機能
- 019カテゴリ、計43ルール
- 02クエリ選択と非同期テストの指針
- 03ユーザー操作とアサーションの実践
- 04コンポーネント設定とテスト構成
- 05デバッグとアクセシビリティの確認
活用シーン
- 01Reactコンポーネントの新規テスト作成
- 02クエリ選択と非同期結果の処理
- 03実装詳細を検証していないかテストを確認
- 04フォーカス管理とARIA状態のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill react-testing-libraryインストール後、Claude Code で/react-testing-libraryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mda11y-role-queries-verify.mda11y-test-aria-states.mda11y-verify-focus.mdanti-container-queries.mdanti-empty-waitfor.mdanti-implementation-details.mdanti-manual-cleanup.mdanti-redundant-roles.mdanti-unnecessary-act.mdassert-accessible-description.mdassert-have-value.mdassert-jest-dom-matchers.mdassert-text-content.mdassert-visible-over-in-document.mdasync-await-findby.mdasync-findby-over-waitfor.mdasync-no-side-effects-waitfor.mdasync-single-assertion-waitfor.mdasync-waitfor-disappear.mddebug-logroles.mddebug-screen-debug.mddebug-testing-playground.mdquery-avoid-testid.mdquery-get-vs-query.mdquery-label-text-forms.mdquery-prefer-role.md詳細
React Testing Library のベストプラクティス
AI エージェントと LLM 向けに設計された、Testing Library を使った React コンポーネントの包括的なテストガイドです。影響度に基づいてテストの作成とコードレビューを導く、9 つのカテゴリーにわたる 43 のルールを収録しています。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- React Testing Library を使って新しいコンポーネントテストを作成するとき
- クエリ(getByRole、getByLabelText など)を選択するとき
- テスト内で非同期処理(findBy、waitFor)を扱うとき
- ユーザー操作(userEvent)をシミュレートするとき
- アンチパターンや実装の詳細をテストするテストをレビューするとき
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | クエリの選択 | CRITICAL | query- |
| 2 | 非同期処理 | CRITICAL | async- |
| 3 | よくあるアンチパターン | CRITICAL | anti- |
| 4 | ユーザー操作 | HIGH | user- |
| 5 | アサーション | HIGH | assert- |
| 6 | コンポーネントのセットアップ | MEDIUM | setup- |
| 7 | テストの構成 | MEDIUM | struct- |
| 8 | デバッグ | LOW-MEDIUM | debug- |
| 9 | アクセシビリティテスト | LOW | a11y- |
クイックリファレンス
1. クエリの選択(CRITICAL)
query-prefer-role- 他のクエリより getByRole を優先しますquery-avoid-testid- 主なクエリとして getByTestId を使うのは避けますquery-use-screen- クエリには screen を使いますquery-label-text-forms- フォームフィールドには getByLabelText を使いますquery-role-name-option- getByRole では name オプションを使いますquery-get-vs-query- 要素が存在する場合は getBy、存在しない場合は queryBy を使いますquery-within-scope- クエリの範囲を絞るには within() を使います
2. 非同期処理(CRITICAL)
async-findby-over-waitfor- waitFor + getBy の代わりに findBy を使いますasync-await-findby- findBy クエリには必ず await を付けますasync-single-assertion-waitfor- waitFor 内のアサーションは 1 つにしますasync-no-side-effects-waitfor- waitFor 内での副作用は避けますasync-waitfor-disappear- waitForElementToBeRemoved を使います
3. よくあるアンチパターン(CRITICAL)
anti-unnecessary-act- 不要な act() のラップは避けますanti-manual-cleanup- 手動の cleanup 呼び出しを削除しますanti-implementation-details- 実装の詳細をテストするのは避けますanti-empty-waitfor- 空の waitFor コールバックは避けますanti-container-queries- クエリに container を使うのは避けますanti-redundant-roles- 冗長な ARIA ロールの追加は避けます
4. ユーザー操作(HIGH)
user-prefer-userevent- fireEvent より userEvent を使いますuser-setup-before-render- render の前に userEvent をセットアップしますuser-await-interactions- userEvent の操作には必ず await を付けますuser-keyboard-for-special-keys- 特殊キーには keyboard() を使いますuser-clear-before-type- 再入力する前に clear() を使います
5. アサーション(高)
assert-jest-dom-matchers- jest-dom のマッチャーを使用しますassert-visible-over-in-document- 表示状態の確認には toBeVisible() を使用しますassert-text-content- テキストの確認には toHaveTextContent() を使用しますassert-have-value- 入力値の確認には toHaveValue() を使用しますassert-accessible-description- toHaveAccessibleDescription() を使用します
6. コンポーネントのセットアップ(中)
setup-wrapper-providers- プロバイダーには wrapper オプションを使用しますsetup-custom-render- プロバイダーを含むカスタム render を作成しますsetup-mock-modules- モジュールレベルでモジュールをモックしますsetup-fake-timers- fake timers を使って userEvent を設定しますsetup-render-hook- フックのテストには renderHook を使用します
7. テスト構成(中)
struct-arrange-act-assert- Arrange-Act-Assert パターンに従いますstruct-one-behavior-per-test- 1つのテストにつき1つの動作をテストしますstruct-descriptive-names- 内容がわかるテスト名を使用しますstruct-avoid-beforeeach-render- beforeEach 内で render() を呼び出さないようにします
8. デバッグ(低〜中)
debug-screen-debug- DOM の確認には screen.debug() を使用しますdebug-logroles- 利用可能なロールを確認するには logRoles を使用しますdebug-testing-playground- クエリには Testing Playground を使用します
9. アクセシビリティテスト(低)
a11y-role-queries-verify- ロールクエリでアクセシビリティを確認しますa11y-verify-focus- フォーカス管理をテストしますa11y-test-aria-states- ARIA の状態とプロパティをテストします
使用方法
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応