Workspace configuration
The directory where all your Maestro-related configuration lives is a Maestro workspace (or just workspace for short).
Maestro configuration
The following properties can be configured on the workspace as a whole as part of the workspace configuration. All settings are optional.
flows
: inclusion patterns regarding what Flows to include (docs).includeTags
: list of tags to include on each run (docs).excludeTags
: list of tags to exclude on each run (docs).executionOrder
: the order to run sequential tests before running remaining tests (docs).baselineBranch
: Which branch is your baseline. Useful when integrating with Pull Requests (docs). Cloud only.notifications
: Who to notify after an Upload finishes processing (docs). Cloud only. You might prefer the Slack integration.
Platform Configuration
iOS
Following properties can be configured as platform configuration for iOS:
disableAnimations
: Disables system animations on iOS simulator by enabling Reduce Motion. Use this to avoid flakiness due to animations.
⚠️ Note: This only affects system-level animations. Custom animations like those powered by Lottie won't be disabled.
snapshotKeyHonorModalViews
: By default, Maestro shows elements visible within the current modal view context. However, in some apps, especially those using custom presentation styles or certain UI frameworks, elements may appear on modal but still hidden in hierarchy. Try setting this flag tofalse
. It allows Maestro to include those background elements as well, depending on how they’re rendered by the app.
Android
Following properties can be configured as platform configuration for Android:
disableAnimations
: Disables system animations on android emulator by disabling animations from animators, window animations and transitions. Use this to avoid flakiness due to animations.
⚠️ Note: This won't disable custom animations like those from Lottie or other animation libraries.
Example
Below is an example Maestro workspace configuration file. Typically it's named config.yaml
and placed in the .maestro
directory in your project's root:
flows:
- "subFolder/*"
includeTags:
- tagNameToInclude
excludeTags:
- tagNameToExclude
executionOrder:
continueOnFailure: false # default is true
flowsOrder:
- flowA
- flowB
# Cloud only config options
baselineBranch: main
notifications:
email:
enabled: true
recipients:
- [email protected]
# Platform Configuration
platform:
ios:
snapshotKeyHonorModalViews: false
disableAnimations: true
android:
disableAnimations: true
Multiple Configs
It's possible to have multiple config files in a repository and specify them at execution time. For example, the default config.yaml
could cover the tests typically run on the main branch, but an additional pr-config.yaml
might cover the flows and tags used when running tests on each Pull Request.
maestro cloud --config ./pr-config.yaml ./flows
Environment variables
MAESTRO_API_URL
The URL of the Maestro API to use. Probably only useful to Mobile Inc developers.
String
https://api.copilot.mobile.dev
-
MAESTRO_CLI_AI_KEY
Key for external AI service used in AI operations
String
-
MAESTRO_CLI_AI_MODEL
Model for external AI service used in AI operations. The prefix of the model decides which service to use. If none is specified, OpenAI will be used.
String
gpt-4o
for OpenAI, claude-3-5-sonnet-20240620
for Claude
-
MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED
Disables the notification displayed on each run about AI analysis
Boolean
false
-
MAESTRO_CLI_LOG_PATTERN_CONSOLE
Sets the logback layout for logging in the console
String
%highlight([%5level]) %msg%n
-
MAESTRO_CLI_LOG_PATTERN_FILE
Sets the logback layout for logging in the log file
String
%d{HH:mm:ss.SSS} [%5level] %logger.%method: %msg%n
MAESTRO_CLI_NO_ANALYTICS
Disables Maestro analytics collection
Boolean
false
-
MAESTRO_CLOUD_API_KEY
The API key to use when communicating with the Maestro cloud platform
String
-
MAESTRO_CLOUD_API_URL
Like MAESTRO_API_URL
but used for AI API requests
String
https://api.copilot.mobile.dev
-
MAESTRO_DISABLE_UPDATE_CHECK
Disable the check for newer Maestro versions when running the CLI
Boolean
false
-
MAESTRO_DRIVER_STARTUP_TIMEOUT
The maximum time to wait for a driver to start
Number
15000
MAESTRO_USE_GRAALJS
Use GraalJS instead of RhinoJS for JavaScript execution
Boolean
false
Any other environment variables prefixed with MAESTRO_
will be available in your Flows as JavaScript variables. See Accessing variables from the shell for more information.
Last updated
Was this helpful?