Listed with the trade-off that comes with each. For some teams the right answer on this page is not us, and it is more useful to say so.
Best forThe fastest path from nothing to a running mobile test. Flows are declared in YAML and run on both iOS and Android, with built-in tolerance for the timing issues that cause most mobile flake.
Trade-offYAML flows are deliberately simple; complex conditional logic is harder to express than in a general-purpose language.
Espresso
Open source · Android onlyBest forGoogle's own Android framework. Runs in-process, which makes it the fastest and least flaky option on Android.
Trade-offAndroid only — you need a second framework for iOS.
XCUITest
Open source · iOS onlyBest forApple's own iOS framework, integrated with Xcode and the most stable choice on that platform.
Trade-offiOS only, and Swift/Objective-C only.
Detox
Open source · React NativeBest forReact Native apps. Its grey-box approach synchronises with the app's own state, so it waits for network calls and animations without explicit sleeps.
Trade-offRequires instrumenting the app, and is aimed squarely at React Native rather than native apps generally.
QAEverest
Commercial platformBest forTeams who want mobile coverage generated from the same user stories as their web and API tests, executed on connected device farms, reported in one place.
Trade-offA hosted platform. For a single-platform native app with an in-house team, Espresso or XCUITest will be faster and cheaper.