Parameters & Constants

External parameters

There might be cases where you don't want to store certain values in a test file itself (i.e. user name, password, etc.). To solve that, you can pass parameters to Maestro:

maestro test -e USERNAME=user@example.com -e PASSWORD=123 file.yaml

And then refer to them in your flow using ${name} notation:

appId: your.app.id
---
- launchApp
- inputText: ${USERNAME}
- tapOn: Next
- inputText: ${PASSWORD}

In a similar fashion, parameters can be passed to maestro cloud command:

maestro cloud -e USERNAME=user@example.com PASSWORD=123 app.apk file.yaml

Inline parameters

Constants can be declared at the flow file level, above the --- marker:

appId: your.app.id
env:
    USERNAME: user@example.com
    PASSWORD: 123
---
- inputText: ${USERNAME}
- inputText: ${PASSWORD}

Alternatively, they can be passed to a runFlow command:

appId: your.app.id
---
- runFlow:
    file: subflow.yaml
    env:
      USERNAME: user@example.com
      PASSWORD: 123
Nested Flows

Constants defined in a nested flow override parameters with the same name in the parent flow.

Accessing variables from the shell

Maestro will automatically read environment variables from the shell prefixed by MAESTRO_ and make them available in your Flows, assuming the environment variable is not manually defined in the Flow or passed as an env parameter.

export MAESTRO_FOO=bar

If you define the variable MAESTRO_FOO as above, you can simply refer to it in your Flows when running maestro test or maestro cloud like a normal environment variable:

- tapOn: ${MAESTRO_FOO}

Parameters and JavaScript

All env parameters are defined as JavaScript variables under the hood and can be accessed from the JavaScript code.

JavaScript

Last updated

Run your Maestro tests in the cloud

Get Robin →