Native iOS and Android App Testing on Real Devices
An emulator will not show you the push permission prompt, the keyboard that covers your button or the crash on a real iPhone. Install your .ipa or .apk on a real device, drive it by hand, with Appium, or with an AI agent, and see the network calls behind each screen.
XCUITest and UiAutomator2 via Appium
Run your Appium suite with the XCUITest driver on iOS and UiAutomator2 on Android, against real hardware. Same capabilities, no code changes beyond the endpoint.
Live Control in the Browser
Upload a build, open it on a real device and use it: touch, gestures, keyboard, with live video and audio. Reproduce a bug by hand before you automate it.
Driven by an AI Agent over MCP
Claude, Cursor or your own agent can explore the app, record the session as video and steps, and attach them to a defect in Jira or Azure DevOps.
Network Capture and Mocking
Capture the traffic of a native app, not just a web view, on both iOS and Android. Mock a response on the device to test the error state without touching the backend.
Crashes Captured and Grouped
App crashes during a session are captured with a readable stack trace and grouped by signature, so you fix the bug rather than count the failures.
Language, Location and Accessibility
Switch the device or app language, set the location, and run VoiceOver on iPhone and iPad or TalkBack on Android with a live transcript of what is spoken.
Point Your Native Suite at a Real Device
Standard Appium capabilities. Only the endpoint changes.
import { remote } from 'webdriverio';
const driver = await remote({
protocol: 'https',
hostname: '<subdomain>.robotactions.com',
port: 443,
path: '/',
headers: { Authorization: `Bearer ${process.env.RA_API_TOKEN}` },
capabilities: {
platformName: 'iOS',
'appium:automationName': 'XCUITest',
'appium:bundleId': 'com.example.myapp'
}
});
await driver.$('~login-button').click();
await driver.deleteSession();Test Your Own Build
The free tier gives you one device and needs no credit card. Upload your build and see how it behaves outside an emulator.