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
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.actfollowed 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/playwrightdrives browsers and@e2edev/agent-devicedrives 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.jsoncarries 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.