testing-mobile について
testing-mobile スキルは、iOS と Android アプリの UI テストやエンドツーエンドテストを支援します。複数のテストフレームワーク、クラウド端末サービス、スクリーンショットによるビジュアル回帰チェックを扱います。
主な機能
- 01XCUITest による iOS テスト作成
- 02Espresso による Android テスト自動化
- 03Maestro によるクロスプラットフォームのフロー実行
- 04Detox によるエンドツーエンドテスト
- 05クラウド端末サービスの利用とスクリーンショット取得
活用シーン
- 01iOS シミュレーターでの UI 操作確認
- 02端末での Android 回帰テスト実行
- 03クラウド端末サービスを使ったアプリビルドのテスト
- 04スクリーンショット比較によるビジュアル回帰確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill testing-mobileインストール後、Claude Code で/testing-mobileを入力して読み込まれたか確認します。
詳細
モバイルテスト
目的
このスキルは、iOS の XCUITest、Android の Espresso、エンドツーエンドテストの Detox、フローの Maestro などのフレームワークや、BrowserStack、Sauce Labs、Firebase Test Lab などのクラウドサービスを使用して、モバイルアプリのテストを自動化します。UI テスト、デバイス互換性、スクリーンショットの撮影に重点を置き、各プラットフォームでアプリの信頼性を確保します。
使用する場面
iOS/Android アプリの開発や保守を行い、UI テストの実行、操作の検証、実機でのテストが必要な場合に、このスキルを使用します。CI/CD パイプラインでの回帰テスト、リリース前のテスト、iPhone 14 や Pixel 6 など特定のデバイスにおける UI の問題のデバッグにも適用できます。
主な機能
- XCUITest:XCTest フレームワークを使用して、iOS の UI テストを作成します。
- Espresso:正確な操作で Android の UI テストを自動化します。
- Detox:不安定なテストへの対処機能を備え、iOS/Android のエンドツーエンドテストを実施します。
- Maestro:クロスプラットフォームのモバイルテスト用に、YAML でテストフローを定義します。
- クラウド連携:BrowserStack/Sauce Labs/Firebase Test Lab で、実機を使った並列テストを実行します。
- スクリーンショット:ビジュアル回帰テスト用にスクリーンショットを撮影し、比較します。
- デバイスファーム:API を介してエミュレーター/シミュレーターまたは実機にアクセスします。
使用パターン
タスクを実行するには、次のようにテストを構成します。Swift/Kotlin/JavaScript でテストスクリプトを作成し、デバイス仕様を使って環境を構成してから、CLI または API 経由で実行します。ローカルテストにはシミュレーターを使用し、大規模なテストにはクラウドサービスにアップロードします。まず、iOS 用の Xcode や Android SDK などの依存関係を必ずセットアップしてください。一般的なパターンは、テストを初期化し、操作を実行し、結果を検証して、クリーンアップを行うことです。
一般的なコマンド/API
テストには次のコマンドをそのまま使用してください。
-
XCUITest(iOS):
xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' -only-testing:MyAppTestsでテストを実行します。$XCUITEST_API_KEYなどのキーには環境変数を渡します。コードスニペット:
import XCTest class MyAppTests: XCTestCase { func testButtonTap() { /* assertions */ } } -
Espresso(Android):Gradle 経由で
./gradlew connectedAndroidTest --tests com.example.MyTestを実行します。デバッグには--stacktraceなどのフラグを使用します。コードスニペット:
import androidx.test.espresso.Espresso; Espresso.onView(withId(R.id.my_button)).perform(click()); -
Detox:
detox build -c ios.sim.releaseの後にdetox test -c ios.sim.releaseを実行して、ビルドとテストを行います。スクリプトはpackage.jsonで設定します。コードスニペット:
describe('Login', () => { it('should login', async () => { await element(by.id('username')).typeText('user'); }); }); -
Maestro:
maestro test my-flow.ymlでフローを実行します。YAML 形式はappId: com.example.appおよびsteps: - launchAppです。 -
BrowserStack:API 経由でアップロードして実行します。JSON ペイロードを付けて
https://api-cloud.browserstack.com/app-automate/espresso/v2に POST し、ヘッダーで$BROWSERSTACK_ACCESS_KEYを使用します。 -
Sauce Labs:
sc run --device "iPhone 14" --app myapp.ipaまたは API エンドポイントPOST https://api.us-west-1.saucelabs.com/v1/{username}/jobsを使用し、認証ヘッダーAuthorization: Basic $SAUCE_ACCESS_KEYを指定します。 -
Firebase Test Lab:
gcloud firebase test android run --app myapp.apk --test mytest.apk --device model=shibaで実行します。$GOOGLE_APPLICATION_CREDENTIALS環境変数が必要です。
統合に関する注意事項
依存関係を追加して統合します。XCUITest の場合は Xcode がインストールされていることを確認し、Espresso の場合は build.gradle に含めます。クラウド認証用に $BROWSERSTACK_USERNAME や $BROWSERSTACK_ACCESS_KEY などの環境変数を設定します。設定ファイルを使用します。たとえば、detox.config.js に { configurations: { 'ios.sim.debug': { device: 'iPhone 14' } } } を記述します。CI/CD(例:GitHub Actions)では、run: detox test などのステップを追加し、スクリーンショットのアーティファクトを処理します。並列実行には、ワークフローでマトリックスを指定します。
エラー処理
エラーには、次のように対処します。XCUITest で「No such device」が発生した場合は、destination の文字列を確認し、xcrun simctl boot iPhone 14 でシミュレーターが起動していることを確認します。Espresso のテストがタイムアウトで失敗する場合は、コードに .withTimeout(5000) を追加します。Detox の不安定なテストには、await waitFor(element).toBeVisible(); を使用します。クラウドサービスで認証に失敗した場合(例:BrowserStack からの 401)は、$BROWSERSTACK_ACCESS_KEY を確認して再試行します。API レスポンスを解析してエラーを確認します。たとえば、HTTP ステータスコードを確認し、詳細をログに記録します。一般的な解決方法は、設定内の依存関係またはデバイスプロファイルを更新することです。
具体的な使用例
-
ローカルシミュレーターで XCUITest を実行する: ボタンのクリックをテストするコードを作成し、次のコマンドを実行します:
xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14'。テストファイルに次のコードが含まれていることを確認します:func testExample() { XCTAssertTrue(app.buttons["Submit"].exists) }。これにより、UI 要素をすばやく検証できます。 -
BrowserStack にテストをアップロードして実行する: まず、環境変数を設定します:
export BROWSERSTACK_ACCESS_KEY=your_key。次に、cURL を使用します:curl -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY" -X POST https://api-cloud.browserstack.com/app-automate/espresso/v2 -d '{"app": "bs://..."}'。これにより、実機でテストを実行し、包括的にカバレッジを確保できます。
グラフの関係
- 関連:testing-general(テストクラスターを共有)
- 依存先:authentication-service($BROWSERSTACK_ACCESS_KEY などの API キー用)
- 統合先:mobile-development(アプリのビルド用)
- 競合:なし
- 拡張:device-farm-management(クラウドテスト経由)