Your agent writes code
and tests
Ask for a feature. Your agent ships the code and tests, runs them on a full copy of your app, and grows the suite with every change.
Review scenarios
instead of code
Every run is recorded. Open a new or changed test and watch what happened in the browser. No code review required.
Build and merge with confidence
Deterministic end-to-end regression on every run. Your agent iterates to green, and you merge large changes with minimal review.
Test anything and
everything
Each run gets an ephemeral environment with your full stack, including code, infra, and dependencies. Everything can be tested end to end.
{
"email": "[email protected]",
"password": "••••••••"
}{
"user": "alex",
"role": "editor",
"token": "sess_9f2…"
}$ circular login --token "$CIRCULAR_TOKEN" Logged in as [email protected] (editor)
| name | description |
|---|---|
| list_tasks | Tasks on a board |
| get_task | One task by id |
| create_task | Add a task to a board |
| move_task | Change a task's column |
{
"cassette": "recordings/announce-launch.json",
"host": "api.openai.com",
"interactions": 2
}{
"type": "checkout.session.completed",
"data": {
"customer": "cus_9Lk2",
"subscription": "sub_7Hq1"
}
}{
"received": true
}Test what your users see
Browser tests click, type and navigate the way your users would, and you get a full visual replay of what they see.
Test the experience in your app
Exercise mobile user flows alongside the backend that powers them. Follow a scenario from a tap in the app to the data it creates, with your services running together in the same test environment.
Real requests. Your whole backend.
Send requests to your running services and assert on responses, database records, and side effects. Test authentication, permissions, and the paths that cross service boundaries.
Test the command line too
Run your CLI inside the test environment, the way a user or an agent would. Assert on its output and exit code, then on what it actually changed in your services and your database.
Put your tools to the test
Call your MCP tools as an agent would. Verify their responses and what actually changes in your app, with the server and its dependencies running in an isolated environment.
Test the agent, tools and all
Replay recorded model responses deterministically while running the real tool calls against your test environment. Check the result of a complete agent workflow, from its first action to the changes it makes.
Test your integrations too
Stand in for Stripe, Slack, PostHog, and any other third party with fakes that run inside the test environment. Deliver their webhooks, check what your app sent them, and test the complete flow without touching a real account.