Reference

QA CLI

coldtea-qa is Coldtea QA from the command line. Tests are written in plain English, runs happen in Coldtea's cloud, and the exit code is the verdict, so a CI step needs nothing beyond the command itself.

Install

npm install -g @coldtea/qa
cqa --version

The package installs two names for the same binary: coldtea-qa, and cqa for short — fewer tokens for the agents that call it most.

Needs Node 20.6 or newer. The package has no runtime dependencies.

Auth

Create an API key in the Coldtea app under Settings, then:

export COLDTEA_API_KEY=coldtea_sk_...
coldtea-qa whoami

The key identifies your organization. There is no organization flag, and the API rejects a request that names one. Prefer the environment variable over --api-key: a flag is visible in ps while the process runs, in shell history, and in any CI log that echoes the step.

First run

coldtea-qa projects list                  # find a project id
export COLDTEA_PROJECT_ID=prj_...
coldtea-qa groups create "Smoke"          # tests live in groups
coldtea-qa tests create "Buy an item with a saved card" --url https://shop.example
coldtea-qa run test mqt_... --wait        # exit code is the verdict

The test description is the test. Say what a person would do, in English.

Behind a login? Store the secret with credentials create, point an environment at the site with environments create, then give the group that environment with groups update --environment. To run on every pull request, rules create.

Exit codes

CodeMeaning
0Pass. A warning counts as pass unless --fail-on-warning is set.
1Fail. The app under test is broken. Nothing else exits 1.
2Couldn't run or verify: timeouts, 5xx, rate limits, transport. Worth retrying unchanged.
3A conflict a person must resolve (the 409 family).
4Auth or configuration error, including 400 and 404. Retrying unchanged can only fail again.

The split between 2 and 4 is the one to script against: 2 may succeed on retry, 4 never will.

Machine output

--json prints one JSON document on stdout, in the API's own envelope: { "data": ..., "meta": { "requestId": ... } }. List commands carry meta.nextCursor; page by copying it until it is null, never by counting rows. Errors go to stderr in the same shape, { "error": ..., "meta": { "requestId": ... } }, so stdout stays parseable on failure. Quote meta.requestId when reporting a problem.

Environment

VariableMeaning
COLDTEA_API_KEYThe coldtea_sk_... key. Identifies your organization.
COLDTEA_PROJECT_IDDefault project id, so most commands need no --project.
COLDTEA_BASE_URLAPI origin (default https://www.coldtea.ai). Https only; plain http works on loopback addresses.
COLDTEA_ALLOW_INSECURE_HTTPSet to 1 to allow plain http to a non-loopback host. Every request then carries your API key unencrypted; use it only for a trusted private host.
NO_COLORDisable color.

Commands

Generated from the CLI's own command table, so this list cannot drift from the binary. cqa help <family> prints the full help for any group below.

cqa whoami

Show the organization and key this CLI authenticates as.

cqa projects list

List the organization's projects.

FlagValue
--cursorstring
--include-archivedboolean
--limitstring

cqa projects create <name>

Create a project.

cqa projects get <id>

Show one project.

Link a repository (--provider, --repository-id).

FlagValue
--providerstring
--repository-idstring

cqa tests list

List a project's tests.

FlagValue
--cursorstring
--groupstring
--limitstring
--searchstring

cqa tests create <description>

Create a test (one target flag).

FlagValue
--deploymentboolean
--groupstring
--mobilestring
--titlestring
--urlstring

cqa tests get <id>

Show one test.

cqa tests update <id>

Edit a test; --group moves it.

FlagValue
--descriptionstring
--groupstring
--titlestring
--urlstring

cqa tests delete <id>

Archive a test (cancels its runs).

cqa groups list

List a project's groups.

FlagValue
--cursorstring
--limitstring

cqa groups create <name>

Create a group.

FlagValue
--descriptionstring
--environmentstring

cqa groups get <id>

Show one group.

cqa groups update <id>

Rename or re-describe a group.

FlagValue
--descriptionstring
--environmentstring
--namestring

cqa groups delete <id>

Archive a group and its tests.

cqa run test <id>

Start one test run (--wait follows it).

FlagValue
--buildstring
--environmentstring
--labelstring
--target-urlstring
--timeoutstring
--vcs-head-shastring
--vcs-pr-numberstring
--vcs-providerstring
--vcs-repository-idstring
--waitboolean

cqa run group <id>

Start a batch of a group's tests.

FlagValue
--buildstring
--environmentstring
--labelstring
--target-urlstring
--timeoutstring
--vcs-head-shastring
--vcs-pr-numberstring
--vcs-providerstring
--vcs-repository-idstring
--waitboolean

cqa runs get <id>

Show one run and why it ended that way.

cqa runs stop <id>

Stop a run that is still going.

cqa runs list

List runs (filters mirror the API).

FlagValue
--batchstring
--cursorstring
--environmentstring
--groupstring
--limitstring
--outcomestring
--sincestring
--statusstring
--teststring

cqa builds upload <file>

Upload a build (--platform required).

FlagValue
--build-versionstring
--no-waitboolean
--platformstring
--timeoutstring
--vcs-head-shastring
--vcs-pr-numberstring
--vcs-providerstring
--vcs-repository-idstring

cqa builds get <id>

Show one build and its artifact.

cqa merge <src> --into <id>

Merge a project into a survivor.

FlagValue
--intostring
--timeoutstring
--yesboolean

cqa environments list

List where runs can open.

FlagValue
--cursorstring
--limitstring

cqa environments create <name>

Create a web environment (--url).

FlagValue
--any-urlboolean
--credentialstring
--urlstring
--vercel-projectstring

cqa environments get <id>

Show one environment.

cqa environments update <id>

Edit one (--acknowledge for rules).

FlagValue
--acknowledgeboolean
--any-urlboolean
--credentialstring
--namestring
--urlstring
--vercel-projectstring

cqa environments delete <id>

Delete one (refused while in use).

cqa rules list

List a project's trigger rules.

FlagValue
--cursorstring
--limitstring

cqa rules create <name>

Create a trigger rule (one --when).

FlagValue
--againststring
--all-deploymentsboolean
--branchstring
--checksboolean
--deploymentboolean
--groupsstring
--pr-onlyboolean
--schedulestring
--timezonestring
--webhookboolean

cqa rules update <id>

Rename, enable or disable a rule.

FlagValue
--checksboolean
--disableboolean
--enableboolean
--namestring
--no-checksboolean

cqa rules delete <id>

Delete a rule.

cqa credentials list

List stored secrets (metadata only).

FlagValue
--cursorstring
--limitstring

cqa credentials create <name>

Store a secret (piped on stdin).

FlagValue
--environmentstring
--methodstring
--usernamestring

cqa credentials rename <id>

Rename one (--name).

FlagValue
--namestring

cqa credentials rotate <id>

Replace the secret (piped on stdin).

FlagValue
--methodstring
--usernamestring

cqa credentials delete <id>

Delete one (refused while in use).

cqa repositories list

List repositories we can see (for link-repo).

FlagValue
--cursorstring
--limitstring
--providerstring

cqa apps list

List a project's mobile apps.

FlagValue
--cursorstring
--limitstring

cqa skips list

Why a project's rules did not run.

FlagValue
--cursorstring
--limitstring
--rulestring

On this page