By default, dcd cloud waits for all tests to complete before exiting. Async mode lets you start a test run and return immediately — useful when you want to avoid blocking your CI pipeline.
dcd cloud --apiKey <apiKey> <appFile> <flowFile> --asyncWhen tests are submitted successfully, the command exits with code 0 regardless of test outcome. If submission itself fails, it exits with code 1.
Pair --async with --name to make it easy to look up results later:
dcd cloud --apiKey <apiKey> <appFile> <flowFile> --async --name "build-$GIT_SHA"Use the dcd status command to poll for results by upload ID:
dcd status --apiKey <apiKey> <uploadId>Or use the dcd status to query results programmatically via HTTP.
In GitHub Actions, async mode is useful when you want to kick off tests and check results in a later step, while other CI work continues in parallel:
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Build app
run: ./gradlew assembleDebug
# Start tests immediately — don't wait for results
- uses: devicecloud-dev/device-cloud-for-maestro@v2
id: dcd
with:
api-key: ${{ secrets.DCD_API_KEY }}
app-file: app/build/outputs/apk/debug/app-debug.apk
async: true
name: ${{ github.sha }}
# Continue with other CI work while tests run in the background
- name: Run unit tests
run: ./gradlew test
# Check test results at the end
- name: Verify DeviceCloud status
run: |
echo "Test results: ${{ steps.dcd.outputs.DEVICE_CLOUD_UPLOAD_STATUS }}"
echo "View at: ${{ steps.dcd.outputs.DEVICE_CLOUD_CONSOLE_URL }}"- The console URL is available via the
DEVICE_CLOUD_CONSOLE_URLaction output so you can link to results from your CI summary. - Retries (
--retry) and async mode work together — DeviceCloud handles retries in the background. - If you need the final pass/fail status in CI, use
dcd statusto poll or use the dcd status directly.