skip to content

[ open source · built for agents ]

the software verification layerfor the agentic coding era

npx e2e init

building software got fast.
verification did not.
e2e verifieseach change as you build it, the
way a user would.
with e2eyou can trust your coding agents

[ why e2e ]

you chooseevery possible layer

pick the model, the platform, and where it runs.
mix agent steps with deterministic checks.

  1. [001]

    open source

    open by default, read it, change it,
    run it wherever.

  2. [002]

    any platform

    write once, run everywhere.
    web, iOS, Android.

  3. [003]

    agentic + deterministic

    agentic driven actions, precise locators,
    deterministic assertions.

  4. [004]

    model agnostic

    use any model, your api keys
    or subscriptions.

[ how it works ]

it works with workflowsyou already have

e2e lives in your repo, runs in your terminal and ci, and works
with your coding agent. verification becomes part of building.

import { describe, test } from '@e2e-dev/web';
import { expect } from 'e2e';
('checkout', { session: 'member', tags: ['payments'] }, () => {
('pays for the cart with a test card', async ({ app, agent, screen }) => {
await app.('/shop');
await agent.('add two items to the cart, then go to checkout');
await (screen.('heading', 'Checkout')).();
await agent.('pay with the card {card}', {
params: { card: '4242 4242 4242 4242' },
});
await (screen.('order-status')).('Paid');
await (screen.('Thank you for your order')).();
});
});
$ npx e2e run tests/checkout.e2e.ts

  RUN  e2e v0.22.0 ~/my-app
 ✓  web  tests/checkout.e2e.ts (1 test) 2.14s   ✓ checkout > pays for the cart with a test card 2.14s     ✓ agent.act "add two items to the cart, then go to checkout" 742ms     ✓ agent.act "pay with the card {card}" 586ms Test Files  1 passed (1)
      Tests  1 passed (1)
      Cache  2 replayed
   Duration  3.45s (startup 1.31s)
main · local1 test · 2 replayed · 0 model calls

[ community ]

used every day.built in the open.

[ for enterprise ]

open source,adopt it for years

choosing a testing framework is a decision for years, not weeks.
e2e is built in open source.

your-repo
  • your-repo
  • app
  • components
  • lib
  • public
  • tests
  • auth.e2e.ts
  • checkout.e2e.ts
  • wallet.e2e.ts
  • account.e2e.ts
  • onboarding.e2e.ts
  • search.e2e.ts
  • settings.e2e.ts
  • e2e.config.ts
  • package.json
main · locale2e · open source

nothing locks you in

e2e is open source and your tests are plain files in your repo.
the only thing that locks you in is that it just works.

your infrastructure
resourcewhere it runsowner
  • cloudyour cloud• you
  • ciyour pipeline• you
  • modelyour provider• you
  • api keyyour env• you
  • datayour infra• you

bring your own everything

e2e runs on your machines and in your pipeline, with the
coding agent and model provider you already approved.

[ at scale ]

verificationat every scalerolled outby the team behind it

[ faq ]

frequently askedquestions

[001]is e2e really free?

yes. the framework is open source and stays free. you run it on your own machines and in your ci, with your own model.

[002]do i pay for tokens on every run?

no. verified steps are cached and replay without calling the model. if a step needs to adapt to a change in your app, the model figures it out again and updates the cache.

[003]where does it run, and what happens to our data?

on your infrastructure: your machines, your ci, your cloud. you bring your own model and api key. your model provider processes the requests needed to run agent steps.

[004]how do we move from the tool we use today?

start small: describe a few critical flows in plain language and run them next to your current suite. move the rest over as you go.

ask anything else

[ resources ]

learn it, or let youragent read it

guides, live sessions and ready-made examples. read them yourself,
or paste a link into your coding agent and ask it to set things up.

[ get started ]

your verificationlayerstarts withjust one command

npx e2e init