For the complete documentation index, see llms.txt. This page is also available as Markdown.

Async Execution

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.

Basic Usage

dcd cloud <appFile> <flowFile> --async

When 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 <appFile> <flowFile> --async --name "build-$GIT_SHA"

Checking Results After an Async Run

Use the dcd status command to poll for results by upload ID:

dcd status --upload-id <uploadId>

You can also look a run up by name with --name (handy when paired with --async --name). See dcd status for the full reference.

GitHub Actions Pattern

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

      # Record where to find the results
      - name: Record the console URL
        run: echo "View results at: ${{ steps.dcd.outputs.DEVICE_CLOUD_CONSOLE_URL }}"

In async mode the Action doesn't wait for the run, so DEVICE_CLOUD_UPLOAD_STATUS is always PENDING, DEVICE_CLOUD_FLOW_RESULTS is [] and DEVICE_CLOUD_APP_BINARY_ID isn't set. For a pass/fail verdict, poll dcd status or use the DeviceCloud GitHub App check.

Considerations

  • The console URL is available via the DEVICE_CLOUD_CONSOLE_URL action 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, poll with dcd status.

  • With the DeviceCloud GitHub App installed, an async run reports its result back as a pass/fail check on the pull request, so you don't have to poll for it yourself.

Last updated