@ia-qa/self-healing 1.8.2 → 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 +40 -4
- package/SPEC-selector-resolution.md +51 -2
- package/TUTORIAL.md +17 -5
- package/dist/browser/extract.js +100 -0
- package/dist/browser/extract.js.map +1 -1
- package/dist/browser/match.d.ts +40 -12
- package/dist/browser/match.js +29 -2
- package/dist/browser/match.js.map +1 -1
- package/dist/browser/resolve.js +28 -7
- package/dist/browser/resolve.js.map +1 -1
- package/dist/cli/fix.js +18 -1
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/map.js +52 -2
- package/dist/cli/map.js.map +1 -1
- package/dist/engineProbe.d.ts +14 -0
- package/dist/engineProbe.js +133 -0
- package/dist/engineProbe.js.map +1 -0
- package/dist/fixEngine.d.ts +6 -1
- package/dist/fixEngine.js +8 -2
- package/dist/fixEngine.js.map +1 -1
- package/dist/ingest.js +15 -0
- package/dist/ingest.js.map +1 -1
- package/dist/nameLocators.js +4 -0
- package/dist/nameLocators.js.map +1 -1
- package/dist/resolution.d.ts +9 -0
- package/dist/resolution.js +12 -2
- package/dist/resolution.js.map +1 -1
- package/dist/selectorSyntax.d.ts +42 -0
- package/dist/selectorSyntax.js +98 -0
- package/dist/selectorSyntax.js.map +1 -0
- package/dist/ui/page.js +413 -5
- package/dist/ui/page.js.map +1 -1
- package/dist/ui/server.js +109 -16
- package/dist/ui/server.js.map +1 -1
- package/dist/ui/setup.d.ts +55 -0
- package/dist/ui/setup.js +216 -0
- package/dist/ui/setup.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -98,6 +98,9 @@ npx ia-qa-heal audit # does my suite still name things that exist?
|
|
|
98
98
|
`audit` is read-only and advisory (exit 0 unless `--strict`) — it answers on day one, before
|
|
99
99
|
you have any history to compare against.
|
|
100
100
|
|
|
101
|
+
Rather fill in a form than answer questions in a terminal? `npx ia-qa-heal ui` in a folder with
|
|
102
|
+
no config opens the [console](#the-console--ia-qa-heal-ui) on a setup form that writes the same file.
|
|
103
|
+
|
|
101
104
|
**Then one command, for good:**
|
|
102
105
|
|
|
103
106
|
```bash
|
|
@@ -208,16 +211,17 @@ earns "it half worked". **Inventoried** is what `ingest` can find in your source
|
|
|
208
211
|
|---|---|---|---|
|
|
209
212
|
| CSS selectors — any language, any framework (`.js .ts .py .java .cs .rb .php .go .kt .feature`) | ✅ | ✅ | ✅ |
|
|
210
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 |
|
|
211
215
|
| Text-anchored — `getByText`, `cy.contains`, `getByTitle`, `getByAltText` | ✅ | ⚠️ reported, never judged | ❌ **by design** |
|
|
212
216
|
| `--locators` upgrade (rewrite a selector into `getByRole`) | — | — | Playwright, `.js/.ts` only |
|
|
213
217
|
| Selectors built by concatenation or a template | ❌ | ❌ | ❌ |
|
|
214
218
|
|
|
215
219
|
Three of those rows are deliberate refusals, not gaps:
|
|
216
220
|
|
|
217
|
-
- **Text-anchored locators name a string, not an element.** The contract holds
|
|
218
|
-
|
|
219
|
-
than a
|
|
220
|
-
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
|
|
221
225
|
BLOCK. Cypress reaches role-anchored rewriting only through `cy.findByRole`; that is a
|
|
222
226
|
property of Cypress's API, not a hole here.
|
|
223
227
|
- **`--locators` is Playwright-only** because `getByRole(...)` is Playwright syntax. A `.py`
|
|
@@ -226,6 +230,17 @@ Three of those rows are deliberate refusals, not gaps:
|
|
|
226
230
|
- **A concatenated selector is invisible to a static scan**, and equally invisible to the
|
|
227
231
|
literal rewrite `fix` performs. Nothing is lost by admitting it.
|
|
228
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
|
+
|
|
229
244
|
**Honest limit of the "rewritten" column outside JS.** The rewrite path accepts those file
|
|
230
245
|
extensions and the code paths are exercised, but the test suite's rewrite cases are written
|
|
231
246
|
against `.js`/`.ts` files. Treat non-JS rewriting as working-but-less-travelled: run
|
|
@@ -353,6 +368,21 @@ statement about how many pages you map: a selector on a page absent from `config
|
|
|
353
368
|
a state no capture reached, looks exactly like one that is gone. `ia-qa-heal discover` lists
|
|
354
369
|
what you are missing.
|
|
355
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
|
+
|
|
356
386
|
No `usage.json` ⇒ no bindings ⇒ nothing changes. Same rule as name drift: **no inventory, no
|
|
357
387
|
escalation.**
|
|
358
388
|
|
|
@@ -540,6 +570,12 @@ A local web console for the rows where the tool gave up: highlighted crops of ea
|
|
|
540
570
|
the `file:line` of every test that breaks, the verbs as plain-language buttons, and the history
|
|
541
571
|
as charts. `--shortcut` writes a desktop launcher.
|
|
542
572
|
|
|
573
|
+
Opened in a folder that has no `.ia-qa/config.json`, it shows a **setup form** instead: the
|
|
574
|
+
app's address, the pages (read from the sitemap, or typed), and how the app logs in — and it
|
|
575
|
+
writes the same file `init` would. It never overwrites a config, and no field asks for a
|
|
576
|
+
secret: the login answers are the *names* of environment variables or SSM parameters, and a
|
|
577
|
+
browser login is handed over as the `ia-qa-heal login` command to run.
|
|
578
|
+
|
|
543
579
|
It is **loopback only** (`127.0.0.1`), every request carries a per-process token, the Host
|
|
544
580
|
header is pinned, and its buttons spawn this package's own CLI with a fixed argv — never a
|
|
545
581
|
string from the request. It **refuses to start under CI** (an interactive surface there is a
|
|
@@ -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` |
|
|
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.
|
package/TUTORIAL.md
CHANGED
|
@@ -244,7 +244,11 @@ npm install -D @ia-qa/self-healing
|
|
|
244
244
|
npx ia-qa-heal init
|
|
245
245
|
```
|
|
246
246
|
|
|
247
|
-
It asks a few questions (your app's URL, whether there's a login, which pages to map) and writes `.ia-qa/config.json`. **You never hand-write that file — the wizard does it.**
|
|
247
|
+
It asks a few questions (your app's URL, whether there's a login, which pages to map) and writes `.ia-qa/config.json`. **You never hand-write that file — the wizard does it.**
|
|
248
|
+
|
|
249
|
+
**Prefer a form to questions in a terminal?** Run `npx ia-qa-heal ui` in the project folder instead: with no config yet, the console opens on a setup form — the same questions in your browser, writing the same file ([Step 6.8](#step-68--no-terminal-open-the-console)).
|
|
250
|
+
|
|
251
|
+
Either way, it helps to know what's inside, because it's the one file you'll tweak:
|
|
248
252
|
|
|
249
253
|
- **🔑 Credentials** — you store the *name* of an environment variable, never the password itself. The real value stays in your `.env` / shell / AWS. **Loading it is your job:** the CLI reads `process.env` and never opens a `.env` file, so a key sitting only in `.env` will not be seen — run `map` under `npx dotenv-cli --` (or Node's `--env-file-if-exists`, 20.12+). Only `map` logs in; `diff`, `baseline`, `audit` and `check` read the mapping and need no credentials. If a variable is missing, the tool stops and names the exact variable to set — it never guesses and never writes a secret to disk.
|
|
250
254
|
- **🌐 URLs to visit** — the list of pages to map. A page that lives behind a click instead of its own URL (a tab or modal an app swaps in) is reached by naming the control to click, not by a URL.
|
|
@@ -601,6 +605,13 @@ A local page opens in your browser with three things a terminal cannot give you:
|
|
|
601
605
|
click away.
|
|
602
606
|
- **The run history as charts** — see [§8.3](#83-the-trend-ia-qa-heal-history).
|
|
603
607
|
|
|
608
|
+
**Nothing set up yet? Open it anyway.** In a folder with no `.ia-qa/config.json`, the console shows
|
|
609
|
+
a setup form instead: the app's address, the pages (read from the sitemap in one click, or typed),
|
|
610
|
+
and how the app logs in. The panel beside it shows the exact file that will be written, and it is
|
|
611
|
+
the same file `init` writes. It never overwrites a config, and no field asks for a password: you
|
|
612
|
+
give the *names* of the variables that hold the credentials, and a browser login is handed over
|
|
613
|
+
as the `ia-qa-heal login` command to run once in a terminal.
|
|
614
|
+
|
|
604
615
|
Once, per project, so nobody ever types a command again:
|
|
605
616
|
|
|
606
617
|
```bash
|
|
@@ -618,10 +629,10 @@ leaves a process running behind your back. It can do **nothing the CLI would ref
|
|
|
618
629
|
it would simply hang.
|
|
619
630
|
|
|
620
631
|
Working on several projects? The header carries a **Project** dropdown. Pick
|
|
621
|
-
**+ Add another project…** and paste the folder's path
|
|
622
|
-
|
|
623
|
-
click from then on, and `ia-qa-heal ui --forget [dir]` takes it back out
|
|
624
|
-
the project).
|
|
632
|
+
**+ Add another project…** and paste the folder's path. A folder that has never been set up opens
|
|
633
|
+
on the setup form above, and joins the list once its config is written. Everything you add is
|
|
634
|
+
remembered, so it is one click from then on, and `ia-qa-heal ui --forget [dir]` takes it back out
|
|
635
|
+
(deleting nothing inside the project).
|
|
625
636
|
|
|
626
637
|
---
|
|
627
638
|
|
|
@@ -924,6 +935,7 @@ npx ia-qa-heal graph --format markdown # the navigation graph, one card per p
|
|
|
924
935
|
npx ia-qa-heal run # the whole loop: capture (your suite, IAQA_CAPTURE=1) → diff → confirm → fix → re-run to verify
|
|
925
936
|
|
|
926
937
|
npx ia-qa-heal ui # the local console: decide with pictures, verbs as buttons, history as charts
|
|
938
|
+
# (in a folder with no config: a setup form that writes it)
|
|
927
939
|
npx ia-qa-heal ui --shortcut # once per project: a desktop icon that opens it in one click
|
|
928
940
|
npx ia-qa-heal ui --forget [dir] # drop a project from the console's switcher
|
|
929
941
|
npx ia-qa-heal history [--json] # the trend: verdicts over time, coverage, which pages churn
|
package/dist/browser/extract.js
CHANGED
|
@@ -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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"}
|
package/dist/browser/match.d.ts
CHANGED
|
@@ -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>;
|
package/dist/browser/match.js
CHANGED
|
@@ -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 =
|
|
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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"}
|
package/dist/browser/resolve.js
CHANGED
|
@@ -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
|
-
|
|
108
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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.
|