End-to-end testing for web and mobile · Apache-2.0
Describe the goal once. Replay it without the model.
Describe a goal in natural language and an agent drives the app to reach it. When a later check verifies the step, its actions are recorded and the next run replays them with no model calls until the app changes. Tests without agent steps need no model at all.
tests/checkout.e2e.tsfrom the README
- 1await app.open('/settings/billing');
- 2await agent.act('upgrade the workspace to the Pro plan');
- 3await agent.assert('the invoice preview shows a prorated amount');
- 4await expect(screen.getByRole('status')).toContainText('Pro');
Where the model is called, run by run
rules from the docs · run sequence illustrativeRun
Line 1app.open
Line 2agent.act
Line 3agent.assert
Line 4expect(locator)
Run 1first run
Line 1navigateno model
Line 2missedagent runs it, then it is recorded
Line 3livealways runs live
Line 4exact checkno model
Run 2app unchanged
Line 1navigateno model
Line 2replayedno model call
Line 3livealways runs live
Line 4exact checkno model
Run 3app unchanged
Line 1navigateno model
Line 2replayedno model call
Line 3livealways runs live
Line 4exact checkno model
Run 4a control moved
Line 1navigateno model
Line 2handed offreplay starts, then the agent takes over from the current screen
Line 3livealways runs live
Line 4exact checkno model
calls the model
replay, then the agent takes over
no model call
Example run summary from the docs — model name trimmed
AI 4.1k tokens 2 model calls
Cache 4 replayed 1 handed off 1 missed
Bring your own modelYour own subscription, API key, or local model.
Rule the cache outRun once with --no-cache to see whether a failure is the recording or the app.
Before 1.0In active development; APIs and config can still change between minor releases.