android-emulator-qa
$
npx mdskill add openai/plugins/android-emulator-qaValidate Android app flows in an emulator using adb for launch, input, UI inspection, screenshots, and logs.
- Helps QA feature flows and reproduce UI bugs in Android emulators.
- Integrates with adb, Gradle, and Android emulator tools for control.
- Uses adb commands to drive navigation and capture diagnostic data.
- Delivers results through screenshots, logcat output, and UI tree dumps.
SKILL.md
.github/skills/android-emulator-qaView on GitHub ↗
--- 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>`
More from openai/plugins
- accessibility-and-inclusive-visualizationMake data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.
- agent-browserBrowser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.
- agent-browser-verifyAutomated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass/fail before continuing.
- agents-sdkBuild AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
- ai-elementsAI Elements component library guidance — pre-built React components for AI interfaces built on shadcn/ui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.
- ai-gatewayVercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.
- ai-generation-persistenceAI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation
- ai-sdkVercel AI SDK expert guidance. Use when building AI-powered features — chat interfaces, text generation, structured output, tool calling, agents, MCP integration, streaming, embeddings, reranking, image generation, or working with any LLM provider.
- aiq-deploy|
- aiq-research|