Don't let broken selectors break your build. Healwright uses AI to understand your intent and fix locators at runtime.
test('login flow', async ({ page }) => {
// Self-healing locator with fallback
await page.heal.locator(
'.submit-btn',
'Submit button on form'
).click();
// Or just describe it, no selector needed!
await page.heal.fill(
'',
'Email input field',
'user@example.com'
);
});
When formatted structure changes, our AI analyzes the DOM to find the element you actually meant.
Use heal.locator(selector, desc) for clean, chainable syntax with built-in fallback.
Leave the locator empty and just describe the element. Healwright will find it for you.
Click hover-dependent elements with { force: true }. No more flaky hover tests.
Healed selectors are cached locally. You don't burn API credits on subsequent runs.
Works seamlessly with your existing Playwright setup. Mix and match healed and standard locators.
Use the cloud or go fully offline. Pick the model that fits your team, budget, and privacy needs.
Your locator breaks — Healwright fixes it automatically.
Your test calls an action — click, fill, hover, etc.
Healwright tries the original locator first. If it works, the test continues with zero overhead.
When the locator can't find the element, the healing pipeline kicks in. A local cache is checked first — if the element was healed before, it's reused instantly.
DOM candidates are sent to your AI provider. It returns the best matching locator strategy, which is validated to ensure it resolves to exactly one visible element.
The action executes with the healed locator and the strategy is cached to disk. Future runs skip AI entirely — your CI stays green.
Watch healwright detect and fix broken locators in real time.