Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,701 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bravo — an internal fork of Maestro

Bravo extends Maestro with Apple TV (tvOS) support and for driving canvas-based UIs (e.g. Lightning/WebGL TV apps). It tracks upstream Maestro and adds Bravo-specific capabilities.


Fork commit registry

Bravo is a minimal, linear stack of feature commits on top of upstream/main (the original Maestro). The table below registers every fork commit so the delta to upstream is always auditable. It is keyed on commit subject + purpose, not SHA — rebasing on upstream rewrites the SHAs, but the subjects are stable. Keep commits minimal: prefer amending an existing commit over adding a new one. See CLAUDE.md for the full workflow.

# Commit subject Purpose Upstream
1 feat: setup Bravo fork README rebrand, CLAUDE.md, the update-from-upstream skill, this registry, the major.minor.patch.build versioning scheme (CLI_VERSION tracks Maestro; the fork-owned BRAVO_BUILD adds a 4th segment, auto-incremented at release time by publish-cli, so fork-only fixes ship without drifting from upstream), and the houwert.dev distribution — releases land on DouweBos/Bravo and the installer (curl -fsSL https://houwert.dev/bravo/get | bash) plus CLI update-check/changelog point at the houwert.dev reverse proxy instead of upstream Maestro. — (fork-only)
2 fix(web): prefer data-testid for element selection Web driver selects elements by data-testid first for stabler Lightning/WebGL selection. not yet upstreamed
3 feat(tvos): add apple tv support Apple TV (tvOS) driver, device handling, RN Expo tvOS demo app, and tvOS e2e flows. PR #3021
4 feat(web): expand web driver keyboard support Maps REMOTE_DPAD keycodes (arrows + center) to Selenium arrow keys for Arrow-based navigation on Lightning web apps. not yet upstreamed
5 feat(web): detect web flows from a URL-shaped appId FileUtils.isWebFlow() also treats an http(s):// appId as a web target, so a flow can drive the web driver via appId alone (no separate url: field). not yet upstreamed
6 feat(web): expose focus state to the focused selector Emits focused into the typed TreeNode.focused from document.activeElement (real web focus) or a data-focused flag, so focused: true selectors resolve on the web driver — including canvas UIs (Lightning), where the canvas itself is always the active element. not yet upstreamed
7 fix(web): honor -p web when selecting the web device An explicit --platform web forces web-device inclusion, so flows whose appId is a runtime variable (resolved via -e APP_ID=…) pick the web driver instead of failing with "0 devices connected". not yet upstreamed
8 feat(cli): restore bundled Maestro Studio Reverts upstream's removal of the bundled Studio (#3299): restores the maestro-studio:server/web modules and the full studio command so maestro studio launches the local web Studio again instead of only printing a desktop-app download link. reverts upstream (fork-only)

Remotes / staying in sync

Remote URL Role
origin https://github.com/DouweBos/Bravo.git The fork; main is canonical.
upstream https://github.com/mobile-dev-inc/Maestro.git Original Maestro; we rebase onto upstream/main.

To pull in the latest Maestro, rebase the fork on upstream — use the update-from-upstream skill (Claude Code), or manually: git fetch upstream && git rebase upstream/main && git push --force-with-lease origin main.


Tip

Great things happen when testers connect — Join the Maestro Community

Maestro logo

Maestro is an open-source framework that makes UI and end-to-end testing for Android, iOS, and web apps simple and fast.
Write your first test in under five minutes using YAML flows and run them on any emulator, simulator, or browser.


Table of Contents


Why Maestro?

Maestro is built on learnings from its predecessors (Appium, Espresso, UIAutomator, XCTest, Selenium, Playwright) and allows you to easily define and test your Flows.

By combining a human-readable YAML syntax with an interpreted execution engine, it lets you write, run, and scale cross-platform end-to-end tests for mobile and web with ease.

  • Cross-platform coverage – test Android, iOS, and web apps (React Native, Flutter, hybrid) on emulators, simulators, or real devices.
  • Human-readable YAML flows – express interactions as commands like launchApp, tapOn, and assertVisible.
  • Resilience & smart waiting – built-in flakiness tolerance and automatic waiting handle dynamic UIs without manual sleep() calls.
  • Fast iteration & simple install – flows are interpreted (no compilation) and installation is a single script.

Simple Example:

# flow_contacts_android.yaml

appId: com.android.contacts
---
- launchApp
- tapOn: "Create new contact"
- tapOn: "First Name"
- inputText: "John"
- tapOn: "Last Name"
- inputText: "Snow"
- tapOn: "Save"

Getting Started

Maestro requires Java 17 or higher to be installed on your system. You can verify your Java version by running:

java -version

Installing the CLI:

Run the following command to install Bravo on macOS, Linux or Windows (WSL):

curl -fsSL "https://houwert.dev/bravo/get" | bash

This installs the Bravo CLI (a drop-in maestro command) from the Bravo distribution — see Fork commit registry for how it's served. To install a specific version, set MAESTRO_VERSION (e.g. MAESTRO_VERSION=2.6.1) before running.

Upstream Maestro installs via curl -fsSL "https://get.maestro.mobile.dev" | bash — use the Bravo URL above instead to get the Bravo multi-platform build.

The links below will guide you through the next steps.


Resources & Community


Contributing

Maestro is open-source under the Apache 2.0 license — contributions are welcome!

If you find Maestro useful, ⭐ star the repository to support the project.


Maestro Studio – Test IDE

Maestro Studio Desktop is a lightweight IDE that lets you design and execute tests visually — no terminal needed. It is also free, even though Studio is not an open-source project. So you won't find the Maestro Studio code here.

  • Simple setup – just download the native app for macOS, Windows, or Linux.
  • Visual flow builder & inspector – record interactions, inspect elements, and build flows visually.

Download Maestro Studio


Maestro Cloud – Parallel Execution & Scalability

When your test suite grows, run hundreds of tests in parallel on dedicated infrastructure, cutting execution times by up to 90%. Includes built-in notifications, deterministic environments, and complete debugging tools.

Pricing for Maestro Cloud is completely transparent and can be found on the pricing page.

👉 Start your free 7-day trial

  Built with ❤️ by Maestro.dev

About

Fork of Maestro, extended for tvOS and canvas-based (Lightning/WebGL) UI testing

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages