* chore: upgrade maintenance scripts to robust PyYAML parsing - Replaces fragile regex frontmatter parsing with PyYAML/yaml library - Ensures multi-line descriptions and complex characters are handled safely - Normalizes quoting and field ordering across all maintenance scripts - Updates validator to strictly enforce description quality * fix: restore and refine truncated skill descriptions - Recovered 223+ truncated descriptions from git history (6.5.0 regression) - Refined long descriptions into concise, complete sentences (<200 chars) - Added missing descriptions for brainstorming and orchestration skills - Manually fixed imagen skill description - Resolved dangling links in competitor-alternatives skill * chore: sync generated registry files and document fixes - Regenerated skills index with normalized forward-slash paths - Updated README and CATALOG to reflect restored descriptions - Documented restoration and script improvements in CHANGELOG.md * fix: restore missing skill and align metadata for full 955 count - Renamed SKILL.MD to SKILL.md in andruia-skill-smith to ensure indexing - Fixed risk level and missing section in andruia-skill-smith - Synchronized all registry files for final 955 skill count * chore(scripts): add cross-platform runners and hermetic test orchestration * fix(scripts): harden utf-8 output and clone target writeability * fix(skills): add missing date metadata for strict validation * chore(index): sync generated metadata dates * fix(catalog): normalize skill paths to prevent CI drift * chore: sync generated registry files * fix: enforce LF line endings for generated registry files
67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
---
|
|
name: android_ui_verification
|
|
description: Automated end-to-end UI testing and verification on an Android Emulator using ADB.
|
|
risk: safe
|
|
source: community
|
|
date_added: "2026-02-28"
|
|
---
|
|
|
|
# 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.
|