Element34
Auto Heal · Self-healing locators

When selectors drift, your tests don't break.

Auto Heal repairs broken Selenium locators at runtime. Deterministic DOM rules first. AI-browser second, only when deterministic confidence is low. Your test code stays the way you wrote it. The session goes green.

  • One capability flag
  • Runs in your private SBOX
Heal mode
No code change
Common case
Sub-100ms
Activation
1 flag
Selenium Box · Self-Healing Locator
Healing locators · live
Attempts 3 Success 3 Failed 0
TEST RUN
$ wdio run wdio-demo.conf.js
[chrome] Session: sbox_d-ce78-4b06
[chrome] e34:autoHeal = true
[chrome] Running: My Login application
→ locate #usernames
healed → [id="username"]ai-browser
Username input was found
→ locate #pass
healed → [id="password"]ai-browser
Password input was found
healed → button[type="submit"]deterministic
Test passed (13s)
HEAL ATTEMPTS
Step auto:f914deac Success Confidence 100% ai-browser
Requested: css selector:#usernames
Used: css selector:[id="username"]
AI rationale Corrected typo from #usernames to #username.
CANDIDATES
getByRole("textbox","Username") 95%
getByRole("textbox","Password") 95%
getByLabel("Username") 94%
Deterministic · DOM scan + role/name rules. Fast. No model. AI-browser · Used only when deterministic confidence is low.
Banking & Financial Services
Suites stay green

Auto Heal absorbs locator churn from frontend deploys. Release-day regression doesn't go red over selector hygiene.

Compliance-first
Insurance & Healthcare
Audit-friendly heals

Every heal logs a plain-English rationale. Defensible to QA leadership and compliance reviewers.

Audit trail
Government & Public Sector
No model for the common case

Deterministic mode handles the majority of heals with DOM rules. AI engages only when needed. Less budget, less attack surface.

Air-gap ready
Mid-market & MedTech
One flag, no rewrite

Add e34:autoHeal: true to your capabilities. Existing specs stay untouched. Maintenance hours drop immediately.

Zero-touch enablement
The maintenance tax

Selectors drift faster than test suites can keep up.

Every long-lived Selenium suite carries the same maintenance cost. A frontend rename. An A/B test. A library upgrade. One selector goes stale and the next run is red. Auto Heal repairs the drift at runtime. Your test code stays the way you wrote it.

Pain pattern 01

DOM rename

Symptom. #usernames becomes #username, #Pass becomes #password, #$ubmit becomes button[type='submit']. Same intent, new attribute. Test fails with NoSuchElementException.

Pain pattern 02

Component swap

Symptom. Design system swaps a div button for a real button element. CSS selectors lose. The change was intentional and correct.

Pain pattern 03

Locale or A/B branch

Symptom. Copy changes per locale or experiment cohort. Text-based selectors fail in DE-AT but pass in EN-US. Suite goes flaky.

How it heals

Two tiers. Deterministic first. AI second.

Auto Heal never reaches for the model when DOM rules can do the job. That keeps healing fast, cheap, and explainable. The AI-browser tier only engages when deterministic confidence is below threshold. Both modes log their reasoning to the session record.

Tier 1 · default

Deterministic

DOM scan plus role and name rules. Sub-100ms decision, no model invocation. Most heals resolve here, especially typos, casing changes, and ID renames.

Requested: css selector:#submit
Used: button[type='submit']
Reason: matched role+type; passed validation twice
Confidence: 100%
Fast. No model. No external call.
Tier 2 · fallback

AI-browser

LLM-based reasoning over the DOM. Engages only when deterministic confidence is low. Returns a ranked candidate list with confidence scores and a plain-English rationale.

Requested: #usernames
Used: [id='username']
Rationale: Corrected typo from #usernames to #username
Confidence: 100%
Runs on your model. BYO-LLM.
Same script. Two outcomes.

One config flag is the difference.

The same login spec runs against the same DOM. The only difference is one capability in the WDIO config: e34:autoHeal. Without it, three broken selectors red the suite. With it, three heals happen at runtime and the suite stays green.

Without Auto Heal

Three locators don't match. Suite goes red.

e34:autoHeal not set
$ wdio run wdio-demo.conf.js [chrome] Running: My Login application [chrome] ✕ Username input was not found [chrome] ✕ Password input was not found [chrome] NoSuchElementException: Unable to locate element: #$ubmit 1 failing (13s)
#usernames → broken #Pass → broken #$ubmit → broken
With Auto Heal · same script

Locators heal at runtime. Suite stays green.

e34:autoHeal: true
$ wdio run wdio-demo.conf.js [chrome] Session: sbox_d-ce78-4b06 [chrome] e34:autoHeal = true [chrome] Running: My Login application [chrome] ↪ healed #usernames → [id='username'] [chrome] ✓ Username input was found [chrome] ↪ healed #Pass → [id='password'] [chrome] ✓ Password input was found [chrome] ↪ healed #$ubmit → button[type='submit'] [chrome] ✓ Login button was found 1 passing (13s)
#usernames ai-browser #Pass ai-browser #$ubmit deterministic

Test code is identical in both runs. Only the e34:autoHeal capability changed.

Activation

One line. One flag. No rewrite.

Add a single capability to your WDIO config. Auto Heal applies to every test in the session. Your existing Selenium specs do not change.

Add to your capabilities BETA

wdio.conf.js
1capabilities: { 2 'wdio:enforceWebDriverClassic': true, 3 'e34:video': true, 4 browserName: 'chrome', 5 'e34:per_test_timeout_ms': 600000, 6 'e34:testName': 'Login test', 7 'e34:buildName': 'nightly-regression-1247', 8 'e34:autoHeal': true, // ← THE FLAG 9 'e34:token': 'jenkinshardcap12', 10 acceptInsecureCerts: true, 11}
Same capabilities object you already use. One new line. Applies to every test in the session.
Audit trail

Every heal is logged, ranked, and explainable.

Auto Heal is not a silent magic layer. Every healing decision writes to the session record with three artifacts: the requested selector, the used selector, and a plain-English rationale. QA leadership and compliance reviewers see what changed and why.

Self-Healing Locator

Auto-healing details BETA

This session used capability e34:autoHeal.
Attempts: 3 Success: 3 Failed: 0
Step auto:f914deac Success Confidence 100% ai-browser
Requested: css selector:#usernames
Used: css selector:[id="username"]
AI rationale Corrected typo from #usernames to #username.
Step auto:830db645 Success Confidence 100% ai-browser
Requested: css selector:#pass
Used: css selector:[id="password"]
AI rationale The correct ID for the password input field is 'password', not 'pass'.
Step auto:e06ba4ac Success Confidence 100% deterministic
Requested: css selector:#submit
Used: css selector:button[type="submit"]
Reason Matched role+type; passed validation twice.
▶ Raw autoHealing JSON
Requested vs Used

Every heal records the exact selector your test asked for and the selector Auto Heal substituted. No silent rewrites.

Human-readable AI rationale

AI-browser heals include a plain-English explanation. Auditors and engineering reviewers see why a selector was changed.

Confidence and candidates

Every heal is ranked. Candidates listed with confidence bars. Reviewers can accept or reject suggestions before they ship to nightly runs.

Private inference

AI-browser runs on your model, in your environment.

Point Auto Heal at the LLM you already trust. Heal prompts run between SBOX and your AI provider only. Element34 never sees the DOM or the prompt.

How Auto Heal handles AI without exposing DOM data

Deterministic mode handles the common heals without an LLM call. You spend tokens only on the hard cases. Configure in your SBOX config to point at the model of your choice.

Bring-your-own LLM

Use your OpenAI, Anthropic, or Azure OpenAI subscription. Or a self-hosted model running inside your environment.

Token budget control

Deterministic resolves most heals with zero model calls. AI-browser engages only when deterministic confidence is low. Token monitoring per project lands in SBOX 5.2.4.

No callback to Element34

Heal logs stay inside the customer environment. Element34 has no visibility into your DOM, your selectors, or your AI prompts.

Auto Heal in context

Auto Heal works with the rest of your SBOX deployment.

Auto Heal keeps long-lived suites green. Studio authors the tests. Automated RCA diagnoses the failures. Pulse Report scores the release. Real Device Cloud runs on iOS and Android. All five run on your private SBOX grid.

AI authoring

Studio

Plain-English to production-grade Selenium. Studio writes the test, Auto Heal keeps it alive.

Explore Studio
Root cause AI

Automated RCA

Cluster failures, summarize root cause, propose fixes. Where Auto Heal handles drift, RCA handles failure.

Explore Automated RCA
Quality intelligence

Pulse Report

Site health with prioritized opportunities. Pulse reads the session record Auto Heal writes to.

Explore Pulse Report
Mobile testing

Real Device Cloud

Real iOS and Android devices. Auto Heal applies to real-device sessions the same way it applies to desktop.

Explore Real Device Cloud
Auto Heal FAQ

Questions enterprise teams ask about Auto Heal.

What is Auto Heal in Element34 SBOX?
Auto Heal is the self-healing locator module inside Element34 SBOX. It repairs broken Selenium locators at runtime. The original test code is not modified. Activation is a single capability: e34:autoHeal: true.
How does Auto Heal decide whether to use AI?
Auto Heal runs deterministic DOM rules first. The deterministic tier uses DOM scans and role/name matching with no model invocation, and it resolves most heals. The AI-browser tier only engages when deterministic confidence is below threshold. This keeps healing fast, cheap, and explainable.
Does Auto Heal change my test code?
No. Auto Heal does not rewrite your specs. Healing happens at runtime inside the SBOX session. Your original selectors stay in your repository, and the session record logs the requested selector, the used selector, and the rationale for each heal.
What does a heal record include?
Every heal writes the requested selector, the selector that was actually used, the mode (deterministic or ai-browser), the confidence score, and a plain-English rationale. The session detail page surfaces the heal as a green Auto-healed badge. The raw autoHealing JSON is available for engineering audit.
Does Auto Heal send my DOM to a public AI service?
No. Auto Heal is bring-your-own-LLM for the AI-browser tier. The customer configures Auto Heal in the SBOX config to point at their existing OpenAI, Anthropic, or Azure OpenAI subscription, or a self-hosted model. Element34 never sees the DOM or the prompt.
Which frameworks does Auto Heal support?
Auto Heal supports Selenium sessions across the standard WebDriver bindings. The capability flag e34:autoHeal: true applies to any WDIO config that runs against the SBOX grid.

Bring us your worst maintenance suite.

Send the spec. We add e34:autoHeal: true on your private grid and run it. You see every healed locator, every confidence score, and every AI rationale before any code review. Annual licensing, predictable across the contract term. Talk to sales for a scoped quote.