# e2e

> Open-source TypeScript end-to-end testing framework for web and mobile apps that mixes natural-language agent steps with deterministic assertions.

e2e is an open-source end-to-end testing framework from TesterArmy for web and mobile apps. Tests are written in TypeScript: you describe a goal in natural language, an agent drives the app to reach it, and locators and assertions in the same test verify the result. The project is Apache-2.0 licensed, and its README notes it is in active development on the way to 1.0, with APIs and config still able to change between minor releases.

## What It Is

e2e is a testing framework that combines agent-driven steps (`agent.act`, `agent.assert`) with precise locators and deterministic assertions in a single test file. It runs from the command line, and `npx e2e init` asks for an engine (web or mobile) and a model provider, then writes a config and an example test. Tests that contain no agent steps need no model.

## How Action Replay Works

When an agent step is later verified by an assertion, e2e records the agent's actions. On the next run it replays them without calling the model until the app changes. In CI mode it switches on automatically with one retry and a read-only trace cache, so agent steps replay verified actions when nothing has changed. The aim is fewer repeated model calls and lower token usage.

## Configuration and Engines

A TypeScript config file selects targets, agents, and models. Any AI SDK model works, through a Vercel AI Gateway, OpenRouter, a direct API key, a subscription sign-in, or a local server. Each agent can be given a custom system prompt. Engines are separate packages: a web engine using Playwright (Chromium, Firefox, WebKit), a mobile engine for iOS simulators and Android emulators through agent-device, and a mechanism for bringing your own engine. Additional packages cover a GitHub pull request reporter, Kernel hosted browsers, EAS Simulators, and decision-model executors.

## Running and Debugging

Failed runs produce a report with the failing step, a screenshot, a trace, and logs under `.e2e`, and `--headed` or `--debug` lets you watch a run live. Secrets are referenced as named environment variables so values stay out of test code and transcripts. The docs include migration guides for Playwright, Cypress, Selenium, Detox, and Maestro. The CLI sends anonymous usage telemetry, which can be disabled with `npx e2e telemetry disable` or `E2E_TELEMETRY_DISABLED=1`.

## Features
- Natural-language agent steps (agent.act and agent.assert)
- Deterministic locators and assertions in the same test
- Replay of cached agent actions without model calls
- Bring your own model, gateway, API key, subscription, or local model
- Custom agent system prompts
- Web testing via Playwright (Chromium, Firefox, WebKit)
- iOS and Android testing via simulators and emulators
- Bring-your-own execution engine
- CI mode with read-only trace cache and retry
- Failure reports with screenshot, trace, and logs
- Secrets handled through environment variables
- Migration guides from Playwright, Cypress, Selenium, Detox, and Maestro
- GitHub pull request comment reporter

## Integrations
Playwright, agent-device, Vercel AI Gateway, OpenRouter, OpenAI, Claude, Gemini, Llama, Mistral, DeepSeek, GitHub, Kernel, EAS Simulators, Expo

## Platforms
WINDOWS, MACOS, LINUX, ANDROID, IOS, WEB, API, DEVELOPER_SDK, CLI

## Pricing
Open Source

## Version
@e2e-dev/web@0.12.0

## Links
- Website: https://tester.army/e2e
- Documentation: https://e2e.tester.army/docs
- Repository: https://github.com/tester-army/e2e
- EveryDev.ai: https://www.everydev.ai/tools/e2e
