Trailcam AI
Trailcam AI explains failures, suggests fixes, finds the journeys worth checking in your app, writes flows from a description and checks screens for problems. It advises; you decide.
Why it failed
When a run fails, Trailcam AI reads the screen at the failure and names the likely cause:
- a bug in the app, or a crash;
- a problem on the app's server: a request that answered with a server error, or never answered;
- a flow that's out of date, because the app changed;
- test data the app didn't accept;
- something in the way, like a popup;
- the app being too slow, or a failure that comes and goes.
It quotes what it saw on the screen, says how sure it is, and says so when it isn't sure. It reads the app's requests around the failed step too, and blames the server only when one of them failed there, naming it ("The app's request GET api.example.com/basket got 500, a server error…"). Its explanation appears on the run's page, on incidents, in alerts, in pull request comments and in CI. Was this right? tells us when it wasn't.
Fix it
When the flow is what needs to change, Trailcam AI suggests the change, shown as a difference to the step. Fix it puts it in the flow editor. Choose Run to check to run the changed flow on the build that failed, then save it, or undo it. Nothing is saved until a person saves it.
Describe it
Describe a journey in plain words, like "sign up with a new email and reach the home screen", and Trailcam AI does it on a device and writes the flow. A new email address is the run's own, so when the app emails a code to confirm it, Trailcam AI reads the code and types it, and the flow it writes does the same on every run (sign-ups that email a code). It says where it got stuck and what it needs, like a test account's details, which it saves in the flow's variables. Describe it is on paid plans. A journey that stops on Trailcam's side (Trailcam AI or its devices weren't available) doesn't count toward your plan's Describe it journeys.
Find my journeys
A new project's quickest way to monitored journeys. Trailcam AI looks round your app's build on a device for a few minutes, tapping through its screens, and proposes up to five journeys worth checking, like signing up, searching or adding to a basket. You choose which it writes: each is written with Describe it and runs once to check it passes. Monitor them then saves the ones that pass as flows and adds a production check for each, all of them or, if your plan hasn't room, none.
- While looking round, it never taps anything that pays, books, places an order, deletes, sends a message or signs out, nor anything other people would see, like a like or a follow, and it types nothing except a test account into sign-in.
- Give a test account to look behind sign-in. Every journey but signing up gets it, as the flow's variables, so one that starts behind sign-in can sign in.
- Each journey stops at the button that would pay, place an order, book, post, send or move money, or that others would see, so nothing real happens: a checkout goes as far as the payment step.
- A sign-up that emails a code is written like any other: the run's own address receives the email, and the flow reads the code from it (sign-ups that email a code). A journey that needs a code sent by text message is proposed for you to write.
Each search uses one of the searches your plan includes each month (see pricing), and each journey it writes uses one of your Describe it journeys. On Free, each person's first search is free, and so are the journeys it writes. A search that couldn't look round, or found nothing to propose, doesn't count, so you can look again.
Visual checks
After a run passes, Trailcam compares its last screen with the last good run's. When it changed, Trailcam AI looks for an error message, a blank screen, a broken layout or placeholder text. The run still passes, and its page says what looks wrong. Unchanged screens aren't checked, and don't count. Visual checks are on paid plans.
AI commands in flows
Maestro's AI commands, assertWithAI, assertNoDefectsWithAI and extractTextWithAI, work on Trailcam with no key of
your own: Trailcam's models answer them. A run can use up to 100.
What each plan includes
| Plan | Why it failed | Describe it | Visual checks | AI commands in flows |
|---|---|---|---|---|
| Free | 100 a month | — | — | 200 per person |
| Starter | 2,000 | 20 | 1,000 | 5,000 |
| Team | 10,000 | 100 | 5,000 | 25,000 |
| Business | 30,000 | 300 | 15,000 | 75,000 |
On a paid plan, AI commands never stop: past your plan's, every 10 count as one run. On Free, a command past the allowance is refused, and the run couldn't run.
What it sees
- The screen and its elements at the moment that matters, and the flow's steps.
- Where the app's requests around a failure went and how they answered (never what they carried).
- Your flow's variables only by name: where a value shows, on the screen or in the device's
message, it reads
${EMAIL}instead. What the flow types is left out too. - Never anything typed into a password field, or the details you give Describe it.
- Visual checks and AI commands look at the screenshot itself, which shows the screen as it is (a password field as dots).
- Your data isn't used to train any model. Describe it and Find my journeys use Anthropic's Claude, reached through Cloudflare's AI Gateway; the rest of Trailcam AI runs on open models hosted by Cloudflare Workers AI (see sub-processors).
An Owner can turn Trailcam AI off for the workspace in its settings.