UNPKG

@devicecloud.dev/dcd

Version:

Better cloud maestro testing

574 lines 18.6 kB
{ "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" }, "additional-app-binary-ids": { "description": "The ID of the additional app binary(s) previously uploaded to devicecloud.dev to install before execution", "name": "additional-app-binary-ids", "default": [], "hasDynamicHelp": false, "multiple": true, "type": "option" }, "additional-app-files": { "description": "Additional app binary(s) to install before execution", "name": "additional-app-files", "default": [], "hasDynamicHelp": false, "multiple": true, "type": "option" }, "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", "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" }, "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" }, "artifacts-path": { "dependsOn": [ "download-artifacts" ], "description": "Custom file path for downloaded artifacts (default: ./artifacts.zip)", "name": "artifacts-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" }, "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" }, "debug": { "description": "Enable detailed debug logging for troubleshooting issues", "name": "debug", "allowNo": false, "type": "boolean" }, "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" }, "download-artifacts": { "description": "Download a zip containing the logs, screenshots and videos for each result in this run. You will debited a $0.01 egress fee for each result. Use --download-artifacts=FAILED for failures only or --download-artifacts=ALL for every result.", "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" }, "env": { "char": "e", "description": "One or more environment variables to inject into your flows", "name": "env", "hasDynamicHelp": false, "multiple": true, "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" }, "google-play": { "aliases": [ "google-play" ], "description": "[Android only] Run your flow against Google Play devices", "name": "google-play", "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" }, "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" }, "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" ], "type": "option" }, "json-file": { "description": "Write JSON output to a file. File 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" }, "maestro-version": { "aliases": [ "maestroVersion" ], "description": "Maestro version to run your flow against", "name": "maestro-version", "default": "1.41.0", "hasDynamicHelp": false, "multiple": false, "options": [ "1.39.0", "1.39.1", "1.39.2", "1.39.4", "1.39.5", "1.39.7", "1.39.13", "1.40.0", "1.40.1", "1.40.2", "1.40.3", "1.41.0", "latest" ], "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", "name": "mitmHost", "hasDynamicHelp": false, "multiple": false, "type": "option" }, "mitmPath": { "dependsOn": [ "mitmHost" ], "description": "used for mitmproxy support, enterprise only, contact support if interested", "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" }, "orientation": { "description": "[Android only] The orientation of the device to run your flow against in degrees", "name": "orientation", "hasDynamicHelp": false, "multiple": false, "options": [ "0", "90", "180", "270" ], "type": "option" }, "quiet": { "char": "q", "description": "Quieter console output that wont provide progress updates", "name": "quiet", "allowNo": false, "type": "boolean" }, "report": { "aliases": [ "format" ], "description": "Runs Maestro with the --format flag, this will generate a report in the specified format", "name": "report", "hasDynamicHelp": false, "multiple": false, "options": [ "junit", "html" ], "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 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" ], "type": "option" }, "show-crosshairs": { "description": "[Android only] Display crosshairs for screen interactions during test execution", "name": "show-crosshairs", "allowNo": false, "type": "boolean" }, "skip-chrome-onboarding": { "description": "[Android only] Skip Chrome browser onboarding screens when running tests", "name": "skip-chrome-onboarding", "allowNo": false, "type": "boolean" }, "x86-arch": { "description": "[iOS only, experimental] Run your flow against x86 architecture simulator instead of arm64", "name": "x86-arch", "allowNo": false, "type": "boolean" } }, "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" ] }, "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" }, "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.0.1" }