---
title: Maestro Test Options | TestingBot
description: 'Reference for Maestro test options on TestingBot: Maestro version, flow
  selection, env variables, tags, geolocation, network throttling, timezone, locale
  and shard splits.'
source_url:
  html: https://testingbot.com/support/app-automate/maestro/options
  md: https://testingbot.com/support/app-automate/maestro/options/index.md
---
# Maestro Test Options

When running Maestro tests on TestingBot, you can customize the test execution using various options. These options are passed when [starting a test run](https://testingbot.com/support/app-automate/maestro/api#run) via the API.

Options are organized into two categories:

- **maestroOptions** : Options specific to Maestro execution (version, environment variables, flows, tags)
- **capabilities** : Device and test configuration options (device, orientation, locale, network, etc.)

## Quick Reference

All available options at a glance:

### Maestro Options

| Option | Type | Description |
| --- | --- | --- |
| `version` | string | Maestro CLI version to use (e.g., "2.0.10") |
| `flows` | array | Specific flow files to run (e.g., ["login.yml", "checkout.yml"]) |
| `env` | object | Environment variables to pass to flows |
| `includeTags` | array | Only run flows with these tags |
| `excludeTags` | array | Skip flows with these tags |
| `shardSplit` | number | Split flows across N parallel sessions |
| `showKeyboard` | boolean | Show the soft keyboard on Android (default: false) |
| `commitSha` | string | Git commit SHA for CI/CD tracking |
| `pullRequestId` | string | Pull request ID for CI/CD tracking |
| `repoName` | string | Repository name (e.g., GitHub repo slug) |
| `repoOwner` | string | Repository owner (e.g., GitHub org or username) |

### Capability Options

| Option | Type | Description |
| --- | --- | --- |
| `platformName` | string | Platform: "Android" or "iOS" (required) |
| `version` | string | OS version (required) |
| `deviceName` | string | Device name (required) |
| `name` | string | Test name shown in dashboard |
| `build` | string | Build name for grouping tests |
| `groups` | comma-separated strings | Groups to which the test belongs, visible in the dashboard |
| `orientation` | string | "PORTRAIT" (default) or "LANDSCAPE" |
| `locale` | string | Device locale (e.g., "en\_US", "de\_DE") |
| `timeZone` | string | Device timezone (e.g., "America/New\_York") |
| `googlePlayStore` | boolean | Use Google Play Store Android emulator. |
| `throttle_network` | string | Network preset: "Edge", "3G", "4G", "airplane" |
| `testingbot.geoCountryCode` | string | Route traffic through specific country (ISO code) |

## Set Maestro Version

By default, TestingBot runs your Maestro flows with the latest version of the Maestro CLI.

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.apk ./flows \
      --device "Pixel 8" \
      --deviceVersion "14" \
      --maestro-version "2.0.10"

If you need a specific version for compatibility, specify the `version` option in `maestroOptions`.

| Option | Type | Example |
| --- | --- | --- |
| `maestroOptions.version` | string | "2.0.10" |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "version": "2.0.10"
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

Replace `:id` with your project ID from the [app upload](https://testingbot.com/support/app-automate/maestro/api#uploadApp).

## Select Specific Flows

By default, TestingBot runs all flow files in your zip archive. To run only specific flows, use the option below.

### Use Cases

- Run a subset of flows for faster feedback during development
- Execute specific test scenarios without modifying your test suite
- Re-run failed flows without running the entire suite

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

With the CLI, you specify flows directly as arguments:

    # Run specific flow files
    testingbot maestro app.apk login.yml checkout.yml --device "Pixel 8"
    
    # Run flows from a specific directory
    testingbot maestro app.apk ./flows/smoke --device "Pixel 8"
    
    # Mix directories and individual files
    testingbot maestro app.apk ./flows/smoke login.yml --device "Pixel 8"

| Option | Type | Example |
| --- | --- | --- |
| `maestroOptions.flows` | array of strings | `["login.yml", "checkout.yml"]` |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "flows": ["login.yml", "checkout.yml"]
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## Environment Variables

Pass environment variables to your Maestro flows using the `env` option. This is useful for configuration that varies between environments (staging, production) or for sensitive data like API keys.

### Use Cases

- **Environment-specific URLs** : Point to staging or production backends
- **Test credentials** : Pass login credentials securely via CI/CD
- **Feature flags** : Enable or disable features during tests
- **App identifiers** : Specify package names or bundle IDs dynamically

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

Use the `-e` or `--env` flag (can be repeated):

    testingbot maestro app.apk ./flows --device "Pixel 8" \
      -e API_URL=https://staging.example.com \
      -e TEST_USER=testuser@example.com \
      -e TEST_PASSWORD=secret123

| Option | Type | Example |
| --- | --- | --- |
| `maestroOptions.env` | object | `{"API_URL": "https://staging.example.com"}` |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "env": {
          "API_URL": "https://staging.example.com",
          "TEST_USER": "testuser@example.com",
          "TEST_PASSWORD": "secret123"
        }
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

### Using Variables in Your Flows

Reference environment variables in your Maestro flow files using the `${VARIABLE_NAME}` syntax:

    appId: com.example.app
    ---
    - launchApp
    - inputText:
        text: "${TEST_USER}"
    - tapOn: "Next"
    - inputText:
        text: "${TEST_PASSWORD}"
    - tapOn: "Login"

**Best Practice:** Never commit sensitive values like passwords or API keys to your repository. Pass them as environment variables through your CI/CD pipeline.

## Include Tags

Run only flows that have specific tags. This is equivalent to Maestro's `--include-tags` option.

### Adding Tags to Flows

Add tags to your flow files using the `tags` property:

    appId: com.example.app
    tags:
      - smoke
      - login
    ---
    - launchApp
    - tapOn: "Login"

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

Use the `--include-tags` flag with comma-separated tags:

    testingbot maestro app.apk ./flows --device "Pixel 8" \
      --include-tags "smoke,critical"

| Option | Type | Example |
| --- | --- | --- |
| `maestroOptions.includeTags` | array of strings | `["smoke", "critical"]` |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "includeTags": ["smoke", "critical"]
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## Exclude Tags

Skip flows that have specific tags. This is equivalent to Maestro's `--exclude-tags` option.

### Use Cases

- Skip slow tests during development for faster feedback
- Exclude known flaky tests from CI pipelines
- Skip platform-specific tests (e.g., exclude "ios-only" when running on Android)

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

Use the `--exclude-tags` flag with comma-separated tags:

    testingbot maestro app.apk ./flows --device "Pixel 8" \
      --exclude-tags "slow,flaky"

| Option | Type | Example |
| --- | --- | --- |
| `maestroOptions.excludeTags` | array of strings | `["slow", "flaky"]` |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "excludeTags": ["slow", "flaky"]
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## IP Geolocation

Test your app from different geographic locations using TestingBot's GeoIP feature. Traffic from the device will route through an IP address in the specified country.

### Use Cases

- Test geo-restricted content or features
- Verify location-based pricing or currency display
- Test localized content delivery

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.zip ./flows \
      --platform iOS \
      --device "iPhone 15" \
      --deviceVersion "17.2" \
      --geo-country-code "DE"

| Option | Type | Example |
| --- | --- | --- |
| `testingbot.geoCountryCode` | string (ISO code) | `"DE", "US", "JP"` |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "17.2",
        "deviceName": "iPhone 15",
        "testingbot.geoCountryCode": "DE"
      }]
    }' \
    -H "Content-Type: application/json"

See the full list of [available country codes](https://testingbot.com/support/web-automate/selenium/test-options#geo).

## Network Throttling

Simulate different network conditions to test how your app performs under various connectivity scenarios.

| Option | Type | Example |
| --- | --- | --- |
| `throttle_network` | string | "4G", "3G", "Edge", "airplane" |

### Network Presets

| Preset | Download | Upload | Latency | Use Case |
| --- | --- | --- | --- | --- |
| `4G` | 18 Mbps | 9 Mbps | 100ms | Standard mobile connection |
| `3G` | 400 Kbps | 100 Kbps | 100ms | Slower mobile network |
| `Edge` | 250 Kbps | 150 Kbps | 300ms | Poor connectivity areas |
| `airplane` | 0 | 0 | - | No connectivity (offline mode) |
| `disable` | - | - | - | Restore full connectivity |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.zip ./flows \
      --platform iOS \
      --device "iPhone 15" \
      --deviceVersion "17.2" \
      --throttle-network "3G"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "17.2",
        "deviceName": "iPhone 15",
        "throttle_network": "3G"
      }]
    }' \
    -H "Content-Type: application/json"

## Test Name

Set a custom name for your test that appears in the TestingBot dashboard. This makes it easier to identify specific test runs.

| Option | Type | Example |
| --- | --- | --- |
| `name` | string | "Login Flow - Smoke Test" |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.zip ./flows \
      --platform iOS \
      --device "iPhone 15" \
      --deviceVersion "17.2" \
      --name "Login Flow - Smoke Test"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "17.2",
        "deviceName": "iPhone 15",
        "name": "Login Flow - Smoke Test"
      }]
    }' \
    -H "Content-Type: application/json"

## Build Grouping

Group multiple test runs under a single build name. This is useful for organizing tests that belong to the same CI/CD pipeline run or release version.

| Option | Type | Example |
| --- | --- | --- |
| `build` | string | "Release 2.5.0" |

### Benefits

- View aggregated pass/fail statistics for all tests in a build
- Track test results across different device configurations
- Easily identify which builds introduced failures

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.ipa ./flows \
      --platform iOS \
      --device "iPhone 17" \
      --real-device \
      --build "Release 2.5.0"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "26.0",
        "deviceName": "iPhone 17",
        "realDevice": true,
        "build": "Release 2.5.0"
      }]
    }' \
    -H "Content-Type: application/json"

## Shard Split

Group your Maestro flows into chunks, which will run across multiple parallel sessions for faster execution. For example you have 3 parallel slots and 9 tests, but you want to split this test suite into 3 chunks of tests and run them in parallel on connected devices, then you would use `shardSplit` set to 3.

| Option | Type | Example |
| --- | --- | --- |
| `shardSplit` | number | 1 |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    # Split flows across 3 parallel sessions - without this each flow would run in its own session
    testingbot maestro app.apk ./flows \
      --device "Pixel 8" \
      --deviceVersion "14" \
      --shard-split 3

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "shardSplit": 3,
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## CI/CD Integration

Pass Git and repository metadata to associate test runs with specific commits and pull requests. This information appears in the TestingBot dashboard and can be used for tracking and debugging.

| Option | Type | Description |
| --- | --- | --- |
| `commitSha` | string | Git commit SHA associated with this test run |
| `pullRequestId` | string | Pull request ID this test run originated from |
| `repoName` | string | Repository name (e.g., GitHub repo slug) |
| `repoOwner` | string | Repository owner (e.g., GitHub organization or username) |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    # Pass Git metadata for CI/CD tracking
    testingbot maestro app.apk ./flows \
      --device "Pixel 8" \
      --deviceVersion "14" \
      --commit-sha "abc123def456" \
      --pull-request-id "42" \
      --repo-owner "myorg" \
      --repo-name "myapp"

### GitHub Actions Example

    testingbot maestro app.apk ./flows \
      --device "Pixel 8" \
      --commit-sha "${{ github.sha }}" \
      --pull-request-id "${{ github.event.pull_request.number }}" \
      --repo-owner "${{ github.repository_owner }}" \
      --repo-name "${{ github.event.repository.name }}"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "metadata": {
        "commitSha": "abc123def456",
        "pullRequestId": "42",
        "repoName": "myapp",
        "repoOwner": "myorg"
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## Device Orientation

Set the device orientation at the start of your test.

| Option | Type | Values | Default |
| --- | --- | --- | --- |
| `orientation` | string | `"PORTRAIT", "LANDSCAPE"` | PORTRAIT |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.apk ./flows \
      --device "Pixel 8" \
      --deviceVersion "14" \
      --orientation LANDSCAPE

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8",
        "orientation": "LANDSCAPE"
      }]
    }' \
    -H "Content-Type: application/json"

## Soft Keyboard (Android)

By default, the Android soft keyboard is hidden during Maestro tests. Use the `showKeyboard` option to display the soft keyboard on Android devices.

| Option | Type | Default | Platform |
| --- | --- | --- | --- |
| `maestroOptions.showKeyboard` | boolean | false | Android only |

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "maestroOptions": {
        "showKeyboard": true
      },
      "capabilities": [{
        "platformName": "Android",
        "version": "14",
        "deviceName": "Pixel 8"
      }]
    }' \
    -H "Content-Type: application/json"

## Platform Configuration

Platform-specific settings allow you to optimize the environment for Android or iOS. These are configured in your [config.yaml](https://testingbot.com#config) file under the `platform` key.

### iOS specifics

| Key | Description |
| --- | --- |
| `disableAnimations` | Enables Reduce Motion on the iOS Simulator to prevent flakiness caused by system-level animations. |

### Android specifics

| Key | Description |
| --- | --- |
| `disableAnimations` | Disables system-level window, transition and animator animations on the Android Emulator. |

### Example config.yaml

    platform:
      ios:
        disableAnimations: true
      android:
        disableAnimations: true

## Device Timezone

Set the device timezone for your test. Useful for testing time-sensitive features.

| Option | Type | Example |
| --- | --- | --- |
| `timeZone` | string (IANA) | `"America/New_York", "Europe/London", "Asia/Tokyo"` |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.zip ./flows \
      --platform iOS \
      --device "iPhone 15" \
      --deviceVersion "17.2" \
      --timezone "America/New_York"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "17.2",
        "deviceName": "iPhone 15",
        "timeZone": "America/New_York"
      }]
    }' \
    -H "Content-Type: application/json"

See the [full list of timezone identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

## Device Locale

Set the device locale to test localized content and formatting. The locale affects language, date formats, number formats, and currency display.

| Option | Type | Format | Example |
| --- | --- | --- | --- |
| `locale` | string | language\_COUNTRY | `"de_DE", "fr_CA", "ja_JP"` |

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

    testingbot maestro app.zip ./flows \
      --platform iOS \
      --device "iPhone 15" \
      --deviceVersion "17.2" \
      --device-locale "de_DE"

    curl -u api_key:api_secret \
    -X POST "https://api.testingbot.com/v1/app-automate/maestro/:id/run" \
    -d '{
      "capabilities": [{
        "platformName": "iOS",
        "version": "17.2",
        "deviceName": "iPhone 15",
        "locale": "de_DE"
      }]
    }' \
    -H "Content-Type: application/json"

### Common Locale Codes

| Region | Locale Code |
| --- | --- |
| English (US) | `en_US` |
| English (UK) | `en_GB` |
| German (Germany) | `de_DE` |
| French (France) | `fr_FR` |
| French (Canada) | `fr_CA` |
| Spanish (Spain) | `es_ES` |
| Spanish (Mexico) | `es_MX` |
| Japanese | `ja_JP` |
| Chinese (Simplified) | `zh_CN` |
| Chinese (Traditional) | `zh_TW` |
| Korean | `ko_KR` |
| Portuguese (Brazil) | `pt_BR` |
| Italian | `it_IT` |
| Dutch | `nl_NL` |
| Russian | `ru_RU` |
| Arabic | `ar_SA` |
| Hindi | `hi_IN` |

## Maestro config.yaml

You can include a `config.yaml` file in your [Maestro flows zip file](https://testingbot.com/support/app-automate/maestro#uploadSuite). This configuration file lets you define options that apply to all your flows.

### Supported config.yaml Options

| Option | Description |
| --- | --- |
| `includeTags` | Only run flows with these tags |
| `excludeTags` | Skip flows with these tags |
| `env` | Environment variables available in all flows |
| `platform` | Platform-specific settings for iOS and Android (see [Platform Configuration](https://testingbot.com#platform-configuration)) |

### Example config.yaml

    env:
      API_URL: https://api.example.com
      DEBUG: "true"
    
    includeTags:
      - smoke
      - critical

## TestingBot Tunnel

Use [TestingBot Tunnel](https://testingbot.com/support/tunnel) to allow your app to access private or staging backend servers during tests.

### Use Cases

- Test against staging APIs not accessible from the public internet
- Access localhost services running on your machine
- Test with private databases or internal services

When a TestingBot Tunnel is active on your account, Maestro tests automatically route traffic through it. No additional configuration is needed.

To start a tunnel, download and run the [TestingBot Tunnel](https://testingbot.com/support/tunnel) client before starting your tests.

You can also use the built-in [tunnel](https://testingbot.com#tunnel-options) option to automatically start a tunnel for the duration of your test run.

## CLI Reference

When using the [TestingBot CLI](https://testingbot.com/support/app-automate/maestro#cli), these options are available as command-line flags:

### Device Options

| CLI Option | Description |
| --- | --- |
| `--device <name>` | Device name (e.g., "Pixel 9", "iPhone 16") |
| `--platform <name>` | Platform: Android or iOS |
| `--deviceVersion <version>` | OS version (e.g., "14", "17.2") |
| `--real-device` | Use a real device instead of emulator/simulator |
| `--orientation <orientation>` | Screen orientation: PORTRAIT or LANDSCAPE |
| `--device-locale <locale>` | Device locale (e.g., "en\_US", "de\_DE") |
| `--timezone <timezone>` | Timezone (e.g., "America/New\_York") |

### Test Configuration

| CLI Option | Description |
| --- | --- |
| `--name <name>` | Test name for dashboard identification |
| `--build <build>` | Build identifier for grouping test runs |
| `--include-tags <tags>` | Only run flows with these tags (comma-separated) |
| `--exclude-tags <tags>` | Exclude flows with these tags (comma-separated) |
| `-e, --env <KEY=VALUE>` | Environment variable for flows (can be repeated) |
| `--maestro-version <version>` | Maestro version to use (e.g., "2.0.10") |
| `--config <filePath>` | Path to a custom Maestro config file (default: config.yaml in project root) |

### CI/CD Integration

| CLI Option | Description |
| --- | --- |
| `--commit-sha <sha>` | Git commit SHA associated with this test run |
| `--pull-request-id <id>` | Pull request ID this test run originated from |
| `--repo-name <name>` | Repository name (e.g., GitHub repo slug) |
| `--repo-owner <owner>` | Repository owner (e.g., GitHub organization or username) |

### Network & Location

| CLI Option | Description |
| --- | --- |
| `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, airplane, or disable |
| `--geo-country-code <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |

### Output Options

| CLI Option | Description |
| --- | --- |
| `--async` | Start tests and exit without waiting for results |
| `-q, --quiet` | Suppress progress output |
| `--report <format>` | Download report after completion: html or junit |
| `--report-output-dir <path>` | Directory to save reports |
| `--download-artifacts` | Download test artifacts (logs, screenshots, video) |
| `--artifacts-output-dir <path>` | Directory to save artifacts zip |

### Tunnel Options

| CLI Option | Description |
| --- | --- |
| `-t, --tunnel` | Start a [TestingBot Tunnel](https://testingbot.com/support/tunnel) for this test run (cannot be combined with `--async`) |
| `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |

### Advanced Options

| CLI Option | Description |
| --- | --- |
| `--ignore-checksum-check` | Skip checksum verification and always upload the app |
| `--shard-split` | Split flows into N parallel sessions for faster execution. More information in the [Shard Splitting](https://testingbot.com#shard-split) section. |

## Frequently asked questions

How do I pin a specific Maestro version on TestingBot?

Pass the `maestroVersion` option in your run configuration. See the [Set Maestro Version section](https://testingbot.com#version) for the list of supported versions and CLI / API examples.

How do I pass environment variables to Maestro flows?

Use the `env` option to inject environment variables into the Maestro run. The flows can then read them with the `${VARIABLE_NAME}` syntax inside the YAML. See the [Environment Variables section](https://testingbot.com#environment) for examples.

Can I run only a subset of my Maestro flows?

Yes. Use `flows` to whitelist specific files, or `includeTags` and `excludeTags` to filter by Maestro tag. See the [Select Specific Flows](https://testingbot.com#flows), [Include Tags](https://testingbot.com#include-tags) and [Exclude Tags](https://testingbot.com#exclude-tags) sections.

How do I split Maestro flows into parallel shards?

Pass `shardSplit` with the number of parallel sessions you want. Each shard runs a subset of the flows on its own device session. See the [Shard Split section](https://testingbot.com#shard-split) for details.

Can I change the device timezone, locale or geolocation for Maestro tests?

Yes. Use the `timezone`, `locale` and `geolocation` options to control the device environment. See the [Device Timezone](https://testingbot.com#timezone), [Device Locale](https://testingbot.com#locale) and [IP Geolocation](https://testingbot.com#geolocation) sections.

Can I test a private or staging server with Maestro on TestingBot?

Yes. Start the [TestingBot Tunnel](https://testingbot.com/support/tunnel) and pass `tunnelIdentifier` in your Maestro run config. The device will route traffic through your tunnel so it can reach internal APIs. See the [TestingBot Tunnel section](https://testingbot.com#tunnel).

Was this page helpful? Yes No 

## Looking for More Help?

Have questions or need more information?   
 You can reach us via the following channels:

- [Email us](https://testingbot.com/contact/new)
- [Join our Slack Channel](https://join.slack.com/t/testingb0t/shared_invite/zt-3bcw9xch-jk19~6XPs_xBrsAgAedkCw)
