Install
$ agentstack add skill-ironbee-ai-ironbee-devtools-skills-mobile-testing ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Mobile Testing Skill
Automated Android app testing on an emulator using the [Android DevTools CLI](../ironbee-android-devtools-cli/SKILL.md). Drives an AVD over adb: connect, act on the UI, read the UI/accessibility tree, capture screenshots/recordings/logcat, and verify.
When to Use
This skill activates when:
- User asks to test an Android app or mobile UI flow
- User wants to automate taps/swipes/typing on an emulator
- User needs to verify Android app behavior (navigation, forms, login/checkout)
- User wants to capture logcat or app performance during a flow
- User wants to inspect, mock, or intercept the app's HTTP(S) requests, or correlate them to a backend by trace id
- User mentions an AVD, emulator, deep link, or
adb
Emulator only — no physical devices, no iOS. For web pages use [browser-testing](../browser-testing/SKILL.md); for server APIs use [backend-testing](../backend-testing/SKILL.md).
Verification model
There is no assert tool. Trigger an action, then read raw observations and judge for yourself. Default to the UI tree (a11y take-ui-snapshot) — it is structured, gives stable refs, and is the cheap way to confirm state. Screenshot only for visual-only state or once after a screen change, not after every step.
Capabilities
Connect & app lifecycle
ironbee-android-devtools-cli --json device list-targets
ironbee-android-devtools-cli device connect --serial emulator-5554
ironbee-android-devtools-cli device connect --launch-mode managed --avd-name Pixel_7_API_34
ironbee-android-devtools-cli device launch-app --package-name com.example.app
ironbee-android-devtools-cli device terminate-app --package-name com.example.app
ironbee-android-devtools-cli device set-orientation --orientation landscape
ironbee-android-devtools-cli device disconnect
Read the UI
ironbee-android-devtools-cli --json a11y take-ui-snapshot
ironbee-android-devtools-cli --json a11y find-element --text "Sign in"
Interact (prefer ref/selector over pixels)
ironbee-android-devtools-cli interaction tap --ref e5
ironbee-android-devtools-cli interaction tap --text "Sign in"
ironbee-android-devtools-cli interaction input-text --resource-id "com.example.app:id/email" --text "a@b.com"
ironbee-android-devtools-cli interaction scroll --direction down
ironbee-android-devtools-cli interaction swipe --x1 540 --y1 1600 --x2 540 --y2 400
ironbee-android-devtools-cli interaction long-press --ref e9
ironbee-android-devtools-cli interaction press-key --key BACK
ironbee-android-devtools-cli interaction deep-link --uri "myapp://product/42"
Synchronize
ironbee-android-devtools-cli sync wait-for-network-idle
Capture & observe
ironbee-android-devtools-cli content take-screenshot --name after-login
ironbee-android-devtools-cli content start-recording
ironbee-android-devtools-cli content stop-recording --name checkout-flow
ironbee-android-devtools-cli --json o11y log-read --tail 200 --level ERROR
ironbee-android-devtools-cli --json o11y get-perf-metrics --package-name com.example.app --activity .MainActivity
Capture / mock app HTTP traffic (Frida OkHttp hook; rootable emulator)
Network capture is forward-looking — start it, trigger traffic, then read. The first get-http-requests call starts capture; OkHttp-based stacks only (React Native/Expo, Retrofit, HttpURLConnection); native/Flutter/Cronet are not covered.
ironbee-android-devtools-cli --json o11y new-trace-id # pin a trace id for backend correlation
ironbee-android-devtools-cli --json o11y get-http-requests # first call starts capture
ironbee-android-devtools-cli --json o11y get-http-requests --url-pattern "*/api/*" --include-headers --include-bodies
ironbee-android-devtools-cli --json stub mock-http-response --url-glob "https://api.example.com/me" --status 200 --body '{"name":"Alice"}'
ironbee-android-devtools-cli --json stub intercept-http-request --url-glob "https://api.example.com/*" --set-headers '{"X-Test":"1"}'
ironbee-android-devtools-cli --json stub list
ironbee-android-devtools-cli stub clear
Basic Testing Workflow
- Connect:
device list-targetsthendevice connect(attach by serial, or managed by AVD). - Launch:
device launch-app --package-name. - Snapshot:
a11y take-ui-snapshotto get refs (e1, e2) for stable targeting. - Interact: tap/input-text/scroll using
--refor a selector (--resource-id/--text/--content-desc). - Sync:
sync wait-for-network-idleafter actions that fetch data. - Verify: re-read the UI tree (or screenshot for visual-only state).
- Document: report results.
End-to-End: login flow with logcat correlation
SESSION="--session-id login"
ironbee-android-devtools-cli $SESSION device connect --serial emulator-5554
ironbee-android-devtools-cli $SESSION device launch-app --package-name com.example.app
# Stream logcat from now on; capture the followId from the output
ironbee-android-devtools-cli $SESSION --json o11y log-follow
# Find fields, type, submit
ironbee-android-devtools-cli $SESSION --json a11y take-ui-snapshot
ironbee-android-devtools-cli $SESSION interaction input-text --resource-id "com.example.app:id/username" --text "alice"
ironbee-android-devtools-cli $SESSION interaction input-text --resource-id "com.example.app:id/password" --text "secret"
ironbee-android-devtools-cli $SESSION interaction tap --text "Sign in"
# Let traffic settle, then verify UI + check for errors in the buffered logs
ironbee-android-devtools-cli $SESSION sync wait-for-network-idle
ironbee-android-devtools-cli $SESSION --json a11y take-ui-snapshot
ironbee-android-devtools-cli $SESSION --json o11y log-get-followed --follow-id --level ERROR
# Cleanup
ironbee-android-devtools-cli $SESSION o11y log-stop-follow --follow-id
ironbee-android-devtools-cli session delete login
End-to-End: deep link into a screen and verify
SESSION="--session-id deeplink"
ironbee-android-devtools-cli $SESSION device connect --serial emulator-5554
ironbee-android-devtools-cli $SESSION interaction deep-link --uri "myapp://product/42" --package-name com.example.app
ironbee-android-devtools-cli $SESSION sync wait-for-network-idle
ironbee-android-devtools-cli $SESSION --json a11y find-element --text "Add to cart"
Best Practices
- Use sessions (
--session-id) for multi-step flows — the emulator connection is pinned to the session. - Prefer the UI tree over screenshots — it is structured, cheaper, and gives stable refs.
- Target by ref or selector, not pixels — pixels break across screen sizes and layout changes.
- Wait for network idle after actions that fetch data, before reading state.
- Terminate the app (
device terminate-app) to reset state between trigger-and-verify cycles. - Treat emulator perf as comparative only —
o11y get-perf-metricsnumbers are not real-device representative. - Disconnect: in
managedmodedevice disconnectshuts the AVD down; inattachmode it leaves it running. - Batch long flows with
run execute --code "..."andcallTool()to cut round-trips (onlycallToolis available — nopage).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ironbee-ai
- Source: ironbee-ai/ironbee-devtools-skills
- License: MIT
- Homepage: https://ironbee.ai/products/ironbee-devtools
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.