Tests at the level a person understands. They check that your app does what the requirements say, instead of checking how the page is built.
A flow follows the whole journey the way your users actually do it. It can switch between roles, wait for slow work to finish, and test the AI features you ship.
A step can wait for something real to happen, like an import finishing or a report being ready. The flow carries on as soon as it does, and no browser is held open while it waits.
An admin sends an invite, a member accepts it, and a viewer checks what they can see. Each login step signs in as a different persona, so one flow can test how they work together.
Test an MCP server directly by calling its tools and checking what comes back. You can also run evals against an AI chat to check what it says.
You write steps like "sign in as an admin" and "check the invoice was sent". There are no page objects or selectors to learn before you can change a test.
A flow is a list of steps anyone can follow. You don’t need to read code to see what a test does.
Every check is written out, so you know what a pass means and what the test doesn’t cover.
Every step has video and a trace, so you can watch a run and confirm the test did what it says.
Who can edit a flow?
Anyone who can read. Flows are written as plain steps, so people in support or product can fix one without opening a code editor.
How does a flow wait for something slow?
A wait step checks for its condition on a schedule, with a timeout. The browser is closed between checks, so a flow can wait an hour for a report without tying anything up.
Can one flow use more than one account?
Yes. Each login step signs in as a different persona, so one flow can move between an admin, a member and a viewer and check that each sees the right things.
Can I test an MCP server or an AI feature?
Yes. You add an MCP server as an application, and MCP steps call its tools and check the results. Evals run a set of pass/fail checks against an AI chat. Both are in early access.
What happens when the UI moves?
Cofactor finds each element when the step runs instead of relying on a fixed selector. If something moves, it finds it again and notes the change on the run.
Can a flow call the API?
Yes. Setup and teardown can run against your API so the browser only does the part a user would actually do.
Join the waitlist, or talk to us about the suite you maintain today.