@ia-qa/self-healing 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -211,16 +211,17 @@ earns "it half worked". **Inventoried** is what `ingest` can find in your source
211
211
  |---|---|---|---|
212
212
  | CSS selectors — any language, any framework (`.js .ts .py .java .cs .rb .php .go .kt .feature`) | ✅ | ✅ | ✅ |
213
213
  | Role-anchored names — `getByRole`, `getByLabel`, `getByPlaceholder`, `findByRole`, `By.linkText` | ✅ | ✅ | ✅ |
214
+ | The same, on structure — `getByRole('heading' \| 'status' \| 'alert', { name })` | ✅ | ✅ | ✅ the name in the call |
214
215
  | Text-anchored — `getByText`, `cy.contains`, `getByTitle`, `getByAltText` | ✅ | ⚠️ reported, never judged | ❌ **by design** |
215
216
  | `--locators` upgrade (rewrite a selector into `getByRole`) | — | — | Playwright, `.js/.ts` only |
216
217
  | Selectors built by concatenation or a template | ❌ | ❌ | ❌ |
217
218
 
218
219
  Three of those rows are deliberate refusals, not gaps:
219
220
 
220
- - **Text-anchored locators name a string, not an element.** The contract holds interactive
221
- elements only, so nothing can prove `getByText('Save')` meant the renamed button rather
222
- than a heading that never moved. Editing one would break a *passing* test — the single
223
- outcome worse than the drift. They are reported with `file:line` and hold the verdict at
221
+ - **Text-anchored locators name a string, not an element.** The contract holds the page's
222
+ controls and its structure — not every paragraph — so nothing can prove `getByText('Save')`
223
+ meant the renamed button rather than a line of prose that never moved. Editing one would
224
+ break a *passing* test — the single outcome worse than the drift. They are reported with `file:line` and hold the verdict at
224
225
  BLOCK. Cypress reaches role-anchored rewriting only through `cy.findByRole`; that is a
225
226
  property of Cypress's API, not a hole here.
226
227
  - **`--locators` is Playwright-only** because `getByRole(...)` is Playwright syntax. A `.py`
@@ -229,6 +230,17 @@ Three of those rows are deliberate refusals, not gaps:
229
230
  - **A concatenated selector is invisible to a static scan**, and equally invisible to the
230
231
  literal rewrite `fix` performs. Nothing is lost by admitting it.
231
232
 
233
+ **Structure is in the contract too, and matched more strictly than a control.** `map` records
234
+ headings, live regions (`status`, `alert`, `output`, `aria-live`) and landmarks that carry a
235
+ real name — because a test asserts on what a page *says*, and a Page Object needs the sections
236
+ it says it in. Two restraints keep that from becoming noise. An element with **neither a name
237
+ nor an identity-bearing selector** is not written down at all: a nameless `<nav>` at a
238
+ positional address says nothing and moves on the next insertion. And structure is matched on
239
+ **role + name alone** — no context tie-break, no fuzzy fallback. Both shortcuts are right for a
240
+ control and wrong here: a heading's context is the heading *before* it, so it shifts exactly
241
+ when you need it, and "Beta Widget" is a 0.6 fuzzy match for "Alpha Widget". Two candidates are
242
+ `ambiguous`, none is `lost`, and neither is ever a guessed rewrite.
243
+
232
244
  **Honest limit of the "rewritten" column outside JS.** The rewrite path accepts those file
233
245
  extensions and the code paths are exercised, but the test suite's rewrite cases are written
234
246
  against `.js`/`.ts` files. Treat non-JS rewriting as working-but-less-travelled: run
@@ -356,6 +368,21 @@ statement about how many pages you map: a selector on a page absent from `config
356
368
  a state no capture reached, looks exactly like one that is gone. `ia-qa-heal discover` lists
357
369
  what you are missing.
358
370
 
371
+ **Not only CSS.** A suite writes `text=Save`, `//button[@id="save"]`, `button:has-text("Save")`,
372
+ and in Cypress `button:contains("Save")`. `querySelectorAll` rejects every one of them, so they
373
+ used to be reported as *not seen* — with the element sitting right there in the page. Each
374
+ grammar is now asked of the engine that owns it: Playwright's own selector engine for its
375
+ syntax and for XPath (the same XPath Selenium evaluates), and jQuery for what Cypress writes —
376
+ injected for the probe and handed straight back, so your page keeps its own `$`. A `${…}`
377
+ template is the one honest dead end: it has no value at capture time, so it is counted as
378
+ **not evaluable**, apart from *not seen*, because the two carry opposite remedies.
379
+
380
+ One repair is refused for the same reason the others are offered: the target is a CSS contract
381
+ selector, so an XPath literal is never rewritten where the call demands an XPath —
382
+ `By.xpath("#pay-now")` is not an XPath, and a repair that leaves your test red while looking
383
+ applied is worse than the drift. Written in `locator()` or `cy.get()`, which take plain CSS,
384
+ the same literal is repaired as usual.
385
+
359
386
  No `usage.json` ⇒ no bindings ⇒ nothing changes. Same rule as name drift: **no inventory, no
360
387
  escalation.**
361
388
 
@@ -45,7 +45,7 @@ For one page, at one moment, for one selector string taken from the test files:
45
45
  | `outside` | matches exactly one element, which the contract does not hold | **known and silent** — never a finding |
46
46
  | `ambiguous` | matches several elements | reported, never rewritten |
47
47
  | `unresolved` | matches nothing | reported **with its denominator**, never a verdict |
48
- | `invalid` | not a selector this browser can parse | reported once, it is a bug in the test |
48
+ | `invalid` | no engine could be asked: a `${…}` template with no value at capture time, or a string no grammar accepts | counted **apart** from `unseen` — neither coverage nor breakage |
49
49
 
50
50
  ### 2.1 `outside` is the majority case, and it must be silent
51
51
 
@@ -100,6 +100,43 @@ opens that modal fails early, the state is never reached either. So:
100
100
  ("resolved 214 of 380 · over 12 pages"), and never escalates a verdict. Same rule the
101
101
  package already applies to pages: not measured is `stale`, never `ok`.
102
102
 
103
+ ### 2.3 A suite does not write only CSS — each grammar is asked of its own engine
104
+
105
+ `resolve.js` runs `querySelectorAll`, which throws on `text=Save`, on `//button[@id]`, on
106
+ `button:has-text("Save")` and on `li:contains("Save")`. Every one of those came back
107
+ `invalid`, `bindingTotals` folded `invalid` into `unseen`, and `map` printed them under a
108
+ line that reads *"about your coverage, not your tests — run `ia-qa-heal discover`"*.
109
+ Measured on a page holding every one of those elements: **5 selectors reported not seen, 4
110
+ of them sitting in the DOM.** The remedy was wrong because the classification was.
111
+
112
+ `ingest` admits those strings deliberately — they are locators, not typos — so `map` now
113
+ routes each one to the engine that owns its grammar (`selectorSyntax.ts`, `engineProbe.ts`):
114
+
115
+ | Grammar | Asked of | Why that engine |
116
+ |---|---|---|
117
+ | `text=`, `role=`, `>>`, `:has-text()`, `:text-is()`, `:nth-match()` | Playwright's own selector engine | it is the engine the suite's runtime uses |
118
+ | XPath, prefixed (`xpath=…`) or bare (`//button`) | the same engine | XPath 1.0, identical to what Selenium evaluates |
119
+ | `:contains()`, `:eq()`, `:first`, `:visible`, `:hidden` | jQuery, injected for the probe and given straight back | it is the library Cypress itself runs |
120
+ | `${…}` | nobody | it has no value at capture time — `invalid`, counted apart |
121
+
122
+ Three rules hold this down:
123
+
124
+ 1. **Nothing here re-implements a grammar.** A hand-rolled `:contains` that disagreed with
125
+ jQuery by one case-sensitivity rule would produce a wrong binding, and a wrong binding
126
+ produces a wrong rewrite. Not a fuzzy matcher (§8) applies to grammars too.
127
+ 2. **One classification.** The engine only finds nodes; `resolveSelectors` still decides
128
+ bound / anchored / outside / ambiguous, over nodes handed to it as `matched`. A binding
129
+ means the same thing whatever found the element — the rule that keeps `map`, `diff`,
130
+ `fix` and the MCP from drifting apart.
131
+ 3. **The page is left as found.** jQuery is evaluated through the debugging protocol (so a
132
+ page CSP does not apply), with `module`, `exports` and `define` shadowed so its UMD takes
133
+ the browser branch, and `noConflict(true)` gives the page's own `$`/`jQuery` back.
134
+ Verified against a page carrying its own marked jQuery, with `define.amd` set, under
135
+ `default-src 'self'`: same object back, `$ === jQuery`, no leftover global.
136
+
137
+ A selector both engines understand (`:visible`) is asked of the framework that wrote it —
138
+ `usage.json` records the shape per site. With no framework, Playwright answers.
139
+
103
140
  ---
104
141
 
105
142
  ## 3. Why resolution happens wherever a browser is open
@@ -234,7 +271,13 @@ It must **not** rewrite:
234
271
  human-authored selector with a synthesized one for no reason),
235
272
  - `ambiguous`, `unresolved` without a surviving element, or `reboundSelector`,
236
273
  - a selector whose `usage.json` sites span files the rewrite was not asked to touch —
237
- the existing `--dir` / `testPaths` rules apply unchanged.
274
+ the existing `--dir` / `testPaths` rules apply unchanged,
275
+ - **an XPath literal whose call demands an XPath.** The healed target is always a *CSS*
276
+ contract selector and `fix` replaces a literal without reading the call around it, so
277
+ `By.xpath("#prefs > button:nth-of-type(1)")` is not an XPath: the test stays exactly as
278
+ red while the run reports a repair, which is worse than the drift. Refused and named
279
+ (`acceptsCssRewrite`). The same string inside `locator()` or `cy.get()` — both take plain
280
+ CSS — is repaired as usual, so the refusal is about the call, never about the grammar.
238
281
 
239
282
  This mirrors `computeLocatorRewrites`'s refusal to touch `unattributable` name calls. The
240
283
  rule is the same one, in a different space: **never rewrite what the tool cannot prove.**
@@ -257,12 +300,18 @@ screen.** So `map` states it, over the union of the pages just mapped, in four c
257
300
  | `working` | reaches something real with no stable identity — fine today, nothing to repair towards |
258
301
  | `ambiguous` | matches several elements — a human decides |
259
302
  | `unseen` | on no page mapped this run |
303
+ | `unevaluable` | no engine could be asked — a `${…}` template, or a string no grammar accepts |
260
304
 
261
305
  The composition matters more than the ratio: a selector that *works* is not the same
262
306
  problem as one never seen. And `unseen` is a statement about **coverage**, not about the
263
307
  suite — with 6 of 163 pages captured it says almost nothing (§2.2), which is exactly the
264
308
  reading both evaluations got wrong.
265
309
 
310
+ `unevaluable` is counted apart for the same reason, and it is the class §2.3 exists to
311
+ stop hiding: folded into `unseen` it carried the opposite remedy — *map more pages* for
312
+ selectors that were in the DOM. Its line prints only when it is not zero; a line that
313
+ fires on the good run is a defect here.
314
+
266
315
  Aggregated per selector, ranked `repairable > working > ambiguous` — deliberately **not**
267
316
  `mergeBinding`, which answers "is this binding safe to rewrite from, within one moment"
268
317
  and would call the same string ambiguous across two pages. Two questions, two functions.
@@ -37,6 +37,28 @@ function extractInPage() {
37
37
  '[role="tab"]',
38
38
  '[onclick]',
39
39
  ].join(', ');
40
+ /**
41
+ * The structure a Page Object needs beyond the clickables: what the page *says*, and
42
+ * the sections it says it in.
43
+ *
44
+ * Kept as a second pass rather than more entries above, because the two populations are
45
+ * **named differently** and merging them would produce garbage. `accessibleName` falls
46
+ * back to `textContent`: right for a heading, whose text is exactly what
47
+ * `getByRole('heading', { name })` matches — and catastrophic for a landmark, where an
48
+ * unlabelled `<nav>` would be named by the concatenation of every link inside it and
49
+ * re-named whenever any one of them changed. A live region has the same shape: its text
50
+ * is the message, which is the thing that varies.
51
+ */
52
+ const STRUCTURE = [
53
+ { selector: 'h1, h2, h3, h4, h5, h6, [role="heading"]', kind: 'heading' },
54
+ { selector: '[role="status"], [role="alert"], output, [aria-live]', kind: 'live' },
55
+ {
56
+ selector: 'main, nav, header, footer, aside, form, [role="main"], [role="navigation"], ' +
57
+ '[role="banner"], [role="contentinfo"], [role="complementary"], [role="form"], ' +
58
+ '[role="search"], [role="region"], [role="dialog"]',
59
+ kind: 'landmark',
60
+ },
61
+ ];
40
62
  function isVisible(el) {
41
63
  const rect = el.getBoundingClientRect();
42
64
  if (rect.width === 0 || rect.height === 0)
@@ -301,6 +323,84 @@ function extractInPage() {
301
323
  item.href = dest;
302
324
  elements.push(item);
303
325
  }
326
+ /**
327
+ * A name the page *states*, never one inferred from what it contains.
328
+ *
329
+ * `aria-label` and `aria-labelledby` only — no `textContent` fallback. That fallback is
330
+ * what makes `accessibleName` correct for headings and wrong here.
331
+ */
332
+ function explicitName(el) {
333
+ const clean120 = function (s) { return (s == null ? '' : String(s)).trim().replace(/\s+/g, ' ').slice(0, 120); };
334
+ const ariaLabel = el.getAttribute('aria-label');
335
+ if (ariaLabel)
336
+ return clean120(ariaLabel);
337
+ const labelledBy = el.getAttribute('aria-labelledby');
338
+ if (labelledBy) {
339
+ const joined = labelledBy.split(/\s+/).map(function (id) {
340
+ const node = document.getElementById(id);
341
+ return node ? node.textContent : '';
342
+ }).join(' ');
343
+ if (clean120(joined))
344
+ return clean120(joined);
345
+ }
346
+ return '';
347
+ }
348
+ /** Did `stableSelector` find an identity, or fall back to a position? */
349
+ function identityBearing(selector) {
350
+ return /^\[(?:data-testid|data-test-id|data-test|data-cy|data-qa|data-e2e)=/.test(selector) || selector.charAt(0) === '#';
351
+ }
352
+ /**
353
+ * The ARIA role of a landmark element — deliberately NOT `LANDMARK_TAGS`, which labels the
354
+ * `context` string for a human ("nav › Checkout") and maps NAV to "nav". A contract row is
355
+ * read by `getByRole`, where the role is `navigation`; emitting "nav" would both miss every
356
+ * `getByRole('navigation')` and leave the element outside `STRUCTURAL_ROLES`, i.e. matched
357
+ * by the control path with the context tie-break and the fuzzy fallback this pass exists to
358
+ * refuse. Caught by reading a regenerated fixture, not by a test — hence the test below it.
359
+ *
360
+ * The two maps stay separate: re-labelling `LANDMARK_TAGS` would rewrite the `context` of
361
+ * every element in every contract already on disk.
362
+ */
363
+ const LANDMARK_ARIA = {
364
+ MAIN: 'main', NAV: 'navigation', HEADER: 'banner', FOOTER: 'contentinfo',
365
+ ASIDE: 'complementary', FORM: 'form', SECTION: 'region', DIALOG: 'dialog',
366
+ };
367
+ function structuralRole(el, kind) {
368
+ const explicit = el.getAttribute('role');
369
+ if (explicit)
370
+ return explicit;
371
+ if (kind === 'heading')
372
+ return 'heading';
373
+ // `output` and `aria-live` have no implicit ARIA role of their own here: both are
374
+ // polite announcements, which is what `status` means to a locator.
375
+ if (kind === 'live')
376
+ return 'status';
377
+ return LANDMARK_ARIA[el.tagName] || 'region';
378
+ }
379
+ for (let g = 0; g < STRUCTURE.length; g++) {
380
+ const group = STRUCTURE[g];
381
+ const nodes = document.querySelectorAll(group.selector);
382
+ for (let j = 0; j < nodes.length; j++) {
383
+ const el = nodes[j];
384
+ if (!isVisible(el))
385
+ continue;
386
+ const selector = stableSelector(el);
387
+ // The same element reached twice — a heading that is also a link, a form that is
388
+ // also a landmark — is one element, and the interactive pass already owns it.
389
+ if (seen[selector])
390
+ continue;
391
+ const name = group.kind === 'heading' ? accessibleName(el) : explicitName(el);
392
+ /**
393
+ * Nothing identifies this element: no name to match on, no identity in its
394
+ * selector. Capturing it would add a purely positional row that says nothing and
395
+ * moves on the next insertion — noise that a verdict would then have to carry.
396
+ * An unlabelled `<nav>` and an empty live region are the ordinary cases.
397
+ */
398
+ if (!name && !identityBearing(selector))
399
+ continue;
400
+ seen[selector] = true;
401
+ elements.push({ role: structuralRole(el, group.kind), name: name, selector: selector, context: context(el) });
402
+ }
403
+ }
304
404
  return elements;
305
405
  }
306
406
  //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/browser/extract.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/browser/extract.js"],"names":[],"mappings":"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"}
@@ -10,18 +10,16 @@
10
10
  export function normalize(s: any): string;
11
11
  /** Sørensen–Dice similarity over character bigrams. */
12
12
  export function diceSimilarity(a: any, b: any): number;
13
- /**
14
- * Resolve `target` against live `candidates`. Returns one of:
15
- * - { matched: true, selector, score, matchType, name, disambiguatedBy? }
16
- * - { ambiguous: true, count } — several equally-good elements; refuse to
17
- * guess (healing the wrong one is worse than failing). A human decides.
18
- * - null — no candidate matches.
19
- *
20
- * Disambiguation: when role + accessible name collide (many "Delete" buttons),
21
- * the element's `context` (nearest landmark + section heading) breaks the tie.
22
- * If context can't reduce it to one, we return `ambiguous` rather than pick.
23
- */
24
13
  export function matchElement(target: any, candidates: any): {
14
+ matched: boolean;
15
+ selector: any;
16
+ score: number;
17
+ matchType: string;
18
+ name: any;
19
+ disambiguatedBy: any;
20
+ ambiguous?: undefined;
21
+ count?: undefined;
22
+ } | {
25
23
  ambiguous: boolean;
26
24
  count: any;
27
25
  matched?: undefined;
@@ -45,9 +43,9 @@ export function matchElement(target: any, candidates: any): {
45
43
  score: any;
46
44
  matchType: string;
47
45
  name: any;
46
+ disambiguatedBy?: undefined;
48
47
  ambiguous?: undefined;
49
48
  count?: undefined;
50
- disambiguatedBy?: undefined;
51
49
  } | null;
52
50
  /** Healer-facing shim: selector only when unambiguously matched, else null. */
53
51
  export function heuristicMatch(target: any, candidates: any): any;
@@ -120,3 +118,33 @@ export function diffMappings(before: any, after: any): {
120
118
  */
121
119
  export function verdictFromCounts(counts: any): "BLOCK" | "FIX" | "PASS";
122
120
  export const FUZZY_THRESHOLD: 0.6;
121
+ /**
122
+ * Resolve `target` against live `candidates`. Returns one of:
123
+ * - { matched: true, selector, score, matchType, name, disambiguatedBy? }
124
+ * - { ambiguous: true, count } — several equally-good elements; refuse to
125
+ * guess (healing the wrong one is worse than failing). A human decides.
126
+ * - null — no candidate matches.
127
+ *
128
+ * Disambiguation: when role + accessible name collide (many "Delete" buttons),
129
+ * the element's `context` (nearest landmark + section heading) breaks the tie.
130
+ * If context can't reduce it to one, we return `ambiguous` rather than pick.
131
+ */
132
+ /**
133
+ * Roles the contract holds as *structure* rather than as controls: what the page says, and
134
+ * the sections it says it in.
135
+ *
136
+ * They are matched on role + name **only** — no context tie-break, no fuzzy fallback — and
137
+ * the corpus is why. On `duplicate-role-name`, where two cards deliberately end up with the
138
+ * same heading, both shortcuts produced a `healable` rewrite in the one scenario the manifest
139
+ * declares must never produce one:
140
+ *
141
+ * - **context** picked one of the two identical headings. But a heading's context is
142
+ * derived from the heading *before* it, so it changes when a neighbour changes: the
143
+ * tie-break is circular exactly when it is needed.
144
+ * - **fuzzy** matched "Beta Widget" onto "Alpha Widget" — they share a word, and the 0.6
145
+ * dice threshold is calibrated for control labels ("Save" → "Save changes"), not prose.
146
+ *
147
+ * So two candidates are `ambiguous` and none is `lost`, which is what a human can act on.
148
+ * A wrong rewrite is worse than no rewrite; that rule does not change with the role.
149
+ */
150
+ export const STRUCTURAL_ROLES: Set<string>;
@@ -9,7 +9,7 @@
9
9
  * than reporting nothing.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.FUZZY_THRESHOLD = void 0;
12
+ exports.STRUCTURAL_ROLES = exports.FUZZY_THRESHOLD = void 0;
13
13
  exports.normalize = normalize;
14
14
  exports.diceSimilarity = diceSimilarity;
15
15
  exports.matchElement = matchElement;
@@ -56,17 +56,44 @@ exports.FUZZY_THRESHOLD = 0.6;
56
56
  * the element's `context` (nearest landmark + section heading) breaks the tie.
57
57
  * If context can't reduce it to one, we return `ambiguous` rather than pick.
58
58
  */
59
+ /**
60
+ * Roles the contract holds as *structure* rather than as controls: what the page says, and
61
+ * the sections it says it in.
62
+ *
63
+ * They are matched on role + name **only** — no context tie-break, no fuzzy fallback — and
64
+ * the corpus is why. On `duplicate-role-name`, where two cards deliberately end up with the
65
+ * same heading, both shortcuts produced a `healable` rewrite in the one scenario the manifest
66
+ * declares must never produce one:
67
+ *
68
+ * - **context** picked one of the two identical headings. But a heading's context is
69
+ * derived from the heading *before* it, so it changes when a neighbour changes: the
70
+ * tie-break is circular exactly when it is needed.
71
+ * - **fuzzy** matched "Beta Widget" onto "Alpha Widget" — they share a word, and the 0.6
72
+ * dice threshold is calibrated for control labels ("Save" → "Save changes"), not prose.
73
+ *
74
+ * So two candidates are `ambiguous` and none is `lost`, which is what a human can act on.
75
+ * A wrong rewrite is worse than no rewrite; that rule does not change with the role.
76
+ */
77
+ exports.STRUCTURAL_ROLES = new Set([
78
+ 'heading', 'status', 'alert',
79
+ 'main', 'navigation', 'banner', 'contentinfo', 'complementary', 'form', 'search', 'region', 'dialog',
80
+ ]);
59
81
  function matchElement(target, candidates) {
60
82
  const sameRole = candidates.filter((c) => c.role === target.role);
61
83
  const wanted = normalize(target.name);
62
84
  const wantedCtx = normalize(target.context);
85
+ const structural = exports.STRUCTURAL_ROLES.has(target.role);
63
86
  const exact = sameRole.filter((c) => normalize(c.name) === wanted && wanted !== '');
64
- const exactPick = disambiguate(exact, wantedCtx);
87
+ const exactPick = structural
88
+ ? (exact.length === 1 ? { one: exact[0] } : exact.length > 1 ? { ambiguous: true } : { one: null })
89
+ : disambiguate(exact, wantedCtx);
65
90
  if (exactPick.one) {
66
91
  return { matched: true, selector: exactPick.one.selector, score: 1, matchType: 'exact', name: exactPick.one.name, disambiguatedBy: exactPick.by };
67
92
  }
68
93
  if (exactPick.ambiguous)
69
94
  return { ambiguous: true, count: exact.length };
95
+ if (structural)
96
+ return null;
70
97
  const scored = sameRole
71
98
  .map((c) => ({ c, score: diceSimilarity(normalize(c.name), wanted) }))
72
99
  .filter((x) => x.score >= exports.FUZZY_THRESHOLD)
@@ -1 +1 @@
1
- {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/browser/match.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/browser/match.js"],"names":[],"mappings":"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"}
@@ -30,6 +30,17 @@ function resolveSelectors(args) {
30
30
  // single serializable value. Two parameters would silently arrive as one.
31
31
  const pomSelectors = args.pom;
32
32
  const contractSelectors = args.contract;
33
+ /**
34
+ * Elements another engine already found, keyed by the literal that found them.
35
+ *
36
+ * `querySelectorAll` speaks CSS and nothing else, so `text=Save`, `//button` and
37
+ * `li:contains("Save")` used to land in `invalid` and be counted as never seen — with the
38
+ * element sitting in the DOM. Playwright's engine and jQuery answer for their own grammars
39
+ * (see `selectorSyntax.ts`), Node hands the nodes in here, and the classification below —
40
+ * bound, anchored, outside, ambiguous — stays the single one it has always been. Two
41
+ * engines, one meaning for a binding.
42
+ */
43
+ const engineMatched = args.matched || null;
33
44
  /**
34
45
  * Attributes that identify an element independently of where it sits or how it looks.
35
46
  *
@@ -104,14 +115,24 @@ function resolveSelectors(args) {
104
115
  const out = {};
105
116
  for (const pom of pomSelectors) {
106
117
  let nodes;
107
- try {
108
- nodes = Array.prototype.slice.call(document.querySelectorAll(pom));
118
+ if (engineMatched && Object.prototype.hasOwnProperty.call(engineMatched, pom)) {
119
+ // Already answered by the engine that owns this grammar. Filtered to elements still in
120
+ // the document: a handle to a node the page has since detached names nothing to bind.
121
+ nodes = Array.prototype.slice.call(engineMatched[pom] || []).filter(function (n) {
122
+ return n && n.nodeType === 1 && n.isConnected;
123
+ });
109
124
  }
110
- catch {
111
- // Not parseable as a selector — usually a template string the static scan caught
112
- // mid-concatenation, occasionally a real bug in the test.
113
- out[pom] = { status: 'invalid' };
114
- continue;
125
+ else {
126
+ try {
127
+ nodes = Array.prototype.slice.call(document.querySelectorAll(pom));
128
+ }
129
+ catch {
130
+ // Not CSS. Node re-asks the right engine (Playwright, XPath, jQuery) and calls back
131
+ // with `matched`; what is still here on the second pass is a template with no value
132
+ // at capture time, or a string no engine accepts.
133
+ out[pom] = { status: 'invalid' };
134
+ continue;
135
+ }
115
136
  }
116
137
  if (nodes.length === 0) {
117
138
  // Says nothing about whether the element exists: this page, this state, this moment.
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/browser/resolve.js"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;AAEH,4CAiHC;AAjHD,SAAgB,gBAAgB,CAAC,IAAI;IACnC,sFAAsF;IACtF,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAExC;;;;;;OAMG;IACH,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEtG,SAAS,SAAS,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,cAAc,CAAC,EAAE;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACrD,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;YAAE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,KAAK;gBAAE,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uFAAuF;IACvF,oFAAoF;IACpF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,oFAAoF;QACtF,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,iFAAiF;YACjF,0DAA0D;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,qFAAqF;YACrF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,kFAAkF;YAClF,kFAAkF;YAClF,iFAAiF;YACjF,wBAAwB;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/browser/resolve.js"],"names":[],"mappings":"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"}
package/dist/cli/fix.js CHANGED
@@ -43,6 +43,7 @@ const fixEngine_1 = require("../fixEngine");
43
43
  const ingest_1 = require("../ingest");
44
44
  const nameDrift_1 = require("../nameDrift");
45
45
  const nameLocators_1 = require("../nameLocators");
46
+ const selectorSyntax_1 = require("../selectorSyntax");
46
47
  const captureMerge_1 = require("../captureMerge");
47
48
  const config_1 = require("../config");
48
49
  const summary_1 = require("./summary");
@@ -72,7 +73,23 @@ function bindingRewritesFor(beforeFile, afterFile, page, rows) {
72
73
  return { present: true, selector: row.healedSelector };
73
74
  return { present: false, selector: contractSelector };
74
75
  });
75
- return (0, fixEngine_1.computeBindingRewrites)(drift);
76
+ // A healed target is a CSS contract selector, and `fix` replaces a literal without reading
77
+ // the call around it. Inside `By.xpath("…")` that literal must stay an XPath, so those are
78
+ // dropped — and named, like every other refusal here. Silence would read as "repaired".
79
+ const usage = (0, ingest_1.loadUsage)();
80
+ const refused = [];
81
+ const rewrites = (0, fixEngine_1.computeBindingRewrites)(drift, (selector) => {
82
+ const shapes = (usage?.selectors[selector] ?? []).map((site) => site.shape);
83
+ if ((0, selectorSyntax_1.acceptsCssRewrite)((0, selectorSyntax_1.classifySelector)(selector, shapes), shapes))
84
+ return true;
85
+ refused.push(selector);
86
+ return false;
87
+ });
88
+ for (const selector of refused) {
89
+ console.log(` ⚠ not rewritten: ${selector}\n` +
90
+ ` its call takes an XPath, and the repair target is a CSS selector. Change the locator yourself.`);
91
+ }
92
+ return rewrites;
76
93
  }
77
94
  const resolution_1 = require("../resolution");
78
95
  /**