Parameters & Constants
Pass parameters and set environment variables in Maestro flows with env and reuse via ${}.
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 [email protected] -e PASSWORD=123 file.yamlAnd 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 [email protected] -e PASSWORD=123 app.apk file.yamlInline parameters
Constants can be declared at the flow file level, above the --- marker:
appId: your.app.id
env:
USERNAME: [email protected]
PASSWORD: 123
---
- inputText: ${USERNAME}
- inputText: ${PASSWORD}Alternatively, they can be passed to a runFlow command:
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.
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:
Note: This only works for executions of the CLI, not Maestro Studio Desktop.
Parameters and JavaScript
All env parameters are defined as JavaScript variables under the hood and can be accessed from the JavaScript code.
Setting defaults for parameters in subflows
All env declarations are also JavaScript expressions, which you can use to set a default value. This is especially useful for subflows.
Here's an example login subflow.
When you call this with no env vars, you'll get the default USERNAME and PASSWORD, but these can be provided and overridden. This is useful for keeping your tests concise in places where you'd provide the same thing again and again.
Of course, since all env declarations are also JavaScript expressions, you can also specify those parameters at call time too, and call your subflow with parameters that were passed into Maestro as environment variables.
Built-in parameters
The following parameters are built-in and available in all flows without needing to be defined:
MAESTRO_FILENAME: The filename of the current flow (e.g.flow.yaml)
Last updated
Was this helpful?
