explaingit

mobile-dev-inc/maestro

14,035KotlinAudience · developerComplexity · 2/5LicenseSetup · moderate

TLDR

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.

Mindmap

mindmap
  root((maestro))
    How it works
      YAML flow files
      No build step
      Auto-wait for elements
    Platforms
      Android devices
      iOS devices
      Web browsers
    Tools
      Maestro Studio
      MaestroGPT AI
      Maestro Cloud
    Installation
      Single CLI command
      Java 17 required
      Cross-platform
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Write automated UI tests for an Android or iOS app using readable YAML instead of learning a testing framework

USE CASE 2

Run tests without a build step, edit a YAML flow file and execute it immediately

USE CASE 3

Use Maestro Cloud to run your test suite in parallel across many devices to reduce CI wait time

USE CASE 4

Test React Native or Flutter apps on real devices and simulators without manual device setup

Tech stack

KotlinYAMLJava

Getting it running

Difficulty · moderate Time to first run · 30min

Java 17 or higher must be installed before running the Maestro CLI, the installer does not bundle it.

Free to use, modify, and distribute for any purpose, including commercial projects, as long as you keep the license notice.

In plain English

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.

Copy-paste prompts

Prompt 1
Write a Maestro YAML flow to test a login screen: launch the app, type an email address, type a password, tap the Login button, and assert the home screen is visible.
Prompt 2
How do I install the Maestro CLI and run my first test on an Android emulator? Give me the exact steps including the Java requirement.
Prompt 3
My Maestro test sometimes fails because a button hasn't loaded yet. How does Maestro handle elements that appear slowly or load dynamically?
Prompt 4
Show me how to use Maestro to test a React Native app on an iOS simulator, step by step from CLI install to running the flow.
Open on GitHub → Explain another repo

← mobile-dev-inc on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.