Next generation e2e testing framework for web and mobile apps.

★ 12,819⑂ 668👁 26▤ 72
TypeScriptCreated 2026-07-22e2e.com
12,819
stars
+0+229+8,348
668
forks
26
watchers
–
prs
–
issues
72
releases
–
discussions

README

e2e

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.

ts
// 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

bash
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, Angular, Expo, SwiftUI, Jetpack Compose, Kotlin Multiplatform,
Flutter, and .NET MAUI, each a standalone project with a passing suite.

 Packages

 Core

| Package | What it does |
| --- | --- |
| e2e | The SDK, runner, and CLI. |
| @e2e-dev/web | Browser engine: Chromium, Firefox, and WebKit through Playwright. |
| @e2e-dev/mobile | iOS and Android engine: simulators and emulators through agent-device. |
| @e2e-dev/decision | Decision-model executors for bounded semantic actions and assertions, and decisionFilter(), which leaves out the tests a pull request is unlikely to affect. |
| @e2e-dev/acp | Runs agent steps on your own coding agent (Claude Code or Codex) over the Agent Client Protocol. |

 Integrations

| Package | What it does |
| --- | --- |
| @e2e-dev/kernel | Kernel hosted browsers for the web engine. |
| @e2e-dev/lightpanda | Lightpanda, the open-source headless browser, started per run for the web engine. |
| @e2e-dev/smol | smol machines browsers for the web engine: by default, each attempt branches a warm Chromium microVM. |
| @e2e-dev/testmu | TestMu AI (formerly LambdaTest) hosted Android emulators, iOS simulators, and real devices for the mobile engine, and hosted Chrome and Edge for the web engine. |
| @e2e-dev/e2b | E2B sandboxes: Android 16 for the mobile engine, and Chromium for the web engine. |
| @e2e-dev/browserstack | BrowserStack App Automate real Android and iOS devices for the mobile engine. |
| @e2e-dev/limrun | Limrun hosted iOS simulators and Android emulators for mobile tests. |
| @e2e-dev/eas | Expo Simulators hosted iOS simulators and Android emulators for the mobile engine. |
| @e2e-dev/github | Reporter that posts results as a pull request comment. |

 Community

Packages built on e2e's public API and maintained outside this repository.

| Package | What it does |
| --- | --- |
| e2e-cige | CIGE test cases (Context, Intent, Guardrails, Execution) as JSON, run 

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON