mcpField
A
android-emulator-qa

android-emulator-qa

github.com/openaiテスト・品質7.6k312 回インストール3 週間前に更新
リポジトリ

android-emulator-qa について

adbを使ってエミュレーター上のAndroidアプリのフローをテストするQA・開発者向けスキルです。UIツリーに基づく操作に加え、スクリーンショットやログも取得します。

主な機能

  1. 01adbによるアプリの起動と操作
  2. 02UIツリーの確認とタップ座標の算出
  3. 03スクリーンショットとlogcatの取得
  4. 04ヘルパースクリプトによるUIツリー要約

活用シーン

  1. 01エミュレーターで画面遷移やUIの不具合を再現
  2. 02Androidの機能フローを検証
  3. 03QA中のスクリーンショットとログの保存

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openai/plugins --skill android-emulator-qa

インストール後、Claude Code で/android-emulator-qaを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.txt
agents/
openai.yaml
scripts/
ui_pick.py
ui_tree_summarize.py

詳細

Android Emulator QA

adb を使用して起動、入力、UI ツリーの確認、スクリーンショットの撮影、ログの取得を行い、エミュレーターで Android アプリのフローを検証します。

使用する場面

  • Android エミュレーターで機能のフローを QA します。
  • adb の入力イベントで画面遷移を操作し、UI のバグを再現します。
  • テスト中にスクリーンショットと logcat の出力を取得します。

クイックスタート

  1. エミュレーターを一覧表示し、シリアルを選択します:
    • adb devices
  2. 対象のバリアントをビルドしてインストールします:
    • ./gradlew :<module>:install<BuildVariant> --console=plain --quiet
    • タスク名が不明な場合:./gradlew tasks --all | rg install
  3. アプリを起動します:
    • アクティビティを解決します:adb -s <serial> shell cmd package resolve-activity --brief <package>
    • アプリを起動します:adb -s <serial> shell am start -n <package>/<activity>
  4. 見た目を確認するため、スクリーンショットを撮影します:
    • adb -s <serial> exec-out screencap -p > /tmp/emu.png

adb 操作コマンド

  • タップ(UI ツリーから取得した座標を使用します):
    • adb -s <serial> shell input tap <x> <y>
  • スワイプ:
    • adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>
    • 誤って戻るジェスチャーが発生するのを防ぐため、端を避けます(左右から約150~200 pxの位置から開始します)。
  • テキスト:
    • adb -s <serial> shell input text "hello"
  • 戻る:
    • adb -s <serial> shell input keyevent 4
  • UI ツリーのダンプ:
    • adb -s <serial> exec-out uiautomator dump /dev/tty

座標の選択(UI ツリーのみ)

タップ座標は必ずスクリーンショットではなく、UI ツリーから算出します。

  1. 手順ごとのファイルに UI ツリーをダンプします:
    • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml
  2. 対象ノードを見つけ、境界から中心座標(x y)を算出します:
    • 境界の形式:bounds="[x1,y1][x2,y2]"
    • ヘルパースクリプト:
    • python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"
  3. ノードが見つからず、scrollable 要素がある場合:
    • スワイプして再度ダンプし、対象が見つからないと判断する前に、少なくとも1回は再検索します。
  4. 中心をタップします:
    • adb -s <serial> shell input tap <x> <y>

UI ツリーの概要(ヘルパー)

このヘルパーを使って、完全な XML を確認する前に、簡潔で読みやすい概要を作成します。

  1. UI ツリー全体をダンプします:
    • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml
  2. 要約を生成します:
    • python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt
  3. /tmp/ui-summary.txt を確認して候補となる対象を選び、その後、完全な XML から正確な境界を算出します。

ログ(logcat)

  1. ログを消去します:
    • adb -s <serial> logcat -c
  2. アプリプロセスのログをストリーミングします:
    • PID を解決します:adb -s <serial> shell pidof -s <package>
    • ストリーミングします:adb -s <serial> logcat --pid <pid>
  3. クラッシュバッファーのみ:
    • adb -s <serial> logcat -b crash
  4. ログを保存します:
    • adb -s <serial> logcat -d > /tmp/logcat.txt

パッケージのショートカット

  • インストール済みパッケージを一覧表示します:
    • adb -s <serial> shell pm list packages
  • 名前空間で絞り込みます:
    • adb -s <serial> shell pm list packages | rg <company_or_app_id>
  • 起動前にアクティビティが解決されることを確認します:
    • adb -s <serial> shell cmd package resolve-activity --brief <package>

コメント