LogoLogo
🚀 Run Maestro tests in the cloud →
  • Home
  • Star us on GitHub
  • Getting Started
    • What is Maestro?
    • Installing Maestro
      • macOS
      • Windows
      • Linux
    • Build and Install your App
      • Android
      • iOS
    • Run a Sample Flow
    • Writing Your First Flow
    • Maestro Studio
    • Running Flows on CI
  • Cloud
    • Run Maestro tests in the cloud
    • Cloud Quickstart
    • CI Integration
      • GitHub Actions
        • Maestro GitHub Action for Android
        • Maestro GitHub Action for iOS
        • Maestro GitHub Action for Flutter
      • Bitrise
      • Bitbucket Pipelines
      • CircleCI
      • Integration with any CI platform
    • Pull Request Integration
    • Cloud Reference
      • Build your app for the cloud
      • Configuring OS Version
      • Configuring device locale
      • Device timezones
      • Email Notifications
      • Slack Notifications
      • Webhook Integration
      • Managing Secrets
      • Limits
      • Reusing App Binary
      • IP Allowlist
      • System Status
  • Platform Support
    • Supported Platforms
    • Android - Views
    • Android - Jetpack Compose
    • iOS - UIKit
    • iOS - SwiftUI
    • React Native
    • Flutter
    • Web Views
    • Web (Desktop Browser)
  • Examples
    • Android contacts flow automation
    • Facebook signup flow automation
    • Advanced: Wikipedia Android
    • Page Object Model
  • CLI
    • Cloud
    • Test Suites & Reports
    • Tags
    • Record Your Flow
    • Continuous Mode
    • View Hierarchy
    • Start Device
  • API Reference
    • Commands
      • addMedia
      • assertVisible
      • assertNotVisible
      • assertTrue
      • assertWithAI
      • assertNoDefectsWithAi
      • back
      • clearKeychain
      • clearState
      • copyTextFrom
      • evalScript
      • eraseText
      • extendedWaitUntil
      • extractTextWithAI
      • hideKeyboard
      • inputText
      • killApp
      • launchApp
      • openLink
      • pressKey
      • pasteText
      • repeat
      • retry
      • runFlow
      • runScript
      • scroll
      • scrollUntilVisible
      • setAirplaneMode
      • setLocation
      • startRecording
      • stopApp
      • stopRecording
      • swipe
      • takeScreenshot
      • toggleAirplaneMode
      • tapOn
      • doubleTapOn
      • longPressOn
      • travel
      • waitForAnimationToEnd
    • Common command arguments
    • Selectors
    • Configuration
      • Workspace configuration
      • Flow configuration
      • AI configuration
  • Advanced
    • Nested Flows
    • Wait
    • Loops
    • Conditions
    • Parameters & Constants
    • JavaScript
      • Run JavaScript
      • Outputs
      • Logging
      • Access element text
      • Make HTTP requests
      • GraalJS support
      • JavaScript announcement blog
    • Specify a Device
    • Configure Permissions
    • Detect Maestro in your app
    • Configure Maestro driver timeout
    • onFlowStart / onFlowComplete hooks
    • Test in different locales
    • Structuring your test suite
  • Troubleshooting
    • Known Issues
    • Frequently Asked Questions
    • Bug Report
    • Rollback Maestro
    • Debug Output
    • HOWTOs
      • Arrange your repository for Maestro tests
      • scrollUntilVisible for fragments
  • Community
    • Contributions
    • Articles & Tutorials
    • Case Studies
    • Resources
Powered by GitBook

Read to wire into CI or scale up your testing?

  • Run Maestro tests in the cloud →
On this page
  • Maestro configuration
  • Example
  • Multiple Configs
  • Environment variables

Was this helpful?

Edit on GitHub
  1. API Reference
  2. Configuration

Workspace configuration

PreviousConfigurationNextFlow configuration

Last updated 1 month ago

Was this helpful?

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 ().

  • includeTags: list of tags to include on each run ().

  • excludeTags: list of tags to exclude on each run ().

  • executionOrder: the order to run sequential tests before running remaining tests ().

  • baselineBranch: Which branch is your baseline. Useful when integrating with Pull Requests (). Cloud only.

  • notifications: Who to notify after an Upload finishes processing (). Cloud only. You might prefer the .

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:
      - john@example.com

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

Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading
Variable name
Description
Type
Default
Further reading

Any other environment variables prefixed with MAESTRO_ will be available in your Flows as JavaScript variables. See for more information.

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

String

%highlight([%5level]) %msg%n

-

MAESTRO_CLI_LOG_PATTERN_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_URLbut 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

docs
docs
Slack integration

Sets the for logging in the console

Sets the for logging in the log file

Docs
logback layout
logback layout
Docs
Docs
Docs
Docs
docs
docs
docs
docs
Accessing variables from the shell