StackMap
Subscribe
Explore / e2e
tester-army

e2e

Agentic e2e testing for web and mobile: describe a goal, an agent drives the app, locators assert the result. Verified agent steps replay with zero model calls until the UI changes.

13,321 693 TypeScript Apache-2.0updated yesterday
View on GitHubDispute this mapping →
Curator's take

Pick it when Playwright selectors keep rotting and you want one runner for web (Chromium/Firefox/WebKit) and iOS/Android, with agent steps only where intent beats selectors. The record-then-replay cache is the real feature: once a later assertion verifies an agent step, CI reruns cost no model calls until the app changes. Bring your own key, local model, Claude Code/Codex via ACP, or a decision-model executor (Jev-style) for cheap bounded actions. Skip it if you need a stable API today (pre-1.0, config still moves), if you are testing an LLM's outputs rather than an app (use an eval framework), or if your suite is already deterministic Playwright that never flakes.

Mapped by ShipWithAI editors · links verified

Continue your stack

What teams reach for next — and why each earns a place beside e2e. Ranked by curator confidence.

pairs wellpairs wellalternativebrowsertypesafe-computer-usebrowser-usee2e
pairs wellalternativebuilt withpick a node for the why · open it from the panel
Weekly digest
README.md2 min read

e2e, the agentic testing framework

npm version License: Apache-2.0 Join the community on Discord

tester-army/e2e | Trendshift

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.

// 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, 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/browserstack](https://www.npmjs.com/pack