@sir_hlony_letaoana/heal-core
v0.1.1
Published
Core selector healing engine for WDIO self-healing toolkit
Readme
@sir_hlony_letaoana/heal-core
Core selector healing engine for the WDIO self-healing toolkit.
Provides candidate extraction, scoring, and ranking logic used by wdio-heal-service and heal-cli.
Install
npm install @sir_hlony_letaoana/heal-coreAPI
heal(context, maxSuggestions?)
Generates ranked selector suggestions from a DOM/page-source snapshot.
import { heal } from "@sir_hlony_letaoana/heal-core";
const result = heal({
selector: "~loginButton",
dom: "<hierarchy>...</hierarchy>",
testName: "Login > should log in",
platform: "android",
});
console.log(result.suggestions);
// [
// { selector: '[accessibility-id="loginButton"]', score: 6, confidence: "high", reason: "..." },
// ...
// ]generateCandidates(dom)
Extracts all candidate selectors from a DOM string.
import { generateCandidates } from "@sir_hlony_letaoana/heal-core";
const candidates = generateCandidates(dom);extractSelectorFromError(error)
Parses a selector string from a WDIO or Appium error message.
import { extractSelectorFromError } from "@sir_hlony_letaoana/heal-core";
const selector = extractSelectorFromError(error);Scoring model
| Signal | Weight |
|---|---|
| data-testid / accessibility-id | +5 |
| resource-id | +4 |
| aria-label / content-desc | +3 |
| name / id | +2 |
| Levenshtein similarity to original | 0–2 |
| Positional selector penalty | −3 |
| Text XPath penalty | −1 |
Confidence: high (score ≥ 5), medium (≥ 2), low (< 2).
Types
interface SelectorFailureContext {
selector: string;
dom: string;
testName: string;
platform?: "web" | "android" | "ios";
errorMessage?: string;
}
interface HealingSuggestion {
selector: string;
score: number;
reason: string;
confidence: "high" | "medium" | "low";
}
interface HealResult {
original: string;
suggestions: HealingSuggestion[];
healedAt: number;
testName: string;
}