PramodDutta/qaskills/seed-skills/self-healing-locators-strategy/SKILL.md
Self Healing Locators Strategy
Teach agents a disciplined strategy for resilient and self-healing locators with role-first selectors, repair evidence, code review, and clear no-heal rules.
- Source repository stars
- 195
- Declared platforms
- 4
- Static risk flags
- 1
- Last source update
- 2026-08-04
- Source checked
- 2026-08-04
Decision brief
What it does—and where it fits
You are a test automation strategist who designs resilient locator systems and controlled self-healing workflows that repair tests from evidence without hiding product bugs or weakening assertions.
Not for
- Calling every selector update self-healing.
- Healing to a CSS class generated by a build tool.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Declared | Source record | Install path and trigger |
| Gemini CLI | Declared | Source record | Install path and trigger |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/PramodDutta/qaskills --skill "seed-skills/self-healing-locators-strategy"Inspect the Agent Skill "Self Healing Locators Strategy" from https://github.com/PramodDutta/qaskills/blob/c924c5f7fee5fa410f267031061e492eb051757a/seed-skills/self-healing-locators-strategy/SKILL.md at commit c924c5f7fee5fa410f267031061e492eb051757a. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Setup
Create a locator policy file and helper utilities.
Create a locator policy file and helper utilities.Document the locator order. - 02
Review Workflow
Require these artifacts with every healing change.
Failing test output.Screenshot before repair.Old locator. - 03
Core Principles
1. Start with accessibility contracts: Prefer role, name, label, placeholder, and text that represent user-facing behavior. 2. Use test ids intentionally: Test ids are stable contracts for controls that cannot be named well. 3. Heal only selectors, not expectations: A repair can…
Start with accessibility contracts: Prefer role, name, label, placeholder, and text that represent user-facing behavior.Use test ids intentionally: Test ids are stable contracts for controls that cannot be named well.Heal only selectors, not expectations: A repair can find the same intended element, but it must not weaken what the test proves. - 04
Locator Policy
1. getByRole with accessible name. 2. getByLabel for form controls. 3. getByPlaceholder only when label is unavailable. 4. getByText for stable visible copy. 5. getByTestId for product-owned test contracts. 6. CSS only inside component internals with review. 7. XPath is not allo…
getByRole with accessible name.getByLabel for form controls.getByPlaceholder only when label is unavailable. - 05
Playwright Locator Pattern
Keep locators near the page or component they describe.
Keep locators near the page or component they describe.Use them in tests without hiding intent.
Permission review
Static risk signals and limitations
Writes files
The documentation asks the agent to create, modify, or delete local files.
Create a locator policy file and helper utilities.Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 88/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 195 | Source | Repository attention, not individual Skill quality |
| Compatibility | 4 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- PramodDutta/qaskills
- Skill path
- seed-skills/self-healing-locators-strategy/SKILL.md
- Commit
- c924c5f7fee5fa410f267031061e492eb051757a
- License
- MIT
- Collected
- 2026-08-04
- Default branch
- main
View the original SKILL.md
Self Healing Locators Strategy Skill
You are a test automation strategist who designs resilient locator systems and controlled self-healing workflows that repair tests from evidence without hiding product bugs or weakening assertions.
Core Principles
- Start with accessibility contracts: Prefer role, name, label, placeholder, and text that represent user-facing behavior.
- Use test ids intentionally: Test ids are stable contracts for controls that cannot be named well.
- Heal only selectors, not expectations: A repair can find the same intended element, but it must not weaken what the test proves.
- Require review: Automated locator repair must create a diff for human approval.
- Capture evidence: Store old locator, new locator, screenshot, DOM snippet, and reason.
- Avoid broad matching: A healed locator that can match the wrong element is worse than a failing test.
- Do not heal product regressions: If the UI lost accessible name, role, or state, fix the product.
- Track locator health: Repeated healing in one area is a design system or accessibility smell.
Setup
Create a locator policy file and helper utilities.
mkdir -p tests/locators tests/e2e scripts
touch tests/locators/policy.md
touch tests/locators/registry.ts
touch scripts/propose-locator-heal.ts
Document the locator order.
# Locator Policy
1. getByRole with accessible name.
2. getByLabel for form controls.
3. getByPlaceholder only when label is unavailable.
4. getByText for stable visible copy.
5. getByTestId for product-owned test contracts.
6. CSS only inside component internals with review.
7. XPath is not allowed without explicit exception.
Playwright Locator Pattern
Keep locators near the page or component they describe.
// tests/locators/login.ts
import type { Page } from '@playwright/test';
export function loginLocators(page: Page) {
return {
email: page.getByLabel('Email'),
password: page.getByLabel('Password'),
submit: page.getByRole('button', { name: 'Sign in' }),
error: page.getByRole('alert'),
};
}
Use them in tests without hiding intent.
// tests/e2e/login.spec.ts
import { expect, test } from '@playwright/test';
import { loginLocators } from '../locators/login';
test('invalid login shows accessible error', async ({ page }) => {
await page.goto('/login');
const login = loginLocators(page);
await login.email.fill('[email protected]');
await login.password.fill('wrong-password');
await login.submit.click();
await expect(login.error).toHaveText('Invalid email or password');
});
Healing Proposal Script
Generate proposals, not silent edits.
// scripts/propose-locator-heal.ts
type LocatorProposal = {
testFile: string;
oldLocator: string;
proposedLocator: string;
reason: string;
confidence: 'low' | 'medium' | 'high';
evidence: string[];
};
const proposal: LocatorProposal = {
testFile: 'tests/e2e/login.spec.ts',
oldLocator: "page.locator('.primary-btn')",
proposedLocator: "page.getByRole('button', { name: 'Sign in' })",
reason: 'The button has a stable accessible role and name in the current UI.',
confidence: 'high',
evidence: ['screenshot: login-button.png', 'dom: button text Sign in'],
};
console.log(JSON.stringify(proposal, null, 2));
Selenium Pattern
When using Selenium, still prefer semantics where possible.
import { By, WebDriver } from 'selenium-webdriver';
export async function clickButtonByName(driver: WebDriver, name: string): Promise<void> {
const button = await driver.findElement(
By.xpath(`//button[normalize-space(.)='${name}' or @aria-label='${name}']`),
);
await button.click();
}
Use XPath as a bridge only when the framework lacks a better role locator.
No-Heal Rules
Never heal automatically in these cases.
- The expected accessible name disappeared.
- The element role changed incorrectly.
- The test now matches multiple visible elements.
- The assertion must be weakened to pass.
- The product copy changed and needs product approval.
- The user flow changed.
- The old selector pointed to a security or payment action.
- The failing page shows a real error state.
- The replacement uses brittle layout CSS.
- There is no screenshot or DOM evidence.
Review Workflow
Require these artifacts with every healing change.
- Failing test output.
- Screenshot before repair.
- Old locator.
- New locator.
- Reason for equivalence.
- Assertion unchanged or strengthened.
- Local rerun result.
- Reviewer approval.
Reference Table
| Locator Type | Stability | Use When |
|---|---|---|
| Role plus name | High | Interactive controls and headings |
| Label | High | Form fields |
| Test id | High | Stable product-owned hooks |
| Text | Medium | Stable visible copy |
| Placeholder | Medium | No label exists yet |
| CSS class | Low | Component internals only |
| XPath | Low | Legacy bridge with review |
Common Mistakes
- Calling every selector update self-healing.
- Healing to a CSS class generated by a build tool.
- Letting a bot commit locator changes without review.
- Weakening assertions during repair.
- Ignoring accessibility regressions that caused the failure.
- Matching the first button on a page.
- Using test ids as a substitute for accessible names.
- Keeping no record of healed locators.
- Retrying failed tests until one locator happens to work.
- Healing dangerous workflows like payment submission without human approval.
Checklist
- Locator policy is documented.
- Role and label locators are preferred.
- Test ids are stable product contracts.
- Healing proposals include evidence.
- Assertions are unchanged or stronger.
- No-heal rules are enforced.
- Reviewer approves locator repairs.
- Repaired tests are rerun locally.
- Repeated repairs are tracked.
- Product accessibility bugs are fixed instead of hidden.
Alternatives
Compare before choosing
PramodDutta/qaskills
PR Test Impact Analyzer
Analyze pull request code changes to determine which tests are affected, recommend test execution order, and identify missing test coverage for modified code paths
affaan-m/ECC
dmux-workflows
Multi-agent orchestration using dmux (tmux pane manager for AI agents). Patterns for parallel agent workflows across Claude Code, Codex, OpenCode, and other harnesses. Use when running multiple agent sessions in parallel or coordinating multi-agent development workflows.
affaan-m/ECC
dmux-workflows
Multi-agent orchestration using dmux (tmux pane manager for AI agents). Patterns for parallel agent workflows across Claude Code, Codex, OpenCode, and other harnesses. Use when running multiple agent sessions in parallel or coordinating multi-agent development workflows.
PramodDutta/qaskills
RAG Regression Testing
Gate RAG pipelines in CI with versioned golden eval sets, per-metric thresholds, baseline drift detection, and a build that fails when retrieval or answer quality regresses.