react-native-testing について
React Native Testing Library と Jest による単体・コンポーネントテストの参考スキルです。インストール済みのバージョンに合う資料の選択を重視し、Maestro の E2E フローとは対象を区別しています。
主な機能
- 01React Native Testing Library v13・v14 の資料
- 02package.json に基づくバージョン選択
- 03クエリと操作 API の解説
- 04非同期テストとアクセシビリティの推奨事項
- 05よくあるテストのアンチパターン
活用シーン
- 01導入済みバージョンに合う API の選択
- 02Jest による React Native コンポーネントテスト
- 03クエリや非同期テストでの一般的な誤りの回避
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ maikotrindade/ awesome-react-native-skills --skill react-native-testingインストール後、Claude Code で/react-native-testingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/best-practices-anti-patterns.mdcore-patterns.mdreference-v13-api.mdreference-v14-api.md詳細
React Native Testing Library
@testing-library/react-nativev13 および v14 の詳細な API リファレンスです。対象範囲: Jest と RNTL を使用したユニットテストおよびコンポーネントテストです。実機やシミュレーターでエンドツーエンドの UI フローをテストする場合は、Maestro を使用してください。宣言的な YAML フローでコードは不要です。ビルド済みアプリに対して実行します。RNTL と Maestro は相互補完するものであり、代替ではありません。
重要: API のシグネチャ、同期/非同期の動作、および利用可能な関数は、v13 と v14 で異なります。記憶しているパターンに頼らず、必ずプロジェクトの package.json を確認し、対応するバージョンのリファレンスを読み込んでください。
バージョンの検出
package.json の @testing-library/react-native を確認してください。
- v14.x → reference-v14-api を読み込みます(React 19 以降、非同期 API、
test-renderer) - v13.x → reference-v13-api を読み込みます(React 18 以降、同期 API、
react-test-renderer)
主なリファレンス
| トピック | 説明 | リファレンス |
|---|---|---|
| 基本パターン | クエリの優先順位、render/screen、userEvent と fireEvent、waitFor、11 の基本ルール | core-patterns |
| v13 API(React 18) | 同期 render、すべてのメソッド一覧、同期 fireEvent、React 19 互換シム | reference-v13-api |
| v14 API(React 19) | 非同期 render、await ベースの API、削除された API、v13 から v14 への移行用 codemod | reference-v14-api |
| アンチパターン | 誤ったクエリ、waitFor の誤用、不要な act、分割代入、await の付け忘れ | best-practices-anti-patterns |
主な推奨事項
- クエリには必ず
screenを使用してください。render()から分割代入しないでください。 - 最初に
getByRoleを使用してください。{ name: '...' }オプションを指定します(アクセシビリティに最も配慮した方法です)。 - 非同期の要素には
findBy*を使用してください。waitForとgetBy*の組み合わせは使わないでください。 fireEventよりuserEventを優先してください。より現実的な操作をシミュレートできます。queryBy*は要素が存在しないことを検証する場合にのみ使用してください(.not.toBeOnTheScreen())。- v14:すべての API で必ず
awaitを付けてください(render、fireEvent、actを含む)。
コメント
Markdown 対応