The browser runs on your machine or CI runner, and your instance makes every decision. A blocking failure exits non-zero, so your pipeline can act on it. Prefer nothing to install? Use the web app.
npx zerocheck run --env stagingVersion 0.2.1. Node 20.19 or newer. Needs a dedicated Zerocheck instance from onboarding, and Chromium installed with one command.
Tests are plain YAML files in your repository. Any agent that can edit a file and run a command can add a test, run it with the CLI and read the run record.
Works with
The CLI reads zerocheck.yaml and the selected YAML tests, and drives the browser. Your repository supplies the tests and configuration, and your instance keeps the results.
Add zerocheck to devDependencies and download the Chromium browser it drives. You need Node 20.19 or newer.
npm install --save-dev --save-exact zerocheck
npx playwright install chromiumYour instance URL comes from onboarding; there is no default public service. login prints a URL and a code for you to approve in your browser. In CI, set a project token as ZEROCHECK_TOKEN instead.
export ZEROCHECK_API="https://your-instance.example.com"
npx zerocheck login
npx zerocheck whoamiRepository tests are YAML files next to your code, and zerocheck.yaml names the project and environments. We set these up with you during onboarding. Download YAML brings a web test across as an independent copy; edits do not synchronize.
version: zerocheck/v1
name: Release notes are available
blocks_merge: true
steps:
- Navigate to /releases
- Verify text "Release notes" is visiblerun executes the selected YAML files in a browser on your machine. A blocking failure exits 1, so a CI job you write can act on it. Require that job in branch protection to enforce your merge policy.
npx zerocheck run --env dev
npx zerocheck run zerocheck/tests/release-notes.yaml
npx zerocheck run --env staging --json .zerocheck/latest-run.jsonThe CLI drives Chromium on your machine or CI runner. Your instance reads each test, makes the model calls, chooses each action and keeps the results.
The browser runs where you run the CLI, so it reaches what your machine reaches. It still needs network access to your instance; it does not run offline.
Pass a file path or a folder. With no path, run uses your configured test directory. Selection is by path only.
0 when every blocking test passed, 1 for a blocking failure, 2 when the run gave no verdict. A pass after a transient retry is labeled flaky; --fail-on-flaky makes a blocking flaky test exit 1.
--json writes the run record to a file. Steps, screenshots and any recording are on your instance, behind its sign-in.
Secrets are environment variable references. Your instance receives their names, not their values, and the CLI types a value only where the test refers to it.
The output format, with example test names. A failed test names its step, and the link opens the evidence on your instance.
$ npx zerocheck run --env staging
staging / local: failed (RUN_ID)
PASS Release notes are available
FAIL Discount code reaches confirmation
Attempt 1: Verify text "Order confirmed" is visible: <error text>
Results: https://your-instance.example.com/runs/RUN_ID
Add zerocheck to devDependencies, run npx playwright install chromium, set ZEROCHECK_API to your instance URL, then run npx zerocheck login.
It reads zerocheck.yaml and the selected YAML tests, then drives a browser on your machine. It prints each result and a link to the run, which is kept on your instance.
CLI tests live in your repository as YAML files. Tests created in the web app are saved and edited there, and Download YAML creates an independent repository copy. Web and repository edits do not synchronize.
Yes. Sign in with zerocheck login on your machine. In CI, set ZEROCHECK_API and put a project token from Settings in ZEROCHECK_TOKEN.
login, logout, whoami and run. Checklist import and hosted runs are in the web app.
A JSON run record with --json. That is the only format.
Yes. An agent can run zerocheck run --json and read the run record and exit code. A person approves the sign-in. The CLI has no MCP server.
Yes. Runs are headless by default, and --headed shows the browser. Chromium still has to be installed where the CLI runs.
In zerocheck.yaml, map each secret to an environment variable, such as PASSWORD: ${APP_TEST_PASSWORD}, and set that variable where the CLI runs. Missing values stop the run before it starts. A run whose environment has configured secrets is not recorded on video.
Point an environment at the preview URL in zerocheck.yaml and select it with --env. Environments are named dev, staging and production. The URL is a literal value, so for a per-pull-request preview, have your job write it into the file first.
US$500 in credits at sign up, then US$500/month: a dedicated instance for your team, with hands-on setup of your first tests.