android-testing-ui について
Android 開発者向けの UI テストスキルです。Compose、Espresso 形式の検証、スクリーンショット、アクセシビリティ確認を扱い、目的に合うテスト選択と原因を特定しやすい失敗報告を支援します。
主な機能
- 01Compose UI の動作アサーション
- 02Espresso 形式の検証
- 03Roborazzi による画像検証
- 04アクセシビリティのセマンティクス確認
- 05失敗への対処ガイド
活用シーン
- 01Compose 画面と操作の検証
- 02安定した画面の視覚的回帰検出
- 03アクセシブルな説明の表示確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-testing-uiインストール後、Claude Code で/android-testing-uiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh詳細
Android UI テスト
使用するタイミング
- リクエストが Android UI テスト、Compose UI 画面のテスト、Espresso による Android の検証に関する場合に、このスキルを使用します。
- 主な目的:Compose UI テスト、Espresso 形式のチェック、スクリーンショットアサーション、アクセシビリティ検証で Android UI の動作を検証します。
- 不足している作業がアサーション、インストルメンテーション、スクリーンショットのキャプチャ、アクセシビリティ検証であり、プロダクトの状態設計ではない場合に、このスキルを使用します。
- 対象範囲が広がる場合は、次のスキルに引き継ぎます。
android-compose-accessibilityandroid-ui-states-validation
ワークフロー
- リスクの対象範囲を特定します。動作、視覚的なリグレッション、アクセシビリティのセマンティクス、デバイスをまたいだ操作のいずれかを確認します。
- 起こりそうなリグレッションを検出できる、最も限定的な検証方法を選びます。動作にはインストルメンテーション、視覚的な検証には Roborazzi、リスクの高いフローには両方を使用します。
- 失敗時に単にエラーになるだけでなく、対応につながるようにワークフローをインストルメントします。
- ショーケースアプリとパッケージ出力で、関連するチェックを実行します。
- 残るリスクがあれば、フォローアップ作業と担当スキルを明示して記録します。状態マトリックス自体が不完全な場合は、
android-ui-states-validationに引き継ぎます。
ガードレール
- 一度限りのローカルでの無理な対応ではなく、CI で再現可能なチェックを優先します。
- 決定論的なコンテンツ、固定テーマ、時間経過による UI の変化を最小限にすることで、スクリーンショットテストを安定させます。
- 曖昧な品質ゲートではなく、具体的な修正方法を示して失敗させます。
- 例やフィクスチャにシークレット、署名情報、本番環境の認証情報を含めないでください。
- パフォーマンスやセキュリティの作業は、根拠に基づくエンジニアリング作業として扱い、通説に頼らないでください。
アンチパターン
- シグナルを増やさずにテストだけを追加する。
- 不安定な画面のピクセルノイズを記録するだけのスクリーンショットテストにする。
- 誰も再現できないベンチマークやセキュリティスキャンをリリースする。
- リリース用の認証情報をビルドロジックにハードコードする。
- ユーザーへの影響を解釈できない合成メトリクスを使用する。
修正例
動作テストとスクリーンショットテストの範囲を選ぶ
composeTestRule.onNodeWithText("Review blocked state").performClick()
composeTestRule.onNodeWithText("Reminder readiness").assertIsDisplayed()
@Test
fun orbitTasksBoard_matchesGolden() {
composeTestRule.setContent { OrbitTasksApp() }
composeTestRule.onRoot().captureRoboImage()
}
UI の動作と併せてアクセシビリティをアサートする
composeTestRule
.onNodeWithContentDescription("Team avatar for release readiness")
.assertIsDisplayed()
例
基本ケース
- シナリオ:タスクボードとアクションフローに対して Compose UI アサーションを実行し、同じ安定した画面を Roborazzi で検証します。
- コマンド:
cd examples/orbittasks-compose && ./gradlew :app:connectedDebugAndroidTest verifyRoborazziDebug
エッジケース
- シナリオ:安定した Compose 画面に意図的な変更を加えた場合、スクリーンショットのベースラインを記録または更新します。
- コマンド:
cd examples/orbittasks-compose && ./gradlew recordRoborazziDebug
失敗時の復旧
- シナリオ:UI テストのリクエストを、UI 状態のレビューやアクセシビリティに特化したプロンプトと切り分けます。
- コマンド:
python3 scripts/eval_triggers.py --skill android-testing-ui
完了チェックリスト
- 実装方針が明確かつ最小限で、適切な Android 画面に結び付いています。
- 関連するサンプルコマンドとベンチマーク用プロンプトを実行するか、更新しています。
- リクエストが隣接するスキルの範囲に及ぶ場合、引き継ぎ内容を文書化しています。
- 選択したパターンと、主な移行またはトラブルシューティングの手順を公式リファレンスで確認できます。
公式リファレンス
コメント
Markdown 対応