Mobile App Tester
Overview
Execute automated mobile application testing on iOS simulators and Android emulators covering UI interactions, navigation flows, gesture handling, and platform-specific behaviors. Supports Appium, Detox (React Native), XCUITest (iOS native), Espresso (Android native), and Maestro for cross-platform mobile testing.
Prerequisites
- Mobile testing framework installed (Appium, Detox, Maestro, or native XCUITest/Espresso)
- iOS Simulator via Xcode (macOS only) or Android Emulator via Android SDK
- Application build artifact (
.app, .apk, or .ipa) or bundled dev server (React Native)
- Appium drivers installed (
uiautomator2 for Android, xcuitest for iOS) if using Appium
- Node.js for JavaScript-based test runners
Instructions
- Configure the test environment:
- List target devices/simulators: specify OS versions, screen sizes, and orientations.
- Build the application for testing (
xcodebuild, ./gradlew assembleDebug, or npx react-native build).
- Start the emulator/simulator or connect physical devices.
- Install the app on the target device.
- Create test cases for core mobile interactions:
- Tap and navigation: Tap buttons, navigate between screens, verify back navigation.
- Text input: Fill forms, verify keyboard behavior, test autocomplete and paste.
- Scrolling: Scroll lists, verify lazy loading, test pull-to-refresh.
- Gestures: Swipe (carousel), pinch-to-zoom, long press, drag-and-drop.
- System interactions: Handle permission dialogs, push notifications, deep links.
- Test platform-specific behaviors:
- iOS: Safe area insets, notch handling, Dynamic Type, VoiceOver accessibility.
- Android: Back button behavior, multi-window, different navigation patterns, TalkBack.
- Both: Screen rotation (portrait/landscape), dark mode, low battery mode.
- Implement device-specific test configurations:
- Define capability sets for each device/OS combination.
- Use test tagging to run subsets on specific platforms (
@ios, @android).
- Configure screenshot capture on failure for visual debugging.
- Handle asynchronous mobile behaviors:
- Wait for animations to complete before assertions.
- Handle network loading spinners with explicit waits.
- Account for system dialogs (permissions, updates) that interrupt test flow.
- Run the test suite and capture results:
- Execute tests per platform:
npx detox test --configuration ios.sim.debug.