android_ui_verification
Automated end-to-end UI testing and verification on an Android Emulator using ADB.
Works with
--- name: android_ui_verification description: Automated end-to-end UI testing and verification on an Android Emulator using ADB. license: MIT --- # Android UI Verification Skill This skill provides a systematic approach to testing React Native applications on an Android emulator using ADB commands. It allows for autonomous interaction, state verification, and visual regression checking. ## When to Use - Verifying UI changes in React Native or Native Android apps. - Autonomous debugging of layout issues or interaction bugs. - Ensuring feature functionality when manual testing is too slow. - Capturing automated screenshots for PR documentation. ## 🛠 Prerequisites - Android Emulator running. - `adb` installed and in PATH. - Application in debug mode for logcat access. ## 🚀 Workflow ### 1. Device Calibration Before interacting, always verify the screen resolution to ensure tap coordinates are accurate. ```bash adb shell wm size ``` *Note: Layouts are often scaled. Use the physical size returned as the base for coordinate calculations.* ### 2. UI Inspection (State Discovery) Use the `uiautomator` dump to find the exact bounds of UI elements (buttons, inputs). ```bash adb shell uiautomator dump /sdcard/view.xml && adb pull /sdcard/view.xml ./artifacts/view.xml ``` Search the `view.xml` for `text`, `content-desc`, or `resource-id`. The `bounds` attribute `[x1,y1][x2,y2]` defines the clickable area. ### 3. Interaction Commands - **Tap**: `adb shell input tap <x> <y>` (Use the center of the element bounds). - **Swipe**: `adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>` (Used for scrolling). - **Text Input**: `adb shell input text "<message>"` (Note: Limited support for special characters). - **Key Events**: `adb shell input keyevent <code_id>` (e.g., 66 for Enter). ### 4. Verification & Reporting #### Visual Verification Capture a screenshot after interaction to confirm UI changes. ```bash adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png ./artifacts/test_result.png ``` #### Analytical Verification Monitor the JS console logs in real-time to detect errors or log successes. ```bash adb logcat -d | grep "ReactNativeJS" | tail -n 20 ``` #### Cleanup Always store generated files in the `artifacts/` folder to satisfy project organization rules. ## 💡 Best Practices - **Wait for Animations**: Always add a short sleep (e.g., 1-2s) between interaction and verification. - **Center Taps**: Calculate the arithmetic mean of `[x1,y1][x2,y2]` for the most reliable tap target. - **Log Markers**: Use distinct log messages in the code (e.g., `✅ Action Successful`) to make `grep` verification easy. - **Fail Fast**: If a `uiautomator dump` fails or doesn't find the expected text, stop and troubleshoot rather than blind-tapping. ## Limitations - Use this skill only when the task clearly matches the scope described above. - Do not treat the output as a substitute for environment-specific validation, testing, or expert review. - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
More Testing skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
setup-pre-commit
mattpocock/skills
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

