Run a Single Test
Execute a test by name or ID:- Resolve the test name (from aliases or API)
- Queue the test for execution
- Stream progress to your terminal
- Report the final result and, for a blocking human-terminal run, open its report
Example Output
Run Options
Blocking human-terminal runs open completed reports by default.
--no-open,
--no-wait, --json, --github-actions, CI, SSH, and other headless
executions suppress browser opening.
Stored argument sets are flattened in attachment and flag order, followed by
inline --launch-arg tokens in flag order. Explicit arguments precede iOS
-KEY value pairs generated from environment configurations. Inline tokens are
non-secret and can appear in shell history, process arguments, and reports.
Android-only test runs reject iOS arguments with an actionable error.
Run a Workflow
Execute a workflow (multiple tests). To build, upload, and run in one command:--build, the workflow runs on its saved builds:
Example Output
Workflow Options
Launch-configuration overrides apply to every compatible child test in the workflow. Mixed workflows apply iOS argument sets to iOS children and skip them for Android children.Branch and build selection
A run uses the saved choice (the test’s, or the workflow’s App Override) unless you pass one for the run. On Default branch it tries your Git branch first. See How a run picks its build. The run prints its build and branch, such asBuild: v1.4 from branch main, and a
notice when it couldn’t use your Git branch.
Tests created in the dashboard start on All branches · Latest build, so a
pull request job can run another pull request’s upload. Pass the ID of the build
the job uploaded, or save the test on Default branch so it runs on the pull
request’s branch: revyl test build set <test> --build-selection inherit. See
New saved choices.
revyl test build set <test> saves a test’s choice, and
revyl test build clear <test> resets it to All branches · Latest build. For
how each run option behaves, including --build and per-platform overrides on
workflows, see Run options.
Full Pipeline: Build → Upload → Test
Use the--build flag with revyl test run to run the complete pipeline:
- Build - Run your build command
- Upload - Upload the artifact to Revyl
- Test - Run the test against the new build
Pipeline Options
Example
The CLI validates that the test exists before starting the build process. If you specify a test name that doesn’t exist, you’ll get an immediate error with a list of available tests.
Full Pipeline: Build → Upload → Workflow
To build and run a workflow in one command:- Build - Run your build command
- Upload - Upload the artifact to Revyl
- Workflow - Run all tests in the workflow against the new build
--build to run the workflow without rebuilding.
Workflow pipeline options
Build or Upload Without Running Tests
Upload a build without running tests:--build remains local. See
Build Configuration.
Upload Options
Upload Output
revyl build upload --file ./app-release.apk --app <id> ends with the build and
the branch it landed on:
Build Version is the version label; Build ID identifies the build.
Default debug builds from every framework satisfy Revyl’s artifact rules. For release builds,
.ipa archives, or narrowed abiFilters, see Build Artifact Requirements.List Builds
View uploaded build versions across all branches of an app:
Without
--app, the command lists app summaries. Cross-branch build tables show
both GIT BRANCH and REVYL BRANCH (the dashboard’s Branch column). See
Build branches from the CLI for filters and
JSON fields.
Exit Codes
The CLI uses standard exit codes for scripting:CI/CD Example
JSON Output
For programmatic use, get structured JSON output:branch_name, build_version, and build_id name the build the run used.
branch_source says where its branch came from: git_branch,
explicit_branch, or default_branch. git_branch_name names the Git branch
the run consulted, so default_branch with a git_branch_name, as above,
means your Git branch couldn’t be used. See
JSON fields.
revyl workflow run --json reports these fields for each entry in tests.
Open Results in Browser
Blocking human-terminal test and workflow runs open the completed report by default. To state the intent explicitly:--no-open. No-wait, JSON, GitHub Actions, CI,
SSH, and other headless runs never open a browser.
Or open a previous report:
Background Execution
Queue a test without waiting for results:Common Workflows
Quick Smoke Test
Test New Changes
CI/CD Pipeline
Local Development Loop
Troubleshooting
Cancelling a Running Test
Userevyl test cancel or revyl workflow cancel to request cancellation of a running test or workflow:
- CLI output when starting a test:
Task ID: abc123-def456... - Report URL:
https://app.revyl.ai/tests/report?taskId=abc123...
A successful command can acknowledge a durable cancellation request while execution is still stopping. Check the returned test status or the workflow’s child statuses for terminal completion.
Retrying a stop preserves the session’s existing terminal outcome and can resume pending cleanup.
Pressing Ctrl+C only stops the CLI from monitoring - the test continues running on the server. Use
revyl test cancel <task_id> to actually stop the test.Test Times Out
- Increase timeout:
--timeout 900 - Check device availability in Revyl dashboard
- Verify the test runs manually in the web UI
Build Upload Fails
- Check your build command produces output at the expected path
- Verify file permissions on the artifact
- Try
--dry-runto see what would be uploaded
”Test not found” Error
- Run
revyl test listto see available tests - Check spelling and case sensitivity
- Ensure the test exists in your
config.yamlaliases or on remote