Maestro
Painless E2E Automation for Mobile and Web
An open-source tool for writing mobile app tests as simple YAML files, describe taps, swipes, and text input in plain text and Maestro runs them automatically on Android, iOS, or web.
Maestro is an open-source framework for writing and running automated UI tests for Android, iOS, and web apps. It lets you describe user interactions in plain YAML files rather than code, which makes tests easier to read and maintain without deep programming knowledge. A basic test might say: launch the app, tap a button labeled "Create new contact", type a name, and tap Save. Maestro runs that file and checks whether the app behaves as expected.
Tests in Maestro are called flows. Each flow is a YAML file that lists a sequence of steps using commands like launchApp, tapOn, inputText, and assertVisible. Because the flows are interpreted line by line rather than compiled, you can run them immediately after writing without a build step. The framework handles dynamic screens well: instead of requiring explicit wait commands, it detects when elements are not yet visible and waits automatically.
Maestro runs on Android emulators and real devices, iOS simulators and real devices, and web browsers. It is designed to work with apps built using React Native, Flutter, and hybrid frameworks, as well as native apps. Installation is a single command that downloads the CLI, and Java 17 or higher must already be installed.
Maestro Studio is a separate desktop app (available for macOS, Windows, and Linux) that provides a visual interface for building and inspecting flows, with an AI assistant called MaestroGPT for generating commands. Studio is free but is not open source.
Maestro Cloud is a paid service that runs your test suite in parallel across many machines, reducing execution time. The main framework is open source under the Apache 2.0 license. Community support is available via a Slack workspace.
Where it fits
- Write automated UI tests for an Android or iOS app using readable YAML instead of learning a testing framework
- Run tests without a build step, edit a YAML flow file and execute it immediately
- Use Maestro Cloud to run your test suite in parallel across many devices to reduce CI wait time
- Test React Native or Flutter apps on real devices and simulators without manual device setup