e2e is an end-to-end testing framework for web and mobile apps. Describe a goal in natural language and an agent drives the app to reach it. Check the result with locators and assertions in the same test.
// tests/checkout.e2e.ts
import { test, expect } from 'e2e';
test('a member upgrades to Pro', async ({ app, agent, screen }) => {
await app.open('/settings/billing');
await agent.act('upgrade the workspace to the Pro plan');
await agent.assert('the invoice preview shows a prorated amount');
await expect(screen.getByRole('status')).toContainText('Pro');
});
An agent step that a later assertion verifies records its actions, and the
next run replays them with no model calls until the app changes. Tests
without agent steps need no model. Bring your own subscription, API key, or
local model.
Quick start
npx e2e init
init asks for an engine, web or mobile, and a model provider, then writes a
config and an example test. The
quickstart covers the rest.
To see a finished setup in your stack, open
examples/:
Vite, Next.js, Astro, Expo, SwiftUI, Jetpack Compose, Kotlin Multiplatform,
and Flutter, each a standalone project with a passing suite.
The CLI sends anonymous usage data, such as which commands and engines run and
where runs fail, but no test content, app content, or credentials. Opt out with
npx e2e telemetry disable or E2E_TELEMETRY_DISABLED=1.
Telemetry lists every field.
Status
[!NOTE]
e2e is in active development on the way to 1.0. APIs and config can still
change between minor releases.
Made by TesterArmy
e2e is built by TesterArmy,
the agentic testing platform that runs natural language tests on web and mobile
apps, on every pull request or on a schedule.