The verification layer
for your software factory.

Black-box tests for your web apps, written and maintained as code by AI agents, and run on infra that lets you ship fast.

peek at our own test repo
Book a demo
Product walkthrough · 12 min

Trusted by fast growing teams

  • Wayground
  • Atlan
  • Shopflo
  • DPDzero
  • 100ms
  • Leap
  • Sortment
  • Shipsy
  • SciSpace
  • Mili

01 · Infra

Fast infra for browser tests

Playwright on CI splits tests by file order, so one slow shard holds up the whole run. We schedule every test from its duration history, longest first, so shards finish together.

  • Duration-aware sharding, retries, and parallel workers
  • No CI config or runners to maintain
  • Video, trace, and logs for every test
Playwright + CI · file order 21 min
Empirical · longest first 17 min
Same 16 tests · 4 shards · illustrative durations

02 · Agent

A suite that maintains itself

When your app changes, the agent figures out whether a failure is a bug, a flake, or a test that drifted — then fixes the test or tells you about the bug, in Slack, with evidence.

  • Writes new tests from a prompt, a PR, or a ticket
  • Triages every failure and repairs drifted tests
  • Every change lands as a PR, reviewed by an engineer
  1. 09:12 Deploy checkout v2.4 shipped to staging
  2. 09:31 Run 3 failures in checkout/
  3. 09:33 Agent Triaged — 2 tests drifted (button renamed), 1 real regression
  4. 09:34 Agent Posted to #releases: coupon field rejects valid codes Slack
  5. 09:41 Agent Opened PR #1260 — updated 2 tests, re-ran green
  6. 09:58 Engineer Reviewed and merged

03 · Composability

Primitives you can build on

Everything in the dashboard is a primitive with an API and a CLI. Trigger runs from your pipeline, hand work to the agent from your own coding agent, and pull results wherever you need them.

  • CLI and API for every action in the product
  • Agent skill for Claude Code, Codex, and friends
  • Results in GitHub checks, Slack, and your tracker
$ empirical session -x "add a test for coupon codes at checkout"
✓ PR #1262 opened · 1 test added · run passed

$ empirical api api/test-runs/4821/status
{ "status": "failed", "passed": 211, "failed": 1 }

Stories and writing

Customer stories
View all