Skip to main content
Capability: Strict mode + output_schema (Strict mode is beta — enroll at agent.tinyfish.ai/beta to use it)
Use this to check a user flow — sign-up, checkout, a settings form — on a build that isn’t live yet. Describe the flow in plain English, TinyAgent clicks through it in a real browser, and you get back pass or fail with a reason. Because that browser runs in TinyFish’s cloud, your app needs a URL the internet can reach: a preview deploy or a tunnel to localhost. TinyAgent logs in to a demo shop, adds a backpack to the cart, checks out, and confirms the order page — returning passed: true

TinyAgent logs in to a demo shop, adds a backpack to the cart, checks out, and confirms the order page — returning passed: true.

Steps

  1. Give the agent a URL it can reach. Use your preview deploy’s URL, or open a tunnel to your local server.
  2. Write the test as steps plus an expected result. Number the steps, use exact values, end with “Expected result: …”, and tell the agent to stop and report if any step can’t be done as written.
  3. Run it in Strict mode with a pass/fail schema. Strict mode stops at the first surprise instead of working around it — which is what you want when the surprise is a bug.
  4. Check passed, not the run status. If it failed, open the run in the dashboard to see what happened at each step.

Get a URL the agent can reach

Use the preview URL your host gives you (Vercel, Netlify, etc.). If Vercel Deployment Protection is on, add your bypass secret to the URL — it’s under Project Settings → Deployment Protection → Protection Bypass for Automation:

Run the test

Beta: agent_config.mode: "strict" and max_steps are both beta — enroll at agent.tinyfish.ai/beta to use either. A non-beta request returns 403 FORBIDDEN for mode: "strict" just as it does for max_steps; max_duration_seconds alone is generally available, no enrollment needed.
Once enrolled in the beta, this example tests the checkout on a public demo shop, so you can run it as-is. Swap in your own URL and steps.
Result
The script exits with an error when the test fails, so you can drop it into CI. To run several tests at once, start one run per test — see Run TinyAgent Across Multiple URLs. For tests that log in, use a test account, and keep its password in Vault rather than the goal once you’re past local testing — see Login With Vault.
Tip — from Claude Code, Cursor, ChatGPT or Claude: paste your preview or tunnel URL with the steps, e.g. “Use TinyFish to test sign-up on https://…: create an account with test@example.com and check the dashboard loads.” See Run TinyAgent From ChatGPT or Claude or MCP Integration.

Common Mistakes

The agent’s browser runs in the cloud, so localhost points at that cloud machine, not yours — the run reports the site can’t be reached. Open a tunnel and use its https:// URL.
Vercel Deployment Protection is blocking the agent. Add x-vercel-protection-bypass and x-vercel-set-bypass-cookie=true to the URL, using the Protection Bypass for Automation secret.
COMPLETED means the browser ran, not that your app works. Always check result.passed — see Runs.
In default mode the agent tries alternatives when something looks wrong — a missing button, an unexpected popup — which can hide the bug you’re testing for. Use mode: "strict" so it stops instead. See Agent Mode, Max Steps, and Max Duration.
Without an instruction, the agent may fill every field in the schema. Make failed_step nullable and add “Set failed_step to null if every step passed” to the goal, as in the sample.
Quick tunnels get a new URL every time they restart. Copy the new one into your test. If your app checks allowed origins or OAuth redirect URLs, add the tunnel URL there too.

Agent Mode, Max Steps, and Max Duration

Why Strict mode suits tests

Runs

Why COMPLETED doesn’t mean your test passed

Get a TinyAgent Run as Structured JSON

More on output_schema

Run TinyAgent Across Multiple URLs

Run a whole test suite at once