Same YAML on your laptop and in CI. JUnit and JSON reports. A failing test exits non-zero, which is all your pipeline needs to stop a bad merge. Prefer nothing to install? Start in the web app.
npx zerocheck run --env stagingNode 20.19 or newer. Local runs install Chromium with one command. Hosted runs need no browser install.
Built for teams shipping with
The CLI reads zerocheck.yaml, collects the YAML checks in your project, and runs them. Your repository supplies the tests and configuration; Zerocheck supplies the AI service and shared results.
Add zerocheck to devDependencies, sign in, and write zerocheck.yaml with your environments. Local runs install Chromium with one command; hosted runs need no browser install.
npm install --save-dev --save-exact [email protected]
npx zerocheck login
npx zerocheck init --url http://localhost:3000 --github-actions
npx zerocheck installRepository tests are YAML files next to your code. Review and save imported drafts, edit tests by hand, or use a compatible coding agent through MCP.
version: zerocheck/v1
name: Release notes are available
blocks_merge: true
steps:
- Navigate to /releases
- Verify the Release notes heading is visibleThe same command runs on your laptop and on a CI runner. A blocking failure exits non-zero; configure the workflow check as required to enforce your merge policy. The report command updates one PR comment.
npx zerocheck run --env dev
npx zerocheck run --env staging --json .zerocheck/latest-run.json --junit .zerocheck/junit.xml
npx zerocheck report --file .zerocheck/latest-run.jsonnpx zerocheck run --env dev starts the tests against your dev server. Localhost and private networks work because the browser runs where you run it.
Pass a file path or a directory. Empty, invalid, or duplicate selections fail before a browser opens; run never invents starter checks.
--json writes the complete run with every attempt. --junit writes JUnit XML for CI. Results and screenshots upload to the web app, with recordings when no configured credentials are used.
0 for a completed accepted result, 1 for a blocking failure, 2 for setup, incomplete, or infrastructure errors. A pass after a transient retry is labeled flaky; --fail-on-flaky makes a blocking flaky test fail CI.
--runner hosted runs the same YAML in Zerocheck's hosted browser against a URL it can reach. Runner, environment, and trigger are independent.
npx zerocheck mcp starts a stdio server. Coding agents such as Claude Code or Cursor reach the same import, run, results, and cancel tools, so an agent can write a check and run it in the same turn.
Real import against the TodoMVC demo app, 6 September 2026. One item could not run, and it says so.
$ npx zerocheck import release-checklist.md --env dev
Checklist import f467c792-c905-4931-9d34-0683148282af: completed
heading # TodoMVC release checklist
verified passing Open the app and confirm the "todos" heading is visible
zerocheck/tests/import-f467c792/item-3.yaml (dfd265b1)
verified passing Add a todo "Buy milk" and verify it appears in the list
zerocheck/tests/import-f467c792/item-4.yaml (8e989a99)
could not run Mark "Buy milk" as completed and verify the "Clear completed" button appears
AI could not confidently identify a valid action for this step.
zerocheck/tests/import-f467c792/item-5.yaml (2ed53656)
Review the exact YAML, then save with: zerocheck import --draft f467c792-c905-4931-9d34-0683148282af
Add zerocheck to devDependencies, run npx zerocheck login, then npx zerocheck init to write zerocheck.yaml. Run npx zerocheck install once on a new machine or CI runner to install Chromium.
It reads zerocheck.yaml, collects the YAML checks in the project, runs them in a browser against the selected environment, and writes results locally and to the web app.
CLI tests live in your repository as YAML files you can review in pull requests. Tests created in the web app can be saved, edited and rerun there, with individual YAML downloads. To save imported drafts in your repository, review them first and use zerocheck import --draft.
Yes. Sign in with zerocheck login on your machine, or set ZEROCHECK_TOKEN to a project token in CI secrets.
A complete JSON run record and JUnit XML. The report command turns the JSON into a GitHub job summary and a PR comment.
Yes. Coding agents such as Claude Code or Cursor reach the same commands through the MCP server, so an agent can import a checklist, run a check, and read the result in one turn.
Yes. The same CLI is published on npm under 13 other command names (e2e-testing, e2e-qa, e2e-agent, agentic-qa, e2e-verify, bugbash, qa-tests, qa-checks, run-qa, agentic-testing, agentic-e2e-testing, browser-qa and web-qa), each pinned to the same version, so npx e2e-testing run and npx zerocheck run are the same program. The docs use zerocheck; use whichever name you installed.
Yes. Runs are headless. Hosted runs need no browser on your machine at all.
Define an environment in zerocheck.yaml and reference values as ${NAME}. Only referenced variables are read, from your shell, your CI secret store, or the hosted server. Missing values stop the run.
Point an environment at the preview URL in zerocheck.yaml and select it with --env. Dev, staging, and production are named explicitly.
Point Zerocheck at your app. Free to start, no credit card.