@devicecloud.dev/dcd
Version:
Better cloud maestro testing
677 lines • 22.2 kB
JSON
{
"commands": {
"cloud": {
"aliases": [],
"args": {
"firstFile": {
"description": "The binary file of the app to run your flow against, e.g. test.apk for android or test.app/.zip for ios",
"hidden": true,
"name": "firstFile"
},
"secondFile": {
"description": "The flow file to run against the app, e.g. test.yaml",
"hidden": true,
"name": "secondFile"
}
},
"description": "Test a Flow or set of Flows on devicecloud.dev (https://devicecloud.dev)\nProvide your application file and a folder with Maestro flows to run them in parallel on multiple devices in devicecloud.dev\nThe command will block until all analyses have completed",
"examples": [
"<%= config.bin %> <%= command.id %>"
],
"flags": {
"json": {
"description": "Output results in JSON format - note: will always provide exit code 0",
"name": "json",
"allowNo": false,
"type": "boolean"
},
"apiKey": {
"aliases": [
"api-key"
],
"description": "API key for devicecloud.dev (find this in the console UI). You can also set the DEVICE_CLOUD_API_KEY environment variable.",
"name": "apiKey",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"apiUrl": {
"aliases": [
"api-url",
"apiURL"
],
"description": "API base URL",
"hidden": true,
"name": "apiUrl",
"default": "https://api.devicecloud.dev",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"app-binary-id": {
"aliases": [
"app-binary-id"
],
"description": "The ID of the app binary previously uploaded to devicecloud.dev",
"name": "app-binary-id",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"app-file": {
"aliases": [
"app-file"
],
"description": "App binary to run your flows against",
"name": "app-file",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"ignore-sha-check": {
"description": "Ignore the sha hash check and upload the binary regardless of whether it already exists (not recommended)",
"name": "ignore-sha-check",
"allowNo": false,
"type": "boolean"
},
"android-api-level": {
"description": "[Android only] Android API level to run your flow against",
"name": "android-api-level",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"30",
"35",
"34",
"31",
"36",
"33",
"32",
"29"
],
"type": "option"
},
"android-device": {
"description": "[Android only] Android device to run your flow against",
"name": "android-device",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"generic-tablet",
"pixel-6",
"pixel-6-pro",
"pixel-7",
"pixel-7-pro"
],
"type": "option"
},
"device-locale": {
"description": "Locale that will be set to a device, ISO-639-1 code and uppercase ISO-3166-1 code e.g. \"de_DE\" for Germany",
"name": "device-locale",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"google-play": {
"aliases": [
"google-play"
],
"description": "[Android only] Run your flow against Google Play devices",
"name": "google-play",
"allowNo": false,
"type": "boolean"
},
"ios-device": {
"description": "[iOS only] iOS device to run your flow against",
"name": "ios-device",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"ipad-pro-6th-gen",
"iphone-14",
"iphone-14-pro",
"iphone-15",
"iphone-15-pro",
"iphone-16",
"iphone-16-plus",
"iphone-16-pro",
"iphone-16-pro-max"
],
"type": "option"
},
"ios-version": {
"description": "[iOS only] iOS version to run your flow against",
"name": "ios-version",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"18",
"17",
"16",
"26"
],
"type": "option"
},
"orientation": {
"description": "[Android only] The orientation of the device to run your flow against (0 = portrait, 90 = landscape)",
"name": "orientation",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"0",
"90"
],
"type": "option"
},
"show-crosshairs": {
"description": "[Android only] Display crosshairs for screen interactions during test execution",
"name": "show-crosshairs",
"allowNo": false,
"type": "boolean"
},
"maestro-chrome-onboarding": {
"description": "[Android only] Force Maestro-based Chrome onboarding - note: this will slow your tests but can fix browser related crashes. See https://docs.devicecloud.dev/reference/chrome-onboarding for more information.",
"name": "maestro-chrome-onboarding",
"allowNo": false,
"type": "boolean"
},
"android-no-snapshot": {
"description": "[Android only] Force cold boot instead of using snapshot boot. This is automatically enabled for API 35+ but can be used to force cold boot on older API levels.",
"name": "android-no-snapshot",
"allowNo": false,
"type": "boolean"
},
"env": {
"char": "e",
"description": "One or more environment variables to inject into your flows",
"name": "env",
"hasDynamicHelp": false,
"multiple": true,
"type": "option"
},
"metadata": {
"char": "m",
"description": "Arbitrary key-value metadata to include with your test run (format: key=value)",
"name": "metadata",
"hasDynamicHelp": false,
"multiple": true,
"type": "option"
},
"mitmHost": {
"description": "used for mitmproxy support, enterprise only, contact support if interested",
"hidden": true,
"name": "mitmHost",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"mitmPath": {
"dependsOn": [
"mitmHost"
],
"description": "used for mitmproxy support, enterprise only, contact support if interested",
"hidden": true,
"name": "mitmPath",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"moropo-v1-api-key": {
"description": "API key for Moropo v1 integration",
"name": "moropo-v1-api-key",
"required": false,
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"name": {
"description": "A custom name for your upload (useful for tagging commits etc)",
"name": "name",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"config": {
"description": "Path to custom config.yaml file. If not provided, defaults to config.yaml in root flows folders.",
"name": "config",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"exclude-flows": {
"description": "Sub directories to ignore when building the flow file list",
"name": "exclude-flows",
"default": [],
"hasDynamicHelp": false,
"multiple": true,
"type": "option"
},
"exclude-tags": {
"aliases": [
"exclude-tags"
],
"description": "Flows which have these tags will be excluded from the run",
"name": "exclude-tags",
"default": [],
"hasDynamicHelp": false,
"multiple": true,
"type": "option"
},
"flows": {
"description": "The path to the flow file or folder containing your flows",
"name": "flows",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"include-tags": {
"aliases": [
"include-tags"
],
"description": "Only flows which have these tags will be included in the run",
"name": "include-tags",
"default": [],
"hasDynamicHelp": false,
"multiple": true,
"type": "option"
},
"maestro-version": {
"aliases": [
"maestroVersion"
],
"description": "Maestro version to run your flow against. Use \"latest\" for the most recent version. Supported versions are fetched from the API.",
"name": "maestro-version",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"retry": {
"description": "Automatically retry the run up to the number of times specified (same as pressing retry in the UI) - this is free of charge",
"name": "retry",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"runner-type": {
"description": "[experimental] The type of runner to use - note: anything other than default or cpu1 will incur premium pricing tiers, see https://docs.devicecloud.dev/reference/runner-type for more information.",
"name": "runner-type",
"default": "default",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"default",
"m4",
"m1",
"gpu1",
"cpu1"
],
"type": "option"
},
"artifacts-path": {
"dependsOn": [
"download-artifacts"
],
"description": "Custom file path for downloaded artifacts (default: ./artifacts.zip)",
"name": "artifacts-path",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"junit-path": {
"dependsOn": [
"report"
],
"description": "Custom file path for downloaded JUnit report (requires --report junit, default: ./report.xml)",
"name": "junit-path",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"allure-path": {
"dependsOn": [
"report"
],
"description": "Custom file path for downloaded Allure report (requires --report allure, default: ./report.html)",
"name": "allure-path",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"html-path": {
"dependsOn": [
"report"
],
"description": "Custom file path for downloaded HTML report (requires --report html, default: ./report.html)",
"name": "html-path",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"async": {
"description": "Immediately return (exit code 0) from the command without waiting for the results of the run (useful for saving CI minutes)",
"name": "async",
"allowNo": false,
"type": "boolean"
},
"debug": {
"description": "Enable detailed debug logging for troubleshooting issues",
"name": "debug",
"allowNo": false,
"type": "boolean"
},
"download-artifacts": {
"description": "Download a zip containing the logs, screenshots and videos for each result in this run. Options: ALL (everything), FAILED (failures only).",
"name": "download-artifacts",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"ALL",
"FAILED"
],
"type": "option"
},
"dry-run": {
"description": "Simulate the run without actually triggering the upload/test, useful for debugging workflow issues.",
"name": "dry-run",
"allowNo": false,
"type": "boolean"
},
"json-file": {
"description": "Write JSON output to a file. File will be called <upload_id>_dcd.json unless you supply the --json-file-name flag - note: will always exit with code 0",
"name": "json-file",
"required": false,
"allowNo": false,
"type": "boolean"
},
"json-file-name": {
"dependsOn": [
"json-file"
],
"description": "A custom name for the JSON file (can also include relative path)",
"name": "json-file-name",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"quiet": {
"char": "q",
"description": "Quieter console output that won't provide progress updates",
"name": "quiet",
"allowNo": false,
"type": "boolean"
},
"report": {
"aliases": [
"format"
],
"description": "Generate and download test reports in the specified format. Use \"allure\" for a complete HTML report.",
"name": "report",
"hasDynamicHelp": false,
"multiple": false,
"options": [
"allure",
"junit",
"html"
],
"type": "option"
}
},
"hasDynamicHelp": false,
"hiddenAliases": [],
"id": "cloud",
"pluginAlias": "@devicecloud.dev/dcd",
"pluginName": "@devicecloud.dev/dcd",
"pluginType": "core",
"strict": true,
"enableJsonFlag": true,
"isESM": false,
"relativePath": [
"dist",
"commands",
"cloud.js"
]
},
"list": {
"aliases": [],
"args": {},
"description": "List recent flow uploads for your organization",
"examples": [
"<%= config.bin %> <%= command.id %>",
"<%= config.bin %> <%= command.id %> --limit 10",
"<%= config.bin %> <%= command.id %> --name \"nightly-*\" # Quote wildcards to prevent shell expansion!",
"<%= config.bin %> <%= command.id %> --from 2024-01-01 --to 2024-01-31",
"<%= config.bin %> <%= command.id %> --json"
],
"flags": {
"json": {
"description": "Output in JSON format",
"name": "json",
"allowNo": false,
"type": "boolean"
},
"apiKey": {
"aliases": [
"api-key"
],
"description": "API key for devicecloud.dev (find this in the console UI). You can also set the DEVICE_CLOUD_API_KEY environment variable.",
"name": "apiKey",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"apiUrl": {
"aliases": [
"api-url",
"apiURL"
],
"description": "API base URL",
"hidden": true,
"name": "apiUrl",
"default": "https://api.devicecloud.dev",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"from": {
"description": "Filter uploads created on or after this date (ISO 8601 format, e.g., 2024-01-01)",
"name": "from",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"limit": {
"description": "Maximum number of uploads to return",
"name": "limit",
"default": 20,
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"name": {
"description": "Filter by upload name (supports * wildcard, e.g., \"nightly-*\"). IMPORTANT: Always quote wildcards to prevent shell expansion!",
"name": "name",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"offset": {
"description": "Number of uploads to skip (for pagination)",
"name": "offset",
"default": 0,
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"to": {
"description": "Filter uploads created on or before this date (ISO 8601 format, e.g., 2024-01-31)",
"name": "to",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
}
},
"hasDynamicHelp": false,
"hiddenAliases": [],
"id": "list",
"pluginAlias": "@devicecloud.dev/dcd",
"pluginName": "@devicecloud.dev/dcd",
"pluginType": "core",
"strict": true,
"enableJsonFlag": true,
"isESM": false,
"relativePath": [
"dist",
"commands",
"list.js"
]
},
"status": {
"aliases": [],
"args": {},
"description": "Get the status of an upload by name or upload ID",
"examples": [
"<%= config.bin %> <%= command.id %> --name my-upload-name",
"<%= config.bin %> <%= command.id %> --upload-id 123e4567-e89b-12d3-a456-426614174000 --json"
],
"flags": {
"json": {
"description": "output in json format",
"name": "json",
"allowNo": false,
"type": "boolean"
},
"apiKey": {
"aliases": [
"api-key"
],
"description": "API key for devicecloud.dev (find this in the console UI). You can also set the DEVICE_CLOUD_API_KEY environment variable.",
"name": "apiKey",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"apiUrl": {
"aliases": [
"api-url",
"apiURL"
],
"description": "API base URL",
"hidden": true,
"name": "apiUrl",
"default": "https://api.devicecloud.dev",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"name": {
"description": "Name of the upload to check status for",
"exclusive": [
"upload-id"
],
"name": "name",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"upload-id": {
"description": "UUID of the upload to check status for",
"exclusive": [
"name"
],
"name": "upload-id",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
}
},
"hasDynamicHelp": false,
"hiddenAliases": [],
"id": "status",
"pluginAlias": "@devicecloud.dev/dcd",
"pluginName": "@devicecloud.dev/dcd",
"pluginType": "core",
"strict": true,
"enableJsonFlag": true,
"isESM": false,
"relativePath": [
"dist",
"commands",
"status.js"
]
},
"upload": {
"aliases": [],
"args": {
"appFile": {
"description": "The binary file to upload (e.g. test.apk for android or test.app/.zip for ios)",
"name": "appFile",
"required": true
}
},
"description": "Upload an app binary to devicecloud.dev",
"examples": [
"<%= config.bin %> <%= command.id %> path/to/app.apk",
"<%= config.bin %> <%= command.id %> path/to/app.zip --api-key YOUR_API_KEY"
],
"flags": {
"json": {
"description": "Format output as json.",
"helpGroup": "GLOBAL",
"name": "json",
"allowNo": false,
"type": "boolean"
},
"apiKey": {
"aliases": [
"api-key"
],
"description": "API key for devicecloud.dev (find this in the console UI). You can also set the DEVICE_CLOUD_API_KEY environment variable.",
"name": "apiKey",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"apiUrl": {
"aliases": [
"api-url",
"apiURL"
],
"description": "API base URL",
"hidden": true,
"name": "apiUrl",
"default": "https://api.devicecloud.dev",
"hasDynamicHelp": false,
"multiple": false,
"type": "option"
},
"debug": {
"description": "Enable detailed debug logging for troubleshooting issues",
"name": "debug",
"allowNo": false,
"type": "boolean"
},
"ignore-sha-check": {
"description": "Ignore the sha hash check and upload the binary regardless of whether it already exists (not recommended)",
"name": "ignore-sha-check",
"allowNo": false,
"type": "boolean"
}
},
"hasDynamicHelp": false,
"hiddenAliases": [],
"id": "upload",
"pluginAlias": "@devicecloud.dev/dcd",
"pluginName": "@devicecloud.dev/dcd",
"pluginType": "core",
"strict": true,
"enableJsonFlag": true,
"isESM": false,
"relativePath": [
"dist",
"commands",
"upload.js"
]
}
},
"version": "4.2.5"
}