Introduction
Open source AI testing for web and mobile apps. Spend less time on tests and more time building.
e2e is an open source testing framework for web and mobile apps. A test can use exact locators and assertions, goals in natural language that an agent completes, or both in the same test.

tests/checkout.e2e.ts
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');
});Why e2e
- Less time on tests. Write a goal instead of a script of selectors and waits. When the UI changes, the agent adapts, so you fix fewer tests.
- Cheap runs. e2e records an
agent.actstep when a later check passes. The next run replays it with no model calls, and hands back to the agent when the app changed. With the built-in agent,assert,waitFor, andextractalways call the model.
How it works
- Targets. Each test runs one time per target, such as Chromium or an iPhone simulator. The web engine drives browsers through Playwright. The mobile engine drives iOS simulators and Android emulators through agent-device. You can also write your own.
- Agent steps.
agent.actcompletes a goal.agent.assert,agent.waitFor, andagent.extractjudge the screen. Use your own subscription, API key, or local model. Tests without agent steps need no model. - Reports. The runner redacts registered secrets from model input. It records steps, failures, and artifacts in a report that you or your coding agent can read.
