UNPKG

@devicecloud.dev/dcd

Version:

Better cloud maestro testing

677 lines 22.2 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" }, "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" }