Free tier · hands-on onboarding →

Catch bugs before your users do.

Zerocheck is an AI QA engineer that tests your app end to end. Verify critical flows and find bugs before you ship.

Arni, the founder, sets up your E2E tests on the call. Free trial, then $500 a month.

Write tests in plain English

zerocheck/tests/checkout.yaml

checkout.yaml
1version: zerocheck/v1
2name: Discount code reaches confirmation
3blocks_merge: true
4steps:
5 - Navigate to /cart
6 - Enter "SPRING20" in the discount field
7 - Click Apply
8 - Verify "Discount applied" is shown
9 - Pay with the test card ${TEST_CARD}
10 - Click Place order
11 - Verify "Order confirmed" is shown
zerocheckFailing after 1m 21s
Verify before deploy

app.tryzerocheck.com/runs/run_8f3k2q

Check results

Failed

Discount code reaches confirmation

Environment staging · Browser local · Attempt 1 · Screenshots 7

  1. Navigate to /cart
  2. Enter "SPRING20" in the discount field
  3. Click Apply
  4. Verify "Discount applied" is shown
  5. Pay with the test card ${TEST_CARD}
  6. Click Place order
  7. Verify "Order confirmed" is shownPage showed "Payment declined"

Built for teams shipping with

Claude CodeClaude Code
CodexCodex
GitHub CopilotGitHub Copilot
CursorCursor
Amp

AI agents ship changes in minutes. Testing and verifying still takes hours.

Coding agents write more code than your team can check by hand. Selector-based test suites break on the first refactor, and each flaky failure sends an engineer to triage instead of to the next change.

Read how teams test without a QA team and run end-to-end tests without QA.

60-70%

of testing budget goes to maintaining brittle tests.

World Quality Report

40+ hours

of manual testing to run Lucid's regression each release.

Lucid Engineering

No more manual QA or brittle test suites.

Zerocheck drafts, runs, and heals your end-to-end tests, so your team catches bugs without babysitting a test suite.

01

Write tests in plain English

zerocheck/tests/signup.yaml

version: zerocheck/v1
name: Signup creates a workspace
blocks_merge: true
steps:
  - Navigate to /signup
  - Enter "${EMAIL}" into the Email field
  - Click Create workspace
  - Verify "Welcome" is shown

Human-readable tests, kept in the web app or as YAML files in your codebase. No XPath or CSS selectors to maintain.

Learn more →

02

Run locally and in CI

.github/workflows/zerocheck.yml

- run: npx zerocheck run --env staging
- run: npx zerocheck report --file .zerocheck/latest-run.json
  if: always()

✓ zerocheck (pull_request)  Successful in 1m 21s

Run anywhere with a single CLI command. Integrate with any pipeline that can run Node.js, gate every pull request, or run in a hosted browser from the web app.

Learn more →

03

Import your test cases

zerocheck import

$ npx zerocheck import release-checklist.md
Checklist import 7c1e4b: completed
  verified passing  Signup creates a workspace
  verified passing  Invite a teammate
  could not run     Export invoices as CSV

Paste the checks your team does by hand, in the web app or with one command. Each item becomes a human-readable test with a real browser result. Start here if your checks already live in a document: no frameworks to learn, no scripts to maintain.

Learn more →

04

Auto-heal as your product evolves

Zerocheck resolving a natural-language element target to the main call-to-action in a rendered browser page.

When a target moves, the test re-resolves it from the step's description and records the old target and the new one. A heal is saved only when the whole test passes with independent evidence; otherwise it stays pending. Real regressions remain failures.

Learn more →

05

See why a test failed

Zerocheck pull request comment with recording evidence, screenshots, and a step trace.

A failed test shows the exact step, its screenshots, console errors and every attempt, in the web app, the CLI and one PR comment. A pass after a transient retry is marked flaky, never hidden.

Learn more →

Bugs caught by Zerocheck

Catch them before they reach production. Nobody writes or maintains a script.

CheckBefore merge

Discount accepted. Full price at checkout.

A shopper applies SPRING20 to a $100 order. “Discount applied” appears, but the total stays at $100 instead of $80.

Impact

Shoppers are asked to pay more than promised.

CheckBefore launch

Quote form rejects a completed request

A buyer finishes the quote form and clicks Submit. “Complete all required fields” appears, even though nothing is missing.

Impact

An enquiry is blocked just as the buyer is ready to talk.

CheckBefore deploy

Signup stops at email verification

A new customer submits the signup form. The page stays on “Sending verification email,” with no way to continue.

Impact

New customers cannot finish creating an account.

CheckBefore merge

Upgrade confirmed. Pro features still locked.

A customer chooses Pro and sees “Upgrade successful.” When they reopen the account, it still says Free.

Impact

The features they upgraded for remain locked.

CheckBefore release

Next page drops the active filters

A shopper filters for in-stock items in their price range. On page two, sold-out items and products over budget appear again.

Impact

Shoppers have to narrow down their results all over again.

CheckIn staging

Removed admin access still works

A teammate’s role changes from Admin to Viewer. After signing back in, they can still open restricted billing settings.

Impact

Former admins can still view restricted billing details.

The QA agent for your web app.

Nothing to script. First tests running in just a couple of minutes. Your current release checklist can become your test suite.

01Describe a user flow and its expected result in plain English

~1 min

Describe a flow, or paste the release checklist your team clicks through by hand. Each item becomes a test you can read, in the web app or as YAML in your repo. No XPath or CSS selectors.

version: zerocheck/v1
name: Add Buy milk todo
blocks_merge: true
steps:
  - Navigate to /todomvc/
  - Enter "Buy milk" in the new todo field
  - Press Enter
  - Verify it appears in the list

02Start a run locally or in CI

~1 min

One command on your laptop or in GitHub Actions, or run it in a hosted browser from the web app.

npx zerocheck run --env staging

03Verify before you merge or deploy

every PR

Make the tests a required check: a blocking failure exits non-zero and stops the merge, and the same tests run against staging or production before you deploy.

$ npx zerocheck run --env staging
  FAIL  Discount code reaches confirmation
exit 1: blocking failure, merge blocked
Arni Mittal
Arni Mittal
Founder, Zerocheck

Why I built Zerocheck.

I spent years watching the same pattern repeat across teams: add Playwright tests → a redesign breaks half of them → nobody fixes the selectors → tests get commented out → production breaks six weeks later. The tests failed because they depended on selectors that changed during redesigns.

Zerocheck starts from the checklist your team already trusts. Each item becomes a plain-English test with a real result. When the UI moves, the test finds the new target and shows you what changed. When the flow breaks, you get the failing step, not a green check.

Book a call and I’ll set up your first tests with you, on your app.

You’re already paying for app testing

CI passes, but code alone does not prove the app works.

Unit tests catch code issues. They miss a broken checkout, or a CSS change that hides the buy button. The manual click-through your team still does is the QA run Zerocheck automates.

Playwright still needs setup and maintenance.

Someone has to wire it into CI, write the selectors, and fix them every time the UI changes.

“Won’t AI-run tests flake in CI?”

Navigation, key presses, URL checks, quoted-text checks and targets a passing run already proved run without a model. The AI finds targets that aren’t proven yet and judges plain-English Verify steps; it never clicks. A transient error is retried once in the same browser, and a pass after that is labeled flaky. Assertion failures are never retried.

“Can’t I just use Playwright MCP with Claude Code?”

Playwright MCP gives your coding agent a browser. Zerocheck gives it a test suite: the same MCP server writes and runs tests from coding agents such as Claude Code or Cursor, runs them in CI, and posts results to the PR.

Frequently asked questions

Bring the flow you click through by hand. It becomes your first saved test.