PRODUCT / FLOWS

Real user journeys that can test anything, written in English.

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.

app.runcofactor.com/flows/change-plan
Home›Flows›Billing — plan switcher visibility
Billing — plan switcher visibility
RUNS AS
OW
AD
ME
VW
Run flow
SEED DATA
Team With Four Seats
ACTING AS
Owner, Admin, Member, Viewer4 PERSONAS
NAVIGATE
/teams/$var.team_id/billing
ASSERT
Plan switcher is visibleBLOCKING
4 steps below
Configure
Runs
Chat
Activity
14 runs10 nodesLast run Passed
WORKFLOW SCENARIOS1 input · 4 scenarios
Configure
OW
Ownerplan_switcher: visible
Passed
AD
Adminplan_switcher: visible
Passed
ME
Memberplan_switcher: hidden
Passed
VW
Viewerplan_switcher: 403
Passed
Variables
2 variables discovered across workflow nodes
$var.team_idSeed
Step 1: seed data
$var.roleScenario
Step 2: acting as

Billing — plan switcher visibility

OW
Ownerplan_switcher: visible
Passed
AD
Adminplan_switcher: visible
Passed

Tests that behave like your users.

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.

It waits for the work

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.

Every role in one flow

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.

Native AI testing

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.

Plain English, all the way down

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.

Understand what’s actually being tested.

Read it in plain English

A flow is a list of steps anyone can follow. You don’t need to read code to see what a test does.

01 Sign in02 Invite03 Checkplain English

See exactly what it checks

Every check is written out, so you know what a pass means and what the test doesn’t cover.

Invite sentRole: Memberchecks

Watch it happen

Every step has video and a trace, so you can watch a run and confirm the test did what it says.

run 8f21c40:42

Common questions.

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.

Write one flow and see.

Join the waitlist, or talk to us about the suite you maintain today.

Book a call