# e2e > An open framework for agentic end-to-end testing. - [Introduction](https://docs.e2e.army/index.md): End-to-end tests in plain TypeScript, with agent steps you can bound and inspect. - [Quickstart](https://docs.e2e.army/quickstart.md): Scaffold a project, run a browser test, then add an agent step. - [Writing tests](https://docs.e2e.army/writing-tests.md): Goals, checks, extraction, and the deterministic APIs. - [Starting your app](https://docs.e2e.army/starting-your-app.md): Point the runner at a running app, or let it start the app and its dependencies. - [Working with the browser](https://docs.e2e.army/browser.md): Mock an API, handle a dialog, download a file, reach into an iframe, and pick a browser and viewport. - [Testing iOS and Android](https://docs.e2e.army/mobile.md): Set up a simulator or emulator target, write a device test, and know what differs from the web. - [Choosing a model](https://docs.e2e.army/models.md): Which model an agent uses, which package constructs it, and where its key comes from. - [Signing in](https://docs.e2e.army/authentication.md): Sign in once in a setup test, reuse the session everywhere, and keep the password out of the model. - [Agents and personas](https://docs.e2e.army/agents.md): Configure several agents in one suite, pin tests to them, and run one flow as each persona. - [Caching agent steps](https://docs.e2e.army/cache.md): A passing agent.act records its actions, and the next run replays them with no model call. - [Debugging a run](https://docs.e2e.army/debugging.md): Read the report, open the evidence, watch the browser, and see what the model was sent. - [Exploring without a test](https://docs.e2e.army/explore.md): Give the agent a goal instead of a test file. It plans its own steps, drives the app, and reports what it finds. - [Continuous integration](https://docs.e2e.army/ci.md): One workflow, the defaults the runner changes in CI, and how to keep model-backed tests opt-in. - [Pull request comments](https://docs.e2e.army/github.md): The @e2edev/github reporter posts one comment per run from GitHub Actions and keeps it current. - [Coding agents](https://docs.e2e.army/coding-agents.md): What e2e gives Claude Code, Codex, Cursor, and friends, and how they should use it. - [How agent steps work](https://docs.e2e.army/agent-steps.md): What the model sees, what it may do, how a step ends, and what it costs. - [Project tools](https://docs.e2e.army/tools.md): Give the built-in agent your own tools, scoped to the platforms where they make sense. - [Custom executors](https://docs.e2e.army/executors.md): Keep the built-in loop with your own prompt and vocabulary, or replace the executor with any decision process. - [Writing an engine](https://docs.e2e.army/writing-an-engine.md): How the runner talks to a surface, and what it takes to add a new one. - [test](https://docs.e2e.army/reference/test.md): Tests, setup tests, groups, hooks, options, and fixtures. - [expect](https://docs.e2e.army/reference/expect.md): Locator assertions, fixture assertions, and plain value matchers. - [screen and Locator](https://docs.e2e.army/reference/screen.md): Queries, refinement, actions, and reads. - [app](https://docs.e2e.army/reference/app.md): The portable app lifecycle fixture, available on every platform. - [agent](https://docs.e2e.army/reference/agent.md): Planned flows, judgments, extraction, and their budgets. - [E2EConfig](https://docs.e2e.army/reference/config.md): Every configuration key, its default, its valid range, and the environment variables. - [CLI](https://docs.e2e.army/reference/cli.md): e2e init, guide, mcp, run, explore, list, cache, and telemetry, flag by flag. - [MCP server (e2e mcp)](https://docs.e2e.army/reference/mcp.md): Give a coding agent a live session on the app, with the testing agent's tools behind four fixed MCP tools. - [Reporters](https://docs.e2e.army/reference/reporters.md): Reporter objects in `reporters`, what they receive, and what the runner guarantees them. - [Environment variables](https://docs.e2e.army/reference/environment.md): Every variable the runner and the first-party engines read, and what each one does. - [Errors](https://docs.e2e.army/reference/errors.md): Every code you can see, its class, and its exit code. - [Telemetry](https://docs.e2e.army/telemetry.md): What the CLI sends, what it never sends, and how to turn it off. - [Playwright](https://docs.e2e.army/reference/playwright.md): The browser engine, its options, and the web fixture it contributes. - [agent-device](https://docs.e2e.army/reference/agent-device.md): The mobile engine for iOS simulators and Android emulators, its options, and the device fixture it contributes. - [e2e/engine](https://docs.e2e.army/reference/engine.md): The engine contract a target's surface implements, and the fixture context it contributes through.