description:Test Expo Router features on Android emulators using ADB. Use after implementing native Android features or when verifying UI behavior on Android.
user-invokable:true
---
# Android E2E Testing for Expo Router
Use `adb` to manually test Expo Router screens and components on Android emulators.
## When to Use
- After implementing or modifying native Android UI components (toolbars, tabs, menus)
- When verifying Jetpack Compose components (`@expo/ui/jetpack-compose`)
- When running the `native-navigation` or other E2E apps on Android
- Before opening a PR that touches Android-specific behavior
## Prerequisites
An Android emulator must be running. Prefer **Pixel emulators** over tablet ones for standard phone-sized testing.
```bash
# Verify emulator is connected
adb devices
# Check which emulator is running
adb -s DEVICE_ID emu avd name
# Check screen resolution (important for coordinate calculations)
adb -s DEVICE_ID shell wm size
```
## Step 1: Build and Launch
### Router E2E apps
Package name: `dev.expo.routere2e`
Each app in `apps/router-e2e/__e2e__/` has a corresponding `yarn android:<name>` script. Check `apps/router-e2e/package.json` for available scripts.
```bash
cd apps/router-e2e
yarn android:[APP_NAME] # e.g. yarn android:native-navigation
**CRITICAL: Always use `uiautomator dump` for element coordinates.** Screenshot pixel coordinates have display scaling factors that make them unreliable for `adb shell input tap`. The UI dump provides actual device coordinates.
- Verify selection states (look for checkmarks, content-desc changes)
### Check for errors
```bash
# React Native JS errors
adb logcat -d-s ReactNativeJS:E | tail-20
# Crash logs
adb logcat -b crash -d
# All recent errors
adb logcat -d*:E | tail-30
```
## Step 5: Report Results
After testing, summarize results in a table:
| Test | Result |
|------|--------|
| Navigation to screen | PASS/FAIL |
| Component renders correctly | PASS/FAIL |
| Interaction works | PASS/FAIL |
| No JS errors in logcat | PASS/FAIL |
Include details for any failures: what was expected vs what happened, relevant logcat output, and screenshots.
Preferably attach screenshots for features you tested.
## Testing Jetpack Compose Components
Components from `@expo/ui/jetpack-compose` (like `HorizontalFloatingToolbar`, `IconButton`, `Host`) render as Compose views inside React Native. In UI dumps they appear as:
-`androidx.compose.ui.platform.ComposeView` — the Compose container
description:Appium mobile testing framework for iOS and Android automation
allowed-tools:
-Bash
-Read
-Write
-Edit
-Glob
-Grep
---
# Appium Mobile Testing Skill
## Overview
This skill provides expert-level capabilities for Appium-based mobile testing, enabling iOS and Android automation for native, hybrid, and web applications.
## Capabilities
### Server Configuration
- Configure Appium server
- Set up desired capabilities
- Handle driver initialization
### iOS Testing
- iOS simulator setup
- XCUITest driver configuration
- iOS-specific gestures and interactions
### Android Testing
- Android emulator setup
- UiAutomator2 driver configuration
- Android-specific capabilities
### Application Types
- Native app testing
- Hybrid app testing (WebView)
- Mobile web testing
### Gesture Handling
- Swipe, pinch, and long-press gestures
- Multi-touch interactions
- Custom gesture sequences
### Element Interaction
- Mobile-specific locator strategies
- Accessibility ID locators
- UI Automator selectors (Android)
- iOS predicates and class chains
### Device Farm Integration
- BrowserStack integration
- Sauce Labs integration
- AWS Device Farm
### Mobile Assertions
- Mobile-specific test assertions
- Screen orientation validation
- App state verification
## Target Processes
-`mobile-testing.js` - Mobile test implementation
-`cross-browser-testing.js` - Mobile browser testing
-`e2e-test-suite.js` - Mobile E2E scenarios
## Dependencies
-`appium` - Appium server
-`webdriverio` - WebDriver client
- Mobile SDKs (Xcode, Android SDK)
## Usage Example
```javascript
{
kind:'skill',
skill:{
name:'appium-mobile',
context:{
action:'execute-tests',
platform:'iOS',
deviceName:'iPhone 14',
app:'./app/MyApp.ipa',
automationName:'XCUITest'
}
}
}
```
## Configuration
The skill supports local emulators/simulators and cloud device farms for testing across multiple devices.
يُنشئ برامج نصية لأتمتة الأجهزة المحمولة Appium على مستوى الإنتاج لنظامي التشغيل Android وiOS في Java أو Python أو JavaScript. يدعم اختبار الأجهزة الحقيقية والمحاكي محليًا وعلى سحابة TestMu AI مع أكثر من 100 جهاز حقيقي. يُستخدم عندما يطلب المستخدم أتمتة تطبيقات الهاتف المحمول، أو الاختبار على Android/iOS، أو كتابة اختبارات Appium، أو يذكر "Appium"، أو "اختبار الهاتف المحمول"، أو "جهاز حقيقي"، أو "أتمتة التطبيق". مشغلات على: "Appium"، "اختبار الهاتف المحمول"، "اختبار Android"، "اختبار iOS"، "جهاز حقيقي"، "أتمتة التطبيق"، "UiAutomator"، "XCUITest driver"، "TestMu"، "LambdaTest".
Erzeugt produktionstaugliche Appium-Mobilautomatisierungsskripts für Android und iOS in Java, Python oder JavaScript. Unterstützt das Testen realer Geräte und Emulatoren lokal und in der TestMu AI-Cloud mit über 100 realen Geräten. Verwenden Sie diese Option, wenn der Benutzer mobile Apps automatisieren, auf Android/iOS testen, Appium-Tests schreiben möchte oder „Appium“, „mobile Tests“, „reales Gerät“ oder „App-Automatisierung“ erwähnt. Auslöser bei: „Appium“, „mobiler Test“, „Android-Test“, „iOS-Test“, „reales Gerät“, „App-Automatisierung“, „UiAutomator“, „XCUITest-Treiber“, „TestMu“, „LambdaTest“.
Generates production-grade Appium mobile automation scripts for Android and iOS in Java, Python, or JavaScript. Supports real device and emulator testing locally and on TestMu AI cloud with 100+ real devices. Use when the user asks to automate mobile apps, test on Android/iOS, write Appium tests, or mentions "Appium", "mobile testing", "real device", "app automation". Triggers on: "Appium", "mobile test", "Android test", "iOS test", "real device", "app automation", "UiAutomator", "XCUITest driver", "TestMu", "LambdaTest".
Genera scripts de automatización móvil de Appium de nivel de producción para Android e iOS en Java, Python o JavaScript. Admite pruebas de dispositivos reales y emuladores localmente y en la nube TestMu AI con más de 100 dispositivos reales. Úselo cuando el usuario solicite automatizar aplicaciones móviles, realizar pruebas en Android/iOS, escribir pruebas de Appium o mencione "Appium", "pruebas móviles", "dispositivo real", "automatización de aplicaciones". Activadores en: "Appium", "prueba móvil", "prueba de Android", "prueba de iOS", "dispositivo real", "automatización de aplicaciones", "UiAutomator", "controlador XCUITest", "TestMu", "LambdaTest".