<aside> 🪖

Everything you need to show e2e in your videos and posts. What e2e does and its features, ideas for what to show on camera, logos, stills, colours, fonts, the words to use and the links to share. Download the two packs below and you are ready to record.

</aside>

<aside> 📦

Logo pack

Icon, helmet, lockup and wordmark in SVG and PNG, for dark and light backgrounds.

Logos: icon, helmet, lockup and wordmark, SVG and PNG

Logos: icon, helmet, lockup and wordmark, SVG and PNG

</aside>

<aside> 🎞️

Stills pack

Five ready-made frames at 2400 x 1260 to cut into your video.

Stills for your videos: five ready-made frames, 2400 x 1260

Stills for your videos: five ready-made frames, 2400 x 1260

</aside>


About e2e

e2e is a free, open source testing framework for web, iOS and Android, made by TesterArmy (YC 26). A developer describes a goal in plain language, an agent drives the app to reach it, and locators and assertions check the result in the same test.

It runs on your own model subscription, API key or local model, and works with Claude Code, Codex and Cursor.

<aside> ⚡

Start in one command

npx e2e init

</aside>

One line to copy: e2e is a free, open source testing framework where an agent tests your web or mobile app from a goal you write in plain language.

Licence Apache-2.0, free forever
Platforms Web, iOS and Android
Works with Claude Code, Codex, Cursor
Get started npx e2e init

What e2e does

A test in e2e

A test mixes plain-language goals that an agent completes with exact checks that need no model. This one upgrades a workspace and checks the result:

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');
});
Step API What it does Model call
Goal agent.act The agent drives the app until the goal is done Yes, unless the cache replays it
Judgement agent.assert, agent.waitFor, agent.extract The agent checks or reads what is on screen Yes
Exact check screen and expect Locators and assertions, like Playwright No

Features

<aside> 💬

Goals in plain language

Write what a user wants to do instead of a script of selectors and waits. When the UI changes, the agent adapts, so you fix fewer tests.

</aside>

<aside> ⚡

Replay cache

Once a later check verifies a goal, e2e records the actions. The next run replays them with no model calls and hands back to the agent when the app has changed.

</aside>

<aside> 📱

Web, iOS and Android

The web engine drives Chromium, Firefox and WebKit through Playwright. The mobile engine drives iOS simulators, Android emulators and connected phones through agent-device. You can also write your own engine.

</aside>

<aside> 🔑

Bring your own model

Use a plan you already pay for (ChatGPT, GitHub Copilot, OpenCode, SuperGrok, or Claude API credits), any API key through the AI SDK, or a local model.

</aside>

<aside> 🤖

Built for coding agents

e2e init installs a skill for Claude Code, Codex and Cursor, and e2e mcp lets the agent use your app, try locators and read failure traces.

</aside>

<aside> 🧭

Explore and bug bash

e2e explore gives the agent a goal with no test file, and it reports what it finds with steps to reproduce. A bug bash runs many explorers at once and proves each bug with a failing test.

</aside>

<aside> 🖼️

Visual comparison

toHaveScreenshot compares the screen, or one element, with a stored screenshot, on web, iOS and Android in the same test.

</aside>

<aside> 🔌

API tests in the same run

Call your API with fetch and check the response against a Zod, Valibot or ArkType schema, next to the UI tests.

</aside>

<aside> 🔐

Sign in once, keep secrets secret

A setup test signs in and saves a session that other tests reuse. Passwords are handles: the runner types them and redacts them from model input and reports.

</aside>

<aside> 🚦

CI and pull requests

Runs on GitHub Actions, EAS Workflows, Bitrise, Codemagic or any CI with Node. The GitHub reporter posts the results as a pull request comment.

</aside>

<aside> ☁️

Hosted browsers and devices

Official integrations with Kernel, EAS Simulators, Limrun and smol machines, or plug in any provider of your own.

</aside>

<aside> 🔍

Readable reports

Every failed test gets a trace page with each step, the evidence and the screen at failure, for you or your coding agent.

</aside>

Moving from another framework

The docs have step-by-step migration guides from Playwright, Cypress, Selenium, Maestro and Detox: e2e.tester.army/docs.

Example projects

Standalone apps with passing suites you can clone and run: Vite, Next.js, Astro, Expo, SwiftUI, Jetpack Compose, Kotlin Multiplatform and Flutter. They live in the examples folder of the repo.