← All posts
2026-07-17

Self-healing tests fix the wrong problem

Forrester renamed its testing platform category last year — from "Continuous Automation Testing Platforms" to "Autonomous Testing Platforms." Thirty-one vendors made the Q3 2025 landscape report. The pitch from almost all of them starts the same way: self-healing tests.

The idea is straightforward. When a developer renames a CSS class or moves a button, an AI layer detects the change and patches the selector so the test doesn't break. Vendors claim it cuts maintenance effort by 60–80%. Some of those numbers are real. Broken selectors account for roughly 28% of test failures, and automatically patching them is genuinely useful work.

But here's the number nobody's healing: most organizations have plateaued at 25% automation coverage. Three out of four user flows have no automated test at all. No selector to break, no selector to heal.

The ceiling isn't a selector problem

That 25% ceiling has been stuck for years — before AI, before self-healing, before the category rename. The reason it hasn't moved is that writing and maintaining end-to-end tests is expensive. Each one requires someone to understand the flow, write the code, pick the selectors, handle the waits, mock the dependencies, and keep all of it current as the app changes.

Self-healing makes the last part cheaper. But it doesn't touch the first five. A test that doesn't exist can't heal itself into existence.

Forrester's own Q1 2026 Buyer's Guide scored "true end-to-end autonomous discovery and maintenance" at 2.2 out of 5 across platforms. The tools are good at keeping existing tests alive. They're not good at figuring out what to test in the first place.

What the 75% actually looks like

The flows that go untested are rarely obscure edge cases. They're the ones that are hard to automate:

These are also the flows where bugs cost the most. A broken signup doesn't show up in your unit tests. It shows up in your conversion rate, two weeks after the deploy, when someone finally notices the numbers are down.

Healing the selector vs. testing the flow

The gap between what self-healing solves and what teams actually need is an abstraction gap. Self-healing operates at the selector level — it knows that #checkout-btn became #checkout-button and patches accordingly. But the reason the test exists isn't to click a selector. It's to verify that a user can check out.

When the test is defined as a flow — go to the product page, add to cart, enter payment, confirm the order — the selector is an implementation detail. If the button moves, you find it the same way a user would: by what it says, where it is, what role it plays. You don't need to heal the selector because the selector was never the point.

This is the same principle behind Test Chain running as a proxy rather than an SDK. Record what the user does. Replay it against the real app. If the flow breaks, you see exactly what broke — not because an AI patched a locator, but because the thing the user tried to do stopped working.

Where the coverage actually comes from

The teams breaking past 25% aren't doing it by healing their existing tests harder. They're making it cheaper to create new ones:

Self-healing is a real improvement for the tests you already have. But the industry's testing problem in 2026 isn't that existing tests break too often. It's that most of the things that matter aren't tested at all.