Selectors break.
Self-healing tests don't.
TAMASH-Playwright is plug-and-play self-healing for Playwright. When a locator can't find its element, it asks an AI model to locate it on the current page and retries. If it succeeds, your test keeps going. If not, it fails normally — just like before. Every attempt is fully logged: provider, selector suggested, token cost.
How It Works
One import swap. No new framework.
Your tests run exactly as you wrote them. TAMASH-Playwright only steps in the moment a locator would otherwise fail.
A locator fails
The page changed — a button got renamed or moved — and stock Playwright can't find the element anymore, even though the app still works fine for real users.
AI locates it
TAMASH-Playwright captures an accessibility/ARIA snapshot of the current page and sends it to your configured AI provider, asking it to find the described element.
Heal and continue
If the model finds a match, the locator is healed and the test continues. If not, it fails normally. Every attempt — healed or not — is logged with an HTML report.
Beyond Runtime Healing
Maintenance that runs itself
Runtime healing buys you time. Closing the loop is what actually stops the same locator from breaking, and paying for the same fix, over and over. This is one documented GitHub Actions workflow — nothing hosted separately, nothing to maintain beyond your own repo.
Heals at runtime
A locator fails, an AI model (or the free rule-based matcher) finds the element, the test keeps going — this run.
apply-heals rewrites source
A CI job turns the runtime fix into a real code change — a surgical edit, with a before/after report.
verify-heals proves it
Re-runs only the affected tests, healing turned off, to prove the rewritten selector works standalone.
Opens a PR automatically
The fix, plus the verification result, lands as a pull request — ready for a human to review, never merged silently.
Every run, visible
An optional dashboard archives every run's report — what healed, what verified — browsable, no sign-in required.
Quick Start
One library. Three languages.
Same self-healing behavior, native to how you already write tests — Playwright Test, pytest, or JUnit 5.
TypeScript
npm · Playwright Test
npm install tamash-playwright
npx playwright install
- import { test } from '@playwright/test';
+ import { test } from 'tamash-playwright';
Working example
Python
PyPI · pytest + pytest-playwright
pip install tamash-playwright
playwright install chromium
page.locator('input[name="user"]')
.describe("User Name Textbox")
Working example
Java
Maven Central · JUnit 5
<dependency>
<groupId>io.github.qtpsudhakarproducts</groupId>
<artifactId>tamash-playwright</artifactId>
<version>0.1.0</version>
</dependency>
mvn test
Working example
Supported AI Providers
Pick whatever fits your budget
Configuration is via environment variables, typically loaded from a .env file, in every language binding.
Bring your own API key
Ollama
Free, runs locally (or Ollama Cloud) — good default for trying things out.
OpenAI
Requires an OpenAI API key.
Anthropic
Requires an Anthropic API key.
Gemini
Requires a Google Gemini API key.
Already have a subscription? No API key needed (TypeScript)
Claude subscription
Uses your Claude Pro/Max/Team/Enterprise plan — works unattended in CI too.
GitHub Copilot subscription
Including the free tier — works unattended in GitHub Actions.
Cursor, Kiro, or Codex subscription — local development only Beta
Cursor / Kiro / Codex CLI
Uses the vendor's own CLI (agent, kiro-cli, or codex) signed in on your machine — each runs in a read-only mode, so a heal call can't touch files. Local development only (no unattended-CI login). kiro and codex answer cleanly; cursor's agent is chattier — try it and report back.
Or skip AI entirely Beta
tamash — rule-based, zero AI
No API key, no subscription, no network call, no tokens. Matches your .describe() text against the page's own accessibility tree. Never guesses — declines rather than risk a wrong heal. npm install tamash-playwright@beta
Why Teams Switch
Free to use — including commercially
Everyone wants tests that survive UI changes. Nobody wants to rewrite a suite every time a button moves.
Stock Playwright
- A moved or renamed element breaks the locator
- The test fails even though the app works fine for users
- Someone has to notice, debug, and fix the selector
- No visibility into which selectors are fragile
With TAMASH-Playwright
- A locator failure triggers an AI-assisted retry, automatically
- Heals and continues when the model finds a match
- Falls back to a normal failure when it can't — no false positives
- Every attempt logged: provider, model, selector, token cost, HTML report
- One CI workflow turns the fix into a verified pull request — automatically
- One import swap — your tests stay exactly as you wrote them
Samples & Support
See it wired into a real framework
Sample implementations for every language, plus where to raise bugs, feature requests, or support questions.
Sample Implementations
Direct-locator and Page Object Model styles for TypeScript, Python, and Java — wired into real test suites.
TypeScript samplePython sample
Java sample
Bugs & Feature Requests
All support is handled through GitHub Issues. Pick the template that matches: bug report, feature request, or support request.
Open an issueFilter by Language & Framework
Every issue is auto-labeled by language (TypeScript / Python / Java) and framework (Playwright Test / pytest / JUnit 5 / TestNG).
Browse labelsWe automate for the future.
It should survive future changes.
Install it for free in TypeScript, Python, or Java, and try it against your own broken locators today.