Semantic selector healing

Your test didn't find a bug. A CSS class got renamed.

Fragile selectors break on every cosmetic UI change — not because the app broke, but because the way an element is named or positioned changed. TestHeal reads the HTML before and after the change and tells you which element your selector now means, with an explicit confidence level instead of a silent guess.

  • aria-label
  • role
  • visible text
  • DOM position
Try it live — no signup ↓
testheal · live re-lock real Gemini calls
Runs so far
all time
Healed with high confidence
all time
Flagged for human review
honest low-confidence fallback
3
Confidence levels
high, medium, low — never a silent guess
How it works

Three steps — a confident match, or an honest "I'm not sure"

01

Paste before / after HTML

Drop in the markup around the element before the change, the selector that used to target it, and the markup after the change (plus an optional note on what the element does).

02

The model reasons over signals

gemini-3.6-flash compares aria-label, role, visible text, and DOM position/structure — not just whether the class name looks similar — to find the element that now matches the original intent.

03

You get a match, or an honest fallback

A confident match ships with the signals that support it. When the signals disagree — or the element's actual behavior looks like it changed, not just its markup — you get "needs human review", not a guess dressed up as certainty.

The real risk here: an AI can "confidently" match a selector to an element whose behavior genuinely changed — not just its markup — which would let a fragile test keep passing while quietly testing the wrong thing. That's why every result carries an explicit confidence level, and why low confidence always means an honest "needs review" instead of a silent guess.

Why this matters

The automation testing market was worth $20.60B in 2025 — projected to reach $84.22B by 2034.

Source: Fortune Business Insights, Automation Testing Market Size, Share Growth Report, 2034. More teams shipping more UI changes means more brittle selectors breaking — that gap is exactly what an honest semantic re-match is for.

Live activity — shared demo queue, anonymized

What the demo has healed recently

The last 20 runs from every visitor to this page — confidence level and time only, never the HTML, the selector, or the model's reasoning.

TimeConfidence

No activity yet — be the first, run the demo above.

On your HTML: the markup you paste — and the model's full response — are never written to a database or log; they exist only in this request's memory long enough to show you the result. What we store for the public feed above is a single anonymized row: the confidence level and a timestamp rounded to the minute. Read the full Privacy Policy.

Early access

Want this wired into your own CI run?

This build validates the reasoning mechanic through the web demo above — it doesn't run against a live Playwright/Selenium suite yet. Leave your email and primary test framework and we'll reach out when self-serve access opens.