Skip to main content
e2e runs end-to-end tests written in TypeScript. A test mixes two kinds of calls. Deterministic calls (screen, app, expect) do exactly what they say and cost no model tokens. Agent calls (agent.act, agent.assert) hand one goal or one question to a model under a deadline and a call budget.
tests/checkout.e2e.ts
The runner owns everything around the model: what it sees, what it may do, how many calls it gets, and what ends up in the report. You choose the model and can replace the agent outright.
e2e.config.ts

What you get

  • Bounded agent steps. Every agent.* call has a deadline and a model-call budget, and ends in a verdict: passed, failed, or blocked.
  • Secrets the model never sees. A password is an opaque handle. The model gets its name; the runner fills the field.
  • Replay instead of re-thinking. In read-write cache mode, an agent.act followed by a recorded verification can save its actions. Later runs replay them with no model call until the app diverges.
  • One contract, any surface. @e2edev/playwright drives browsers and @e2edev/agent-device drives iOS simulators and Android emulators. Tests share the agent and locator APIs; setup follows the platform. A browser test opens a URL, while a device attempt starts in its configured app.
  • A report for every run. .e2e/report.json carries results, steps, model usage, and the artifacts the selected engine captured. Playwright can add traces; device targets provide screenshots and optional video.

Where to go

Quickstart

Scaffold a project, run a browser test, add an agent step.

Writing tests

Goals, checks, extraction, and the deterministic APIs.

Web

Start your dev server from the config, mock APIs, reach protected previews.

Mobile

iOS simulators and Android emulators, the device fixture, what differs.
The Guides cover what every project needs after that: a model, signing in, agents and personas, caching, debugging, CI. Extend is for changing what the agent is or adding a new platform. The Reference tab has every function, option, flag, and error code.