Our AI automation engine builds and repairs tests. Here is what you need to know.

Our engine Flows builds, runs and repairs browser tests. We measured how often it could report a failure as a pass, and what to ask any AI test engine.
Case study // Flows and BugBoard

Our AI automation engine builds and repairs tests. Here is what you need to know.

An automation engine that says a test passed is making a claim. Here is how often ours was wrong, and what we changed.

Flows, our test automation engine, builds browser tests, runs them, and repairs them when the page changes. It can also automate test cases written in BugBoard, which can turn a screenshot into test cases. We built both. Here is what we learned measuring Flows.

32 of 134command types could report a failure as a pass
65 of 75repairs made by a plain fallback rule
0 of 87automatic AI checks that caught a real defect
3hard repair cases that still fail every time
Part of the BetterQA team on a lakeside jetty
Part of the BetterQA team in Cluj-Napoca.

A failed step that said "passed"

Inside Flows, every command type hands back a result. 32 of the 134 command types reported a failure by returning it instead of raising an error. The code that built the step result wrote "success" without looking. So when one of those 32 failed, the step still passed.

A code reviewer found it, not a red test, because nothing was ever red. Failures now reach the report, and failure evidence is captured for them too.

Self-healing: what actually heals

When a selector stops matching, Flows tries to repair it. People assume the AI does that work. Before we measured, nobody could say, because only successful repairs were counted and nothing recorded which method made them.

So we built a fixed set of drift cases and ran it five times, twice. 75 of 90 attempts healed, with the same result every pass. A plain fallback rule made 65 of those repairs and a page scorer made the other 10. Three deliberately hard cases failed every time, and we report them rather than hide them.

The lesson: most repairs are cheap, predictable rules. That is good news for cost and stability, and it is the right baseline to judge the AI repair against.

Knowing what belongs to the tool

A healer looks at the page for a new candidate element. Flows also puts its own panel on that page. The healer has to know which elements are ours, so it never offers our own controls as a repair. Its first version decided that by element name, which any page could imitate. It now decides by identity, the same way the rest of the extension does.

AI assertions: measure them before you trust them

Flows can add checks automatically. Of 87 that ran, 5 failed, all false alarms, and none caught a real defect. 61 of the 87 checked only that the page kept its domain or had a title, so a redirect to the login page passed.

Our mobile engine had the opposite trap: its AI checks defaulted to optional, so a failed check still passed. Creating one without an explicit choice is now refused.

What you need to know before trusting any AI test engine

  • Ask how a failure reaches the report. Then break something on purpose and watch it arrive.
  • Ask which method made each repair. A heal rate with no breakdown cannot tell you whether the AI helps.
  • Count what your automatic checks have caught. A check that cannot fail is not a check.
  • Keep your tests portable. Flows tests export to Playwright, Cypress and Selenium, so you are never locked in.
  • Keep an engineer reading the results. We do, on every engagement.

Want automated tests you can actually trust?

Our engineers build and run your test automation with tools we built ourselves, and read every result. The first month is a trial.

Talk to our team
Share the Post: