Maestro Intro

TestingBot provides a grid of remote iOS simulators and Android emulators, ready to run your Maestro flows.

Maestro is a mobile UI testing framework, which supports testing on both iOS and Android. You write flows, which are story-like tests, where you describe a specific flow in your mobile application. For example, you could have a login flow, or a checkout flow.

Maestro is a relatively new test framework and offers several nice features, such as:

  • Built-in tolerance to flakiness: various mechanisms are added to try and prevent flaky tests, for example locators that have changed or moved positions.
  • Automatic waits: Maestro will automatically wait for certain conditions, which means you do not have to worry about delays, or adding sleep commands to your tests.
  • Declarative syntax, which is defined in Flow (yaml) files.


Installing Maestro locally on your computer is not a requirement, but it might help to first run Flows on your local computer before running in the cloud, to make sure the flow test files are valid.

To install Maestro CLI, please install it like this:

curl -Ls "https://get.maestro.mobile.dev" | bash

To run mobile app tests with Maestro on TestingBot, you will first need to upload your iOS or Android app to TestingBot. Once that is done, you will need to zip the Flow files together and upload these through the TestingBot API.

Finally, you can run a REST API call to start the Maestro tests on one or more iOS simulators or Android emulators.

Upload Mobile App

You can upload your .zip file (in case of iOS testing, see here how to do this), or your .apk file (Android) to TestingBot Storage through the REST-API.
Please see the example below on how to do this with cURL:

curl -u api_key:api_secret \
-X POST "https://api.testingbot.com/v1/app-automate/maestro/app" \
-F "file=@/path/to/app/file/sample-debug.zip"

The API response will include an id response, which you can use in the other API calls.

    "id": 4012

Upload Maestro Flows

Maestro Flow files are .yaml files which contain the actions that need to be performed. You can zip these together and upload to TestingBot by using the following command:

zip -r flows.zip *.yaml

To upload the Flows zip file, please follow the example below.

curl -u api_key:api_secret \
-X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/tests" \
-F "file=@/path/to/app/file/flows.zip"

Replace the :id with the identifier you received during the app upload call. (In this example 4012)

Run Maestro tests

Once you've uploaded both your app and Flows zip file, you can run the Maestro tests on the TestingBot cloud.

Specify one or more capabilities, to indicate on which iOS simulators or Android emulators you want to run your tests on.

Select a Device Name

Replace the :id with the identifier you received during the app upload call. (In this example 4012)

View Maestro Results

The results of your Maestro tests will be available in the TestingBot dashboard.

Each test result contains a video, test logs and other meta data generated during the test run.

Example Maestro Flow

Below is a simple example Flow, where we input two values in the TestingBot example app.

appId: com.testingbot.sample
- tapOn: inputA
- inputText: 3
- tapOn: inputB
- inputText: 5