Skip to main content

qatech CLI

qatech is the official command-line tool for QA.tech. It lets you run end-to-end tests, inspect results, expose local servers via tunnels, and chat with the QA.tech agent - all from the terminal. The CLI is designed to be agent-friendly: every command supports --json output, --help with copy-pasteable examples, and exits non-zero on failure so AI coding agents can drive it reliably from your terminal.

Install

npm install -g qatech
Requires Node.js 18+.

Quick start

1

Get an API key

Sign in at app.qa.techSettings → Integrations → API.
2

Configure the CLI

qatech configure -k <your-api-key>
The key is saved to .qatech/config.json in the current directory by default.
3

Discover your tests

qatech test-cases
4

Run a test

qatech run -c <test-case-id> --wait
Streams progress to your terminal and exits with code 1 if any test fails.

Commands

CommandDescription
configureSet up API credentials
test-casesList and search test cases
applicationsList applications in the project
environmentsList environments for an application
runStart a test run
statusCheck or wait for a run’s results
chatChat with the QA.tech agent
tunnelExpose local ports via tunnels
initGenerate Claude Code subagent and skill files
Run qatech <command> --help for detailed flags on any command.

Configuration resolution

The CLI resolves credentials in this order - first match wins:
  1. --api-key flag (per-command override)
  2. QATECH_API_KEY environment variable
  3. .qatech/config.json in the current directory (project-local)
  4. ~/.qatech/config.json (global fallback)
Environment variableDescription
QATECH_API_KEYAPI key
QATECH_API_URLAPI base URL (default: https://api.qa.tech)
QATECH_DEBUGSet to 1 for stack traces on errors

Output conventions

  • stdout → data (JSON or human-readable results)
  • stderr → progress messages, errors, hints
  • With --json, stdout is always valid JSON - safe to pipe to jq
  • Errors with --json are also JSON: { "error": true, "message": "...", "statusCode": 401 }
This split lets you pipe results into jq cleanly:
qatech run -t pln_abc123 --wait --json | jq '.runTestCases[] | select(.result == "FAILED")'

See also