detox について
React Native アプリの Detox によるエンドツーエンドテストを支援するスキルです。シミュレーター設定、テスト作成、CI 実行、同期問題の調査を扱います。
主な機能
- 01iOS と Android 向け Detox の設定
- 02マッチャーとアサーションによるテスト作成
- 03エンドツーエンドテストのビルドと実行
- 04デバッグ用の失敗時アーティファクト収集
- 05同期とタイミングの問題への対処
活用シーン
- 01React Native アプリへの Detox 導入
- 02シミュレーターやエミュレーターでのログインテスト
- 03CI でのモバイルエンドツーエンドテスト実行
- 04不安定なテストやタイミング問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill detoxインストール後、Claude Code で/detoxを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使うタイミング
次のような場合に、このスキルを使います。
- Detox を使って React Native アプリケーションのエンドツーエンドテストを作成する
- iOS シミュレーターと Android エミュレーター向けに Detox を設定する
- Detox テストで要素マッチャー、アクション、アサーションを使う
- Detox テストを CI/CD パイプラインに統合する
- モバイルテストの同期やタイミングに関する問題をデバッグする
このスキルの使い方
ワークフロー
- 環境をセットアップする:Detox CLI をインストールし、
.detoxrc.jsを設定して、Xcode/Android SDK の準備が整っていることを確認します - テストケースを作成する:
element(by.id(...))、tap()、typeText()、expect()を使います - ビルドしてテストする:
detox buildを実行し、その後detox testを実行します - CI で実行する:失敗時に成果物(ログ、スクリーンショット)を保存します
1. 設定(.detoxrc.js)
module.exports = {
testRunner: { args: { config: 'e2e/jest.config.js' } },
apps: {
'ios.debug': {
type: 'ios.app',
binaryPath: 'ios/build/MyApp.app',
build: 'xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphonesimulator',
},
'android.debug': {
type: 'android.apk',
binaryPath: 'android/app/build/outputs/apk/debug/app-debug.apk',
build: 'cd android && ./gradlew assembleDebug',
},
},
devices: {
simulator: { type: 'ios.simulator', device: { type: 'iPhone 15' } },
emulator: { type: 'android.emulator', device: { avdName: 'Pixel_6' } },
},
configurations: {
'ios.sim.debug': { device: 'simulator', app: 'ios.debug' },
'android.emu.debug': { device: 'emulator', app: 'android.debug' },
},
};
2. テスト例
describe('Login Flow', () => {
beforeAll(async () => {
await device.launchApp();
});
it('should login successfully', async () => {
await element(by.id('username-input')).typeText('testuser');
await element(by.id('password-input')).typeText('secret');
await element(by.id('login-button')).tap();
await expect(element(by.id('welcome-message'))).toBeVisible();
});
});
3. テストの実行
# Build the app
detox build --configuration ios.sim.debug
# Run tests
detox test --configuration ios.sim.debug
# With artifacts on failure
detox test --configuration ios.sim.debug --artifacts-location ./artifacts
ベストプラクティス
- 要素を安定して識別するために
testIDプロパティを使い、テキストやアニメーションによるマッチングは避けます - ローカル開発と CI で、ビルドおよびデバイスの設定を統一します
- デバッグ用に、失敗時は成果物(ログ、スクリーンショット、動画)を保存します
- 機密性の高い操作には環境変数を使い、再試行と並列化の方針を設定します
- 同期の問題を避けるため、テストビルドではアニメーションを無効にします
リソース
- 公式ドキュメント:https://wix.github.io/Detox/
- GitHub:https://github.com/wix/Detox
キーワード
detox, React Native, E2E, エンドツーエンドテスト, モバイルテスト, iOS シミュレーター, Android エミュレーター, testID, 同期, Wix Detox
コメント
Markdown 対応