Mobile Testing with Robonito
Robonito lets you record and replay automated tests on native mobile applications without writing code. You interact with the app naturally on an emulator or simulator, and Robonito captures every tap, swipe, input, variable, and assertion as a reusable, modular test step.
Supported Platforms
| Platform | File Type | System Requirement | Automation Driver |
|---|---|---|---|
| 🤖 Android | .apk | Windows, macOS, or Linux | UiAutomator2 (via Appium / ADB) |
| 🍏 iOS | .ipa (simulator build) | macOS with Apple Silicon (M1/M2/M3/M4) | XCUITest (via Appium) |
iOS Requirement:
iOS simulation requires Xcode installed from the Mac App Store and macOS running on Apple Silicon. It cannot run on Windows or Linux. See the iOS Setup guide for full configuration steps.
How to Get Started
Follow these steps in order to set up and run your first mobile test:
Step 1 — Configure Mobile Environment
Before recording, verify your environment has the required Android SDK tools, emulator images, and Appium drivers installed. Robonito handles this automatically through the Mobile Setup wizard.
If you are automating iOS apps on a Mac, complete the Xcode simulator prerequisites.
➡️ iOS Setup →
Step 2 — Create a Mobile Test Case
Initialize a new test case inside a Mobile suite and choose your target platform (Android or iOS).
➡️ Create a Mobile Test Case →
Step 3 — Record Your Test
Upload your .apk or .ipa build, launch the emulator mirror, and interact with the app.
What Gets Recorded
During an interactive mobile recording session, Robonito automatically captures:
| Interaction / Tool | Recorded Step Type | Description |
|---|---|---|
| Tap | mobile-tap | Tapping on native buttons, tab bars, icons, or links. |
| Text Input | mobile-input | Entering text dynamically into inputs or search bars (supports {{variable}} interpolation). |
| Swipe & Scroll | mobile-swipe | Swiping vertically or horizontally across scrollable viewports. |
| System Buttons | mobile-system-button | Hardware navigation (Back, Home, Enter, Recent Apps). |
| Dynamic Variables | mobile-local-variable | Extracting text, attribute values, or IDs from mobile elements to reuse downstream. |
| Geolocation | mobile-geolocation | Setting simulated GPS coordinates (Latitude, Longitude, Altitude) during the test. |
| Mobile Assertions | mobile-assert | Verifying element visibility, text equality, or enabled state. |
Each action becomes an independent test step that can be replayed, edited, reordered, or executed in parallel across your regression suites.
Android vs. iOS: Key Differences
| Aspect | Android | iOS |
|---|---|---|
| OS Requirement | Windows, Mac, or Linux | macOS with Apple Silicon only |
| Application Build | Standard .apk | Debug .ipa signed for simulator architecture |
| Targeting Selectors | Resource IDs (id), Accessibility labels (content-desc), XPath | Accessibility Identifiers (accessibilityIdentifier), XPath |
| Hardware Buttons | Back, Home, Recent Apps | Home button, navigation gestures |
| Permission Alerts | Handled natively via system dialog taps | iOS system alerts (require explicit interaction steps) |
| Emulator Startup | Fast warm-reuse with persistent ADB channel | Xcode Simulator device runtime |
Android-Specific Notes
- Resource IDs: Always prefer Android Resource IDs (e.g.,
com.example.app:id/submit_button) orcontent-descfor resilient locator stability. - Warm Emulator Reuse: Robonito automatically detects and attaches to warm, running emulators, cutting startup delays between recording and test runs to seconds.
- Windows Acceleration: On Windows systems, opt-in to the Windows Defender exclusion during Mobile Setup to eliminate emulator file scanning latency.
➡️ Comprehensive Android Testing Guide →
iOS-Specific Notes
- Simulator Build Signing: App Store distribution builds cannot run in the simulator. Ensure your iOS engineering team builds the
.ipawithSDK=iphonesimulator. - Accessibility Identifiers: Ask your iOS developers to add
accessibilityIdentifierto key interactive elements for the cleanest automation targeting. - Bundle ID: Provide the application's unique Bundle ID (e.g.,
com.company.myapp) in the launch configuration.
➡️ Comprehensive iOS Testing & Setup Guide →
Mobile Assertions
Validate element visibility, text matches, accessibility attributes, transient toast notifications, or pixel-perfect visual snapshots:
| Category | Available Assertions |
|---|---|
| Element State | Element Visible, Element Not Visible, Enabled, Disabled, Selected, Focused |
| Text & Content | Text Equals, Text Contains, Starts With, Ends With, Regex (supports {{variables}}) |
| Attributes | Resource ID, Accessibility Identifier, Class Name, Bounding Box |
| Visual Regression | Full-screen or element reference snapshot with pixel diff heatmap and tolerance slider |
| System Events | Android Toast notifications, Activity name, and Screen Orientation |
➡️ Complete Mobile Assertions Reference →
Executing Mobile Tests
To run your saved mobile tests:
- Open any mobile test case in your workspace.
- Click Execute and choose Local Execution.
- Robonito launches the emulator or attaches to a warm running instance, bootstraps the application build, and replays all recorded gestures, variable extractions, and assertions with millisecond precision.
- Detailed execution logs, timing metrics, and failure screenshots are recorded in the test execution report.