Empirical infra
Built for browser tests.

A machine per shard, tests packed longest first, browsers and dependencies ready before the first test, and billing by test minutes.

01 · Horizontal scaling

Every shard runs on its own machine, started when the run triggers. Set the shard count per project: more shards, shorter runs.

Run · 212 tests git push

Your CI · 4 runners 00:00

queued · waiting for a runner

Empirical · 24 machines, 16 vCPU each 00:00

allocating machines for this run

5× faster 04:12 vs 21:00

Same 212 tests. Your CI finishes in 21:00; Empirical finishes in 04:12.

02 · Longest-first scheduling

Playwright's --shard splits tests by file order. We keep a duration history for every test, sort longest first, and give each test to the least-loaded machine. Machines finish at about the same time.

Playwright · file order 21 min

1
2
3
4

Empirical · longest first 17 min

1
2
3
4
Same 16 tests · 4 shards · illustrative durations

03 · Zero setup

Connect your test repo and run. Chromium is baked into the image and node_modules restores from a snapshot of your lockfile, so tests start in seconds.

Shard 3/24 · setup

clone 2s

node_modules snapshot · 1s

browsers preinstalled

tests running

Included with every run:

  • Trace, video, and screenshots per test
  • Retries for flaky tests
  • One merged report per run
  • Spot interruptions resume where they stopped
  • Env vars per environment
  • Static IPs for allowlisting
  • No workflow YAML or runner pool

04 · Usage-based billing

You pay for test minutes: the time your tests spend running. Machine boot, installs, and idle capacity aren't billed.

Receipt · run #4821

Test minutes metered

Machine boot 0

Install and setup 0

Idle machines 0

Billed test minutes