android-emulator-qa — Codex skill: what it does, install
This skill checks Android app flows in an emulator through adb. Use it for navigation tests, UI bug reproduction, screenshots, and logcat capture.
npx skills add openai/plugins --skill android-emulator-qa -a codexWhat android-emulator-qa does
android-emulator-qa drives Android app checks inside an emulator. It launches the app with adb, sends taps, swipes, text, and back events, inspects the UI tree, captures screenshots, and collects logcat output.
The skill includes steps for selecting an emulator, building and installing a Gradle variant, resolving the activity, and starting the package. UI actions use bounds from the UI tree rather than screenshot coordinates. The ui_pick.py and ui_tree_summarize.py scripts help locate nodes and create a readable tree summary. Logs can be cleared, filtered by process, or saved to /tmp/logcat.txt.
You need an Android emulator, adb, and a Gradle-buildable project before testing. Install it when Codex or ChatGPT needs to validate Android flows; it adds little for a manual test without an emulator.
What it helps with
- validate an Android feature flow in an emulator
- reproduce a UI bug with adb input events
- locate a control in the UI tree and tap its bounds
- capture a screenshot after a test step
- save process or crash logs for investigation
Example prompts for the agent
- Validate the sign-in flow in the Android emulator, install the target variant, launch the activity, and capture a screenshot after each step.
- Find the Settings node in the UI tree, use `ui_pick.py` to calculate its center, and tap it with adb.
- Clear logcat, reproduce the crash, and save the result to `/tmp/logcat.txt`.
How to install android-emulator-qa
1Skills CLI (Vercel)
npx skills add openai/plugins --skill android-emulator-qa -a codex2Manually: put the files in place
.agents/skills/android-emulator-qa/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openai/plugins --skill android-emulator-qa -a claude-code2Manually: put the files in place
~/.claude/skills/android-emulator-qa/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/android-emulator-qa/
Manually: put the files in place
.cursor/skills/android-emulator-qa/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openai/plugins android-emulator-qa2Manually: put the files in place
.github/skills/android-emulator-qa/SKILL.mdPlatform CLI
gemini skills install https://github.com/openai/plugins --path plugins/test-android-apps/skills/android-emulator-qaManually: put the files in place
.devin/skills/android-emulator-qa/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set201
The whole set →Similar
Questions about android-emulator-qa
How do I install android-emulator-qa in Codex?
Run npx skills add openai/plugins --skill android-emulator-qa. The skill file is placed at .agents/skills/android-emulator-qa/SKILL.md.
What does android-emulator-qa do?
It uses adb to launch and control an Android app, inspect the UI tree, capture screenshots, and collect logcat while a flow is being tested.
What is required to use android-emulator-qa?
You need an Android emulator and adb. Installing the app also requires an Android project that can be built with Gradle.
Source text
SKILL.md · Apache-2.0
--- name: "android-emulator-qa" description: "Use when validating Android feature flows in an emulator with adb-driven launch, input, UI-tree inspection, screenshots, and logcat capture." --- # Android Emulator QA Validate Android app flows in an emulator using adb for launch, input, UI-tree inspection, screenshots, and logs. ## When to use - QA a feature flow in an Android emulator. - Reproduce UI bugs by driving navigation with adb input events. - Capture screenshots and logcat output while testing. ## Quick start 1) List emulators and pick a serial: - `adb devices` 2) Build and install the target variant: - `./gradlew :<module>:install<BuildVariant> --console=plain --quiet` - If unsure about task names: `./gradlew tasks --all | rg install` 3) Launch the app: - Resolve activity: `adb -s <serial> shell cmd package resolve-activity --brief <package>` - Start app: `adb -s <serial> shell am start -n <package>/<activity>` 4) Capture a screenshot for visual verification: - `adb -s <serial> exec-out screencap -p > /tmp/emu.png` ## adb control commands - Tap (use UI tree-derived coordinates): - `adb -s <serial> shell input tap <x> <y>` - Swipe: - `adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>` - Avoid edges (start ~150-200 px from left/right) to reduce accidental back gestures. - Text: - `adb -s <serial> shell input text "hello"` - Back: - `adb -s <serial> shell input keyevent 4` - UI tree dump: - `adb -s <serial> exec-out uiautomator dump /dev/tty` ## Coordinate picking (UI tree only) Always compute tap coordinates from the UI tree, not screenshots. 1) Dump the UI tree to a step-specific file: - `adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml` 2) Find the target node and derive center coordinates (`x y`) from bounds: - Bounds format: `bounds="[x1,y1][x2,y2]"` - Helper script: - `python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"` 3) If the node is missing and there are `scrollable` elements: - swipe, re-dump, and re-search at least once before concluding the target is missing. 4) Tap the center: - `adb -s <serial> shell input tap <x> <y>` ## UI tree skeleton (helper) Use this helper to create a compact, readable overview before inspecting full XML. 1) Dump full UI tree: - `adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml` 2) Generate summary: - `python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt` 3) Review `/tmp/ui-summary.txt` to choose likely targets, then compute exact bounds from full XML. ## Logs (logcat) 1) Clear logs: - `adb -s <serial> logcat -c` 2) Stream app process logs: - Resolve pid: `adb -s <serial> shell pidof -s <package>` - Stream: `adb -s <serial> logcat --pid <pid>` 3) Crash buffer only: - `adb -s <serial> logcat -b crash` 4) Save logs: - `adb -s <serial> logcat -d > /tmp/logcat.txt` ## Package shortcuts - List installed packages: - `adb -s <serial> shell pm list packages` - Filter to your namespace: - `adb -s <serial> shell pm list packages | rg <company_or_app_id>` - Confirm the activity resolves before launching: - `adb -s <serial> shell cmd package resolve-activity --brief <package>`
© OpenAI · Apache-2.0 · openai/plugins