Upload an app binary and run Maestro flows on DeviceCloud. This is the primary command and a drop-in replacement for maestro cloud.
dcd cloud <app-file> <flows-dir> [flags]
The command blocks until all tests have completed, then exits with an appropriate exit code.
| Argument |
Description |
<app-file> |
Path to your app binary (.apk for Android, .app or .zip for iOS) |
<flows-dir> |
Path to the flow file or directory of flows to run |
| Flag |
Description |
--api-key <key> |
Your DeviceCloud API key. Defaults to DEVICE_CLOUD_API_KEY env var |
| Flag |
Description |
--app-binary-id <id> |
Reuse a previously uploaded binary instead of uploading again |
--app-url <url> |
Signed URL to an Expo iOS build (.tar.gz). The archive is downloaded and extracted automatically. Expo signed URLs expire after ~1 hour. Mutually exclusive with --app-file |
--additional-app-files <paths> |
Comma-separated list of additional app files to upload |
--additional-app-binary-ids <ids> |
Comma-separated list of additional binary IDs to include |
--ignore-sha-check |
Force re-upload even if a binary with the same SHA already exists |
| Flag |
Description |
--android-device <device> |
Android device model to run on (see Devices) |
--android-api-level <level> |
Android API level |
--ios-device <device> |
iOS device model to run on (see Devices) |
--ios-version <version> |
iOS version |
--device-locale <locale> |
Device locale (see Device Locale) |
--orientation <orientation> |
Device orientation (see Orientation) |
--google-play |
Use a Google Play-enabled device (see Google Play APIs) |
--runner-type <type> |
Runner type to use (see Runner Types) |
| Flag |
Description |
--flows <paths> |
Comma-separated list of flow files to run (alternative to positional arg) |
--config <path> |
Path to a config.yaml workspace config file (see Workspace Configuration) |
--exclude-flows <paths> |
Comma-separated list of flow files to exclude |
--include-tags <tags> |
Only run flows with these tags (comma-separated) |
--exclude-tags <tags> |
Skip flows with these tags (comma-separated) |
| Flag |
Description |
--maestro-version <version> |
Maestro version to use (see Maestro Versions) |
--env <KEY=VALUE> |
Environment variables to pass to the test. Repeat for multiple values |
--name <name> |
Name for this upload (shown in the console) |
--retry <n> |
Retry failed tests up to n times. Max 2 (see Retry Strategies) |
--report <format> |
Generate a report. Options: junit, html, html-detailed, allure (see Report Formats) |
Attach Git and pull request metadata to a run. These values are displayed in the DeviceCloud console alongside the test results, making it easy to trace a run back to the exact commit or PR that triggered it.
| Flag |
Description |
--branch <name> |
Git branch name for this run |
--commit-sha <sha> |
Git commit SHA for this run |
--repo-name <owner/repo> |
Repository in owner/repo format (e.g. acme/my-app) |
--pr-number <number> |
Pull request number |
--pr-url <url> |
Pull request URL |
| Flag |
Description |
--maestro-chrome-onboarding |
Run Chrome onboarding before tests (see Chrome Onboarding) |
--android-no-snapshot |
Disable snapshot restore at test start |
| Flag |
Description |
--disable-animations |
Disable device animations during test execution. On Android, disables system animation scales. On iOS, enables Reduce Motion. |
| Flag |
Description |
--async |
Submit tests and return immediately without waiting for results (see Async Execution) |
--quiet |
Suppress per-test output; print only the final summary |
--json |
Output results as JSON. Exits 0 even on test failure |
--json-file <path> |
Write JSON results to a file |
--download-artifacts <ALL|FAILED> |
Download test artifacts after completion (see Artifacts) |
--debug |
Enable verbose debug logging |
--use-beta |
Use the beta version of the DeviceCloud runner |
Android:
dcd cloud app.apk flows/ --android-device "Pixel 8" --android-api-level 34
iOS:
dcd cloud app.zip flows/ --ios-device "iPhone 16" --ios-version 18
Filter by tag:
dcd cloud app.apk flows/ --include-tags smoke
Reuse a previously uploaded binary:
dcd cloud flows/ --app-binary-id 67894274-b789-4c1e-80d4-da8998998999
Save results to JSON:
dcd cloud app.apk flows/ --json-file results.json