<< All versions

Skill v1.0.1

currentAutomated scan100/100
yacosta738/agent-harness/android-emulator-qa

+7 new

──Details
PublishedNovember 8, 2026 at 07:45 AM
Content Hashsha256:bca96a31c592f177...
Git SHAd9ccd2a48006
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 3.3 KB)
SKILL.md3.3 KBactive
SKILL.md · 115 lines · 3.3 KB

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." metadata: version: "1.0.1"


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 (scripts live in skills/android-emulator-qa/scripts/):
  • python3 skills/android-emulator-qa/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 skills/android-emulator-qa/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>
← v1.0.0All versions