@ia-qa/self-healing 1.19.1 → 1.24.0
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 +64 -3
- package/TUTORIAL.md +35 -4
- package/dist/aom.d.ts +20 -0
- package/dist/aom.js +25 -0
- package/dist/aom.js.map +1 -1
- package/dist/browser/resolve.js +4 -1
- package/dist/browser/resolve.js.map +1 -1
- package/dist/captureMerge.d.ts +11 -0
- package/dist/captureMerge.js +4 -1
- package/dist/captureMerge.js.map +1 -1
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit.d.ts +22 -1
- package/dist/cli/audit.js +43 -6
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/diff.d.ts +62 -0
- package/dist/cli/diff.js +104 -4
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/explain.js +57 -12
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/fix.d.ts +15 -0
- package/dist/cli/fix.js +13 -2
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/index.js +9 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/map.d.ts +2 -0
- package/dist/cli/map.js +13 -0
- package/dist/cli/map.js.map +1 -1
- package/dist/cli/run.js +6 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli-ai/index.js +2 -1
- package/dist/cli-ai/index.js.map +1 -1
- package/dist/cypress/capture.js +16 -6
- package/dist/cypress/capture.js.map +1 -1
- package/dist/exercised.d.ts +15 -0
- package/dist/exercised.js +7 -1
- package/dist/exercised.js.map +1 -1
- package/dist/explain.d.ts +78 -3
- package/dist/explain.js +87 -9
- package/dist/explain.js.map +1 -1
- package/dist/htmlReport.js +39 -0
- package/dist/htmlReport.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest.d.ts +30 -0
- package/dist/ingest.js +46 -1
- package/dist/ingest.js.map +1 -1
- package/dist/junit.js +41 -0
- package/dist/junit.js.map +1 -1
- package/dist/mcp/server.js +11 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/nameDrift.d.ts +25 -1
- package/dist/nameDrift.js +37 -7
- package/dist/nameDrift.js.map +1 -1
- package/dist/playwright/capture.js +7 -4
- package/dist/playwright/capture.js.map +1 -1
- package/dist/redirectFix.d.ts +60 -0
- package/dist/redirectFix.js +73 -0
- package/dist/redirectFix.js.map +1 -0
- package/dist/resolution.d.ts +41 -4
- package/dist/resolution.js +66 -5
- package/dist/resolution.js.map +1 -1
- package/dist/routeDrift.d.ts +105 -0
- package/dist/routeDrift.js +96 -0
- package/dist/routeDrift.js.map +1 -0
- package/dist/selenium/capture.js +14 -3
- package/dist/selenium/capture.js.map +1 -1
- package/dist/ui/server.js +5 -6
- package/dist/ui/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/ia-qa-heal/SKILL.md +23 -1
package/README.md
CHANGED
|
@@ -347,9 +347,15 @@ sites (MDN, Bootstrap, Material UI, GOV.UK, Wikipedia, Docusaurus…), seven gai
|
|
|
347
347
|
the gain is largest on component-framework apps and near zero on content sites, so it is worth
|
|
348
348
|
saying which one you have before reaching for it.
|
|
349
349
|
|
|
350
|
-
- **
|
|
351
|
-
named like actions (*log out*, *delete*, *pay*…) are never clicked —
|
|
352
|
-
only clears local storage sends no request for the network guard to
|
|
350
|
+
- **Two guards, and you should know the limit of both.** Every non-GET request is aborted for
|
|
351
|
+
the walk, and controls named like actions (*log out*, *delete*, *pay*…) are never clicked —
|
|
352
|
+
a logout handler that only clears local storage sends no request for the network guard to
|
|
353
|
+
catch, which is why the second guard exists.
|
|
354
|
+
**Neither covers a `GET` that writes.** `GET /api/orders/42/archive` is a REST violation and
|
|
355
|
+
it is also common, in admin links, one-click confirmations and older apps; if such a
|
|
356
|
+
endpoint sits behind a control whose name reads like anything else, `--deep` will click it.
|
|
357
|
+
The denylist is the only thing between you and that, and it matches on names. **Run `--deep`
|
|
358
|
+
against staging the first time**, read what it clicked, and only then point it at production.
|
|
353
359
|
- **What it reaches but cannot contract is reported**, not hidden (`↩ N left out`): a selector
|
|
354
360
|
must name exactly one element, and a positional one captured inside a menu can collide with
|
|
355
361
|
the page behind it.
|
|
@@ -422,8 +428,63 @@ rewrites the literal in your files. Four outcomes, one repaired automatically:
|
|
|
422
428
|
| reaches **nothing**, and its element is still there | 🔧 rewritten |
|
|
423
429
|
| reaches a **different** element | ⛔ never rewritten — your test passes and acts on the wrong thing |
|
|
424
430
|
| reaches **several** elements | ⛔ a coin flip |
|
|
431
|
+
| reached **several** and now reaches **none** | ⛔ the candidates are named, none is chosen for you |
|
|
425
432
|
| its element is **gone** | ⛔ nothing to rewrite towards |
|
|
426
433
|
|
|
434
|
+
That fourth row is the one a route migration produces — every `a[href="/index.php/cart"]`
|
|
435
|
+
becoming `a[href="/cart"]` in one commit. The string used to match two links and now matches
|
|
436
|
+
neither, so your suite is red; what it could have meant is still on the page and is listed with
|
|
437
|
+
its new address. No rewrite is offered, and that is not timidity: the binding was already
|
|
438
|
+
ambiguous, so which of the two your test meant was never established. Picking one would be a
|
|
439
|
+
coin flip wearing a fix's clothes.
|
|
440
|
+
|
|
441
|
+
### A link that leads somewhere else
|
|
442
|
+
|
|
443
|
+
`href` is a **destination**, not an address. Because `stableSelector` prefers `a[href="…"]`,
|
|
444
|
+
a link whose route moved shows up as a moved selector — reported, until now, on the same line
|
|
445
|
+
as a button that slid one slot down the DOM:
|
|
446
|
+
|
|
447
|
+
```
|
|
448
|
+
🧭 2 links now lead somewhere else (the element is the same — its destination is not):
|
|
449
|
+
• Write a contract in the browser → [home]
|
|
450
|
+
/devtools/eval-contract-runner → /qatools/eval-contract
|
|
451
|
+
• ? [mcp-server]
|
|
452
|
+
/devtools/eval-contract-runner → /qatools/eval-contract
|
|
453
|
+
Not failing the run — no test navigates to these. Check the ones you reach by URL.
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
It **does not fail your run on its own**: an app is allowed to reorganise its URLs, and a gate
|
|
457
|
+
that goes red on that is a gate someone switches off. It fails only when your suite navigates
|
|
458
|
+
to the route that moved — `ingest` now inventories `page.goto`, `cy.visit`, `driver.get` and
|
|
459
|
+
`browser.url`, so that case arrives with its `file:line`. No `ingest`, no escalation.
|
|
460
|
+
|
|
461
|
+
Nothing here is ever rewritten. A `page.goto` is not a locator, and the new route may be the
|
|
462
|
+
same page renamed or a different page entirely — you can tell in a second from two URLs, and
|
|
463
|
+
the tool cannot tell at all.
|
|
464
|
+
|
|
465
|
+
Measured across two real captures of a 142-page app: **2 findings over 4 563 named links**, and
|
|
466
|
+
zero on a second corpus. Details, including the false positives the first measurement produced,
|
|
467
|
+
are in `SPEC-route-drift.md`.
|
|
468
|
+
|
|
469
|
+
### When a page you declared has moved
|
|
470
|
+
|
|
471
|
+
`map` already notices that the browser landed somewhere other than the URL in `config.json`.
|
|
472
|
+
It now offers the correction, and `--fix-redirects` writes it:
|
|
473
|
+
|
|
474
|
+
```
|
|
475
|
+
↪️ 1 declared page is no longer at the URL config.json declares:
|
|
476
|
+
articles: /articles → /resources
|
|
477
|
+
Run `ia-qa-heal map --fix-redirects` to write these, or edit config.json yourself.
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Left uncorrected, the contract for `/resources` is written under the name `articles`, which is
|
|
481
|
+
the same wrong-identity problem two apps sharing a `/login` produce.
|
|
482
|
+
|
|
483
|
+
**It refuses when several declared pages land on the same place.** That is not a migration —
|
|
484
|
+
it is an expired session, a redirect to sign-in, or an outage, and applying it would rewrite
|
|
485
|
+
your whole page list to point at the login screen. The group is named and skipped, a genuine
|
|
486
|
+
single move in the same run still applies, and the message sends you to `session --check`.
|
|
487
|
+
|
|
427
488
|
**Your app may already carry the answer.** The contract holds interactive elements only, so a
|
|
428
489
|
selector on a status div, a cell or an alert is not in it. Usually that stays quiet — such an
|
|
429
490
|
element has no identity independent of what drifts, so nothing could be repaired anyway. But
|
package/TUTORIAL.md
CHANGED
|
@@ -422,10 +422,19 @@ elements, the home page 126 → 264.
|
|
|
422
422
|
|
|
423
423
|
Four things worth knowing before you use it:
|
|
424
424
|
|
|
425
|
-
**
|
|
426
|
-
that would have deleted, paid or submitted anything
|
|
427
|
-
whose name reads like an action (*log out*, *delete*,
|
|
428
|
-
logout handler that just clears local storage sends
|
|
425
|
+
**Two guards protect your app, and one gap they do not cover.** Every non-GET request is
|
|
426
|
+
aborted for the whole walk, so a click that would have deleted, paid or submitted anything
|
|
427
|
+
never reaches your server — and controls whose name reads like an action (*log out*, *delete*,
|
|
428
|
+
*pay*…) are not clicked at all, because a logout handler that just clears local storage sends
|
|
429
|
+
no request for the network guard to stop.
|
|
430
|
+
|
|
431
|
+
> ⚠️ **A `GET` that writes gets through.** `GET /api/orders/42/archive` violates HTTP, and it
|
|
432
|
+
> is also ordinary: admin action links, one-click confirmations, older apps. The network guard
|
|
433
|
+
> sees a GET and lets it pass; only the name denylist can stop it, and it matches on the
|
|
434
|
+
> control's *label*. So the honest instruction is: **point `--deep` at staging the first time**,
|
|
435
|
+
> read the `via` paths it recorded to see what it clicked, and move it to production once you
|
|
436
|
+
> recognise them. This was reported from the field, on a game where clicking a map cell
|
|
437
|
+
> triggered a real in-game action through a GET.
|
|
429
438
|
|
|
430
439
|
**Elements it reaches but cannot contract are reported, not hidden** (`↩ 133 left out`). A
|
|
431
440
|
selector must name exactly one element; a positional one captured inside a menu can collide with
|
|
@@ -558,6 +567,28 @@ the `file:line` the error message never carried.
|
|
|
558
567
|
> **cannot tell which locator the failure is about**, that's not a pass — usually the failing
|
|
559
568
|
> file was never `ingest`ed, or the locator is built at runtime from a variable.
|
|
560
569
|
|
|
570
|
+
> 🧭 **A locator can be fine and the page still wrong.** If a link's *destination* moved —
|
|
571
|
+
> `/devtools/eval-contract-runner` → `/qatools/eval-contract` — the element is untouched, so
|
|
572
|
+
> every locator check passes. `explain` used to answer PASS there, which is true and sends you
|
|
573
|
+
> to look at timing and test data instead of at the route. It now intersects the failure text
|
|
574
|
+
> with the URLs your suite navigates to and answers **BLOCK**, naming both routes and the line
|
|
575
|
+
> that goes to the old one. `diff` reports the same thing under *"N links now lead somewhere else"*, with
|
|
576
|
+
> the page each is on. It does not fail your run unless your suite navigates to the old route,
|
|
577
|
+
> which it knows because `ingest` inventories `page.goto`, `cy.visit`, `driver.get` and
|
|
578
|
+
> `browser.url`. Nothing there is ever rewritten: only you can say whether the new route is the
|
|
579
|
+
> same page renamed or a different page. And when it is a page *you declared* that moved,
|
|
580
|
+
> `ia-qa-heal map --fix-redirects` updates `config.json` — refusing if several pages landed in
|
|
581
|
+
> the same place, because that is an expired session, not a migration.
|
|
582
|
+
|
|
583
|
+
> 🐛 **Fixed in 1.20.0, and worth knowing if you are on an older version.** `explain` used to
|
|
584
|
+
> answer *"this string reached nothing at either moment — it is not drift"* about locators that
|
|
585
|
+
> had reached something at baseline. It read only the current capture and phrased the verdict as
|
|
586
|
+
> if it had read both. That is the worst place in this tool for a false negative: "not drift" is
|
|
587
|
+
> the sentence that sends you away from the selectors and off to look at timing and test data.
|
|
588
|
+
> It now reads `baseline/_resolved/` too, and a locator that resolved then and resolves no longer
|
|
589
|
+
> comes back as drift, with `never-bound` kept for what it always meant — probed at both moments,
|
|
590
|
+
> reached nothing at either.
|
|
591
|
+
|
|
561
592
|
Read-only: it opens no browser, re-runs nothing, and edits nothing. Repairs still go through
|
|
562
593
|
`fix`, below.
|
|
563
594
|
|
package/dist/aom.d.ts
CHANGED
|
@@ -132,5 +132,25 @@ export declare function depthMismatchMessage(m: {
|
|
|
132
132
|
current: number;
|
|
133
133
|
}): string;
|
|
134
134
|
export declare function extractInteractiveElements(page: Page): Promise<MappedElement[]>;
|
|
135
|
+
/**
|
|
136
|
+
* The `.json` files in a contract directory that are **contracts**.
|
|
137
|
+
*
|
|
138
|
+
* A leading underscore is how this codebase spells "not a page" — `_exercised.json`,
|
|
139
|
+
* `_resolved/`, `_layouts/`. The rule was written down as *"every consumer that enumerates
|
|
140
|
+
* contracts already filters it out"*, and it was true of three of them and false of two.
|
|
141
|
+
*
|
|
142
|
+
* What that cost, reproduced end to end: `run` writes `mapping/_exercised.json`, `baseline`
|
|
143
|
+
* promotes it (this directory is copied wholesale, which is right — the record belongs to the
|
|
144
|
+
* moment), and then **`diff --dir` and `fix --dir` both read it as a page named `_exercised`**,
|
|
145
|
+
* fail on `has no "elements" array`, put it in `unreadable` and refuse the entire comparison
|
|
146
|
+
* with exit 2. The remedy they printed — *restore the file from git, or re-capture it* — could
|
|
147
|
+
* not work: re-capturing writes the same file again. A tool breaking its own documented loop
|
|
148
|
+
* with a file it wrote itself, and telling the user to fix it by hand.
|
|
149
|
+
*
|
|
150
|
+
* So the rule lives here now, in the module that knows what a contract is, and the five call
|
|
151
|
+
* sites share it. Three of them already agreed; the point is that agreeing by coincidence is
|
|
152
|
+
* what produced this.
|
|
153
|
+
*/
|
|
154
|
+
export declare function contractFilesIn(dir: string): string[];
|
|
135
155
|
export declare function saveMapping(mapping: PageMapping, dir?: string): string;
|
|
136
156
|
export declare function loadMapping(pageName: string, dir?: string): PageMapping;
|
package/dist/aom.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.isSameCapture = isSameCapture;
|
|
|
37
37
|
exports.depthMismatch = depthMismatch;
|
|
38
38
|
exports.depthMismatchMessage = depthMismatchMessage;
|
|
39
39
|
exports.extractInteractiveElements = extractInteractiveElements;
|
|
40
|
+
exports.contractFilesIn = contractFilesIn;
|
|
40
41
|
exports.saveMapping = saveMapping;
|
|
41
42
|
exports.loadMapping = loadMapping;
|
|
42
43
|
const fs = __importStar(require("fs"));
|
|
@@ -112,6 +113,30 @@ function depthMismatchMessage(m) {
|
|
|
112
113
|
async function extractInteractiveElements(page) {
|
|
113
114
|
return page.evaluate(extract_1.extractInPage);
|
|
114
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* The `.json` files in a contract directory that are **contracts**.
|
|
118
|
+
*
|
|
119
|
+
* A leading underscore is how this codebase spells "not a page" — `_exercised.json`,
|
|
120
|
+
* `_resolved/`, `_layouts/`. The rule was written down as *"every consumer that enumerates
|
|
121
|
+
* contracts already filters it out"*, and it was true of three of them and false of two.
|
|
122
|
+
*
|
|
123
|
+
* What that cost, reproduced end to end: `run` writes `mapping/_exercised.json`, `baseline`
|
|
124
|
+
* promotes it (this directory is copied wholesale, which is right — the record belongs to the
|
|
125
|
+
* moment), and then **`diff --dir` and `fix --dir` both read it as a page named `_exercised`**,
|
|
126
|
+
* fail on `has no "elements" array`, put it in `unreadable` and refuse the entire comparison
|
|
127
|
+
* with exit 2. The remedy they printed — *restore the file from git, or re-capture it* — could
|
|
128
|
+
* not work: re-capturing writes the same file again. A tool breaking its own documented loop
|
|
129
|
+
* with a file it wrote itself, and telling the user to fix it by hand.
|
|
130
|
+
*
|
|
131
|
+
* So the rule lives here now, in the module that knows what a contract is, and the five call
|
|
132
|
+
* sites share it. Three of them already agreed; the point is that agreeing by coincidence is
|
|
133
|
+
* what produced this.
|
|
134
|
+
*/
|
|
135
|
+
function contractFilesIn(dir) {
|
|
136
|
+
if (!fs.existsSync(dir))
|
|
137
|
+
return [];
|
|
138
|
+
return fs.readdirSync(dir).filter((f) => f.endsWith('.json') && !f.startsWith('.') && !f.startsWith('_'));
|
|
139
|
+
}
|
|
115
140
|
function saveMapping(mapping, dir = (0, config_1.mappingDir)()) {
|
|
116
141
|
fs.mkdirSync(dir, { recursive: true });
|
|
117
142
|
const file = (0, config_1.mappingPath)(mapping.page, dir);
|
package/dist/aom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aom.js","sourceRoot":"","sources":["../src/aom.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2GA,sCAKC;AAkBD,sCAOC;AAGD,oDAsBC;AAED,gEAEC;AAED,kCAwBC;AAED,kCAQC;
|
|
1
|
+
{"version":3,"file":"aom.js","sourceRoot":"","sources":["../src/aom.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/resolve.js
CHANGED
|
@@ -157,7 +157,10 @@ function resolveSelectors(args) {
|
|
|
157
157
|
out[pom] = anchor ? { status: 'anchored', selector: anchor } : { status: 'outside' };
|
|
158
158
|
}
|
|
159
159
|
else {
|
|
160
|
-
|
|
160
|
+
// `mapped` is every contracted element this string could have meant. Recording it is
|
|
161
|
+
// what lets the next capture ask whether they survived: without it an ambiguous
|
|
162
|
+
// binding is a dead end, and the drift it hides is invisible to every other check.
|
|
163
|
+
out[pom] = { status: 'ambiguous', count: nodes.length, selectors: mapped };
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/browser/resolve.js"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;AAEH,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/browser/resolve.js"],"names":[],"mappings":"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"}
|
package/dist/captureMerge.d.ts
CHANGED
|
@@ -17,6 +17,12 @@ export interface CaptureShardPage {
|
|
|
17
17
|
}
|
|
18
18
|
export interface CaptureShard {
|
|
19
19
|
pages: CaptureShardPage[];
|
|
20
|
+
/**
|
|
21
|
+
* Page names a visit might have been, when the URL could not say which — see the field of
|
|
22
|
+
* the same name on each capture hook. Absent on a shard written before it existed, which
|
|
23
|
+
* reads as *nothing was dropped*, the only safe default for an older run.
|
|
24
|
+
*/
|
|
25
|
+
unattributed?: string[];
|
|
20
26
|
}
|
|
21
27
|
export { unionElements };
|
|
22
28
|
export interface MergeResult {
|
|
@@ -24,6 +30,11 @@ export interface MergeResult {
|
|
|
24
30
|
shards: number;
|
|
25
31
|
/** Elements dropped by `config.volatile` — live content kept out of the contracts. */
|
|
26
32
|
volatileExcluded: number;
|
|
33
|
+
/**
|
|
34
|
+
* Pages a visit might have been, unioned across shards. Never empty-by-default: an older
|
|
35
|
+
* shard carries no such field, and absent reads as *nothing was dropped*.
|
|
36
|
+
*/
|
|
37
|
+
unattributed: string[];
|
|
27
38
|
}
|
|
28
39
|
export declare function mergeCaptures(cwd?: string): MergeResult | null;
|
|
29
40
|
/**
|
package/dist/captureMerge.js
CHANGED
|
@@ -105,6 +105,7 @@ function mergeCaptures(cwd = (0, config_1.baseDir)()) {
|
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
107
107
|
const byPage = new Map();
|
|
108
|
+
const unattributed = new Set();
|
|
108
109
|
for (const file of shardFiles) {
|
|
109
110
|
let shard;
|
|
110
111
|
try {
|
|
@@ -114,6 +115,8 @@ function mergeCaptures(cwd = (0, config_1.baseDir)()) {
|
|
|
114
115
|
console.warn(`⚠ Capture shard ${file} is unreadable — skipping it.`);
|
|
115
116
|
continue;
|
|
116
117
|
}
|
|
118
|
+
for (const name of shard.unattributed ?? [])
|
|
119
|
+
unattributed.add(name);
|
|
117
120
|
for (const p of shard.pages ?? []) {
|
|
118
121
|
if (!p?.page || !Array.isArray(p.elements))
|
|
119
122
|
continue;
|
|
@@ -168,7 +171,7 @@ function mergeCaptures(cwd = (0, config_1.baseDir)()) {
|
|
|
168
171
|
catch {
|
|
169
172
|
/* no config, or a malformed mapping — the merged contracts stand on their own */
|
|
170
173
|
}
|
|
171
|
-
return { pages, shards: shardFiles.length, volatileExcluded };
|
|
174
|
+
return { pages, shards: shardFiles.length, volatileExcluded, unattributed: [...unattributed].sort() };
|
|
172
175
|
}
|
|
173
176
|
/**
|
|
174
177
|
* The form every CLI verb calls: merge if there is anything to merge, say what
|
package/dist/captureMerge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captureMerge.js","sourceRoot":"","sources":["../src/captureMerge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,gCAEC;
|
|
1
|
+
{"version":3,"file":"captureMerge.js","sourceRoot":"","sources":["../src/captureMerge.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/args.js
CHANGED
|
@@ -20,7 +20,7 @@ exports.KNOWN_FLAGS = {
|
|
|
20
20
|
login: ['--url', '--session'],
|
|
21
21
|
secret: ['--json'],
|
|
22
22
|
session: ['--check', '--offline', '--url', '--session', '--json'],
|
|
23
|
-
map: ['--screenshots', '--session', '--deep', '--depth', '--deep-budget'],
|
|
23
|
+
map: ['--screenshots', '--session', '--deep', '--depth', '--deep-budget', '--fix-redirects'],
|
|
24
24
|
baseline: ['--dry-run'],
|
|
25
25
|
diff: ['--strict', '--json', '--junit', '--dir', '--report', '--open'],
|
|
26
26
|
fix: ['--dry-run', '--locators', '--dir', '--json'],
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":";;;AAkCA,gDAeC;AAjDD;;;;;;;;;;;GAWG;AACU,QAAA,WAAW,GAAsC;IAC5D,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC;IAClG,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;IAC9G,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;IACjE,GAAG,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":";;;AAkCA,gDAeC;AAjDD;;;;;;;;;;;GAWG;AACU,QAAA,WAAW,GAAsC;IAC5D,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC;IAClG,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;IAC9G,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;IACjE,GAAG,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,CAAC;IAC5F,QAAQ,EAAE,CAAC,WAAW,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;IACtE,GAAG,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;IACnD,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC7B,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;IACvD,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC;IAC3D,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IAChD,GAAG,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACtF,KAAK,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;IAC7D,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,EAAE,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,CAAC;CACnF,CAAC;AAEF,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAc;IAChE,MAAM,KAAK,GAAG,mBAAW,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,0FAA0F;gBAC9G,4GAA4G;gBAC5G,8FAA8F,CACjG,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,OAAO,8CAA8C,CAAC,CAAC;IAChH,CAAC;AACH,CAAC"}
|
package/dist/cli/audit.d.ts
CHANGED
|
@@ -42,9 +42,30 @@ export interface AuditReport {
|
|
|
42
42
|
deadLocators: DeadLocator[];
|
|
43
43
|
unresolvedSelectors: string[];
|
|
44
44
|
advisory: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* When the contract this verdict was computed from was captured — the OLDEST page in it.
|
|
47
|
+
*
|
|
48
|
+
* Every other number here is a fact about a moment, and the moment was never stated. This
|
|
49
|
+
* verb's verdict depends **entirely** on the age of the mapping: a locator "matching
|
|
50
|
+
* nothing" means nothing at all until you know whether the capture is an hour or a month
|
|
51
|
+
* old. A field report ran `audit`, read the dead locators, and concluded the project's
|
|
52
|
+
* documentation was stale — when what was stale was the capture. `map` and `rebaseline`
|
|
53
|
+
* print their dates; the one verb that needs it most did not.
|
|
54
|
+
*
|
|
55
|
+
* `null` when no page carries the field — a contract written before it existed.
|
|
56
|
+
*/
|
|
57
|
+
capturedAt: string | null;
|
|
45
58
|
}
|
|
46
59
|
export declare function auditHeadline(r: Pick<AuditReport, 'verdict' | 'deadLocators' | 'locatorsJudged'>): string;
|
|
47
|
-
|
|
60
|
+
/**
|
|
61
|
+
* How old the contract is, in words, or nothing when it does not say.
|
|
62
|
+
*
|
|
63
|
+
* `describeAge` is reused from `session --check` rather than re-rounded here: two verbs
|
|
64
|
+
* printing "2 days" and "49 hours" for the same interval is the kind of small divergence
|
|
65
|
+
* that makes a reader doubt both.
|
|
66
|
+
*/
|
|
67
|
+
export declare function captureAge(capturedAt: string | null | undefined, now?: Date): string;
|
|
68
|
+
export declare function auditCounts(r: Pick<AuditReport, 'pagesMapped' | 'locatorsNotJudged' | 'capturedAt'>, now?: Date): string[];
|
|
48
69
|
export interface DeadLocator {
|
|
49
70
|
/** As written in the test file, not as normalized for lookup. */
|
|
50
71
|
name: string;
|
package/dist/cli/audit.js
CHANGED
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.auditHeadline = auditHeadline;
|
|
37
|
+
exports.captureAge = captureAge;
|
|
37
38
|
exports.auditCounts = auditCounts;
|
|
38
39
|
exports.containsAsWords = containsAsWords;
|
|
39
40
|
exports.findDeadLocators = findDeadLocators;
|
|
@@ -45,6 +46,7 @@ const match_1 = require("../browser/match");
|
|
|
45
46
|
const config_1 = require("../config");
|
|
46
47
|
const ingest_1 = require("../ingest");
|
|
47
48
|
const nameLocators_1 = require("../nameLocators");
|
|
49
|
+
const sessionCheck_1 = require("../sessionCheck");
|
|
48
50
|
const summary_1 = require("./summary");
|
|
49
51
|
function auditHeadline(r) {
|
|
50
52
|
const n = r.deadLocators.length;
|
|
@@ -52,8 +54,29 @@ function auditHeadline(r) {
|
|
|
52
54
|
return `PASS · ${r.locatorsJudged} locators all resolve`;
|
|
53
55
|
return `${r.verdict} · ${n} locator name${n === 1 ? '' : 's'} match nothing`;
|
|
54
56
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
/**
|
|
58
|
+
* How old the contract is, in words, or nothing when it does not say.
|
|
59
|
+
*
|
|
60
|
+
* `describeAge` is reused from `session --check` rather than re-rounded here: two verbs
|
|
61
|
+
* printing "2 days" and "49 hours" for the same interval is the kind of small divergence
|
|
62
|
+
* that makes a reader doubt both.
|
|
63
|
+
*/
|
|
64
|
+
function captureAge(capturedAt, now = new Date()) {
|
|
65
|
+
if (!capturedAt)
|
|
66
|
+
return '';
|
|
67
|
+
const at = Date.parse(capturedAt);
|
|
68
|
+
if (Number.isNaN(at))
|
|
69
|
+
return '';
|
|
70
|
+
return `contract captured ${(0, sessionCheck_1.describeAge)((now.getTime() - at) / 1000)} ago`;
|
|
71
|
+
}
|
|
72
|
+
function auditCounts(r, now = new Date()) {
|
|
73
|
+
return [
|
|
74
|
+
`${r.pagesMapped} pages`,
|
|
75
|
+
r.locatorsNotJudged > 0 ? `${r.locatorsNotJudged} not judged` : '',
|
|
76
|
+
// Beside the counts, not in a footnote: this verdict is only as true as the capture is
|
|
77
|
+
// fresh, and a reader who does not see the age assumes it is current.
|
|
78
|
+
captureAge(r.capturedAt, now),
|
|
79
|
+
].filter(Boolean);
|
|
57
80
|
}
|
|
58
81
|
const FUZZY_SUGGEST = 0.6;
|
|
59
82
|
/**
|
|
@@ -94,6 +117,9 @@ function pickUnique(candidates, kind) {
|
|
|
94
117
|
function readMappings(dir) {
|
|
95
118
|
const pages = [];
|
|
96
119
|
const elements = [];
|
|
120
|
+
// The oldest moment in the contract, because that is the one the verdict is actually as
|
|
121
|
+
// good as. See `AuditReport.capturedAt`.
|
|
122
|
+
let capturedAt = null;
|
|
97
123
|
const files = fs
|
|
98
124
|
.readdirSync(dir)
|
|
99
125
|
.filter((f) => f.endsWith('.json') && !f.startsWith('.') && !f.startsWith('_'));
|
|
@@ -108,6 +134,11 @@ function readMappings(dir) {
|
|
|
108
134
|
if (!parsed || !Array.isArray(parsed.elements))
|
|
109
135
|
continue;
|
|
110
136
|
const page = file.replace(/\.json$/, '');
|
|
137
|
+
// The OLDEST moment, not the newest: the verdict is only as good as the stalest page it
|
|
138
|
+
// was computed from, and showing the freshest would flatter it.
|
|
139
|
+
if (parsed.capturedAt && (capturedAt === null || parsed.capturedAt < capturedAt)) {
|
|
140
|
+
capturedAt = parsed.capturedAt;
|
|
141
|
+
}
|
|
111
142
|
pages.push(page);
|
|
112
143
|
for (const el of parsed.elements) {
|
|
113
144
|
elements.push({ role: el.role, name: el.name, selector: el.selector, page });
|
|
@@ -129,7 +160,7 @@ function readMappings(dir) {
|
|
|
129
160
|
}
|
|
130
161
|
}
|
|
131
162
|
}
|
|
132
|
-
return { pages, elements };
|
|
163
|
+
return { pages, elements, capturedAt };
|
|
133
164
|
}
|
|
134
165
|
/**
|
|
135
166
|
* Which inventoried names resolve to nothing the contract holds?
|
|
@@ -228,7 +259,7 @@ function auditProject(opts = {}) {
|
|
|
228
259
|
` or pass the test paths directly: \`ia-qa-heal audit tests/\`.`,
|
|
229
260
|
};
|
|
230
261
|
}
|
|
231
|
-
const { pages, elements } = readMappings(dir);
|
|
262
|
+
const { pages, elements, capturedAt } = readMappings(dir);
|
|
232
263
|
const dead = findDeadLocators(usage, elements);
|
|
233
264
|
const allSites = Object.values(usage.names ?? {}).flat();
|
|
234
265
|
const judgedSites = allSites.filter(nameLocators_1.judgeable);
|
|
@@ -274,6 +305,7 @@ function auditProject(opts = {}) {
|
|
|
274
305
|
locatorsNotJudged: unjudgedSites,
|
|
275
306
|
deadLocators: dead,
|
|
276
307
|
unresolvedSelectors,
|
|
308
|
+
capturedAt,
|
|
277
309
|
advisory: !strict,
|
|
278
310
|
},
|
|
279
311
|
elements: elements.length,
|
|
@@ -373,7 +405,12 @@ async function runAudit(args) {
|
|
|
373
405
|
`\n (\`ia-qa-heal discover\` lists them; ${pageCount} page${pageCount === 1 ? ' is' : 's are'} mapped today)` +
|
|
374
406
|
`\n · unmapped state — \`map\` captures a page in ONE state. A label that only` +
|
|
375
407
|
`\n appears after a click (a tab, a mode toggle, an open dialog) is not in the` +
|
|
376
|
-
`\n contract, and a test that clicks first is right while this says otherwise.`
|
|
408
|
+
`\n contract, and a test that clicks first is right while this says otherwise.` +
|
|
409
|
+
// The third cause, and the one that sent a field report chasing the wrong thing: the
|
|
410
|
+
// capture itself. Named here beside the other two rather than left to the summary
|
|
411
|
+
// line, because this is the paragraph someone reads before believing a row.
|
|
412
|
+
(report.capturedAt ? `\n · a stale capture — ${captureAge(report.capturedAt)}. Re-run \`ia-qa-heal map\`` +
|
|
413
|
+
`\n before concluding anything from the rows above.` : ''));
|
|
377
414
|
}
|
|
378
415
|
else {
|
|
379
416
|
console.log(`\n Coverage decides what this verdict is worth: ${pageCount} page${pageCount === 1 ? '' : 's'} mapped.` +
|
|
@@ -385,7 +422,7 @@ async function runAudit(args) {
|
|
|
385
422
|
else {
|
|
386
423
|
console.log('');
|
|
387
424
|
}
|
|
388
|
-
(0, summary_1.summaryLine)('audit', verdict === 'PASS' ? 'ok' : verdict === 'FIX' ? 'fix' : 'block', auditHeadline({ verdict, deadLocators: dead, locatorsJudged: judged }), auditCounts({ pagesMapped: pageCount, locatorsNotJudged: unjudgedSites }));
|
|
425
|
+
(0, summary_1.summaryLine)('audit', verdict === 'PASS' ? 'ok' : verdict === 'FIX' ? 'fix' : 'block', auditHeadline({ verdict, deadLocators: dead, locatorsJudged: judged }), auditCounts({ pagesMapped: pageCount, locatorsNotJudged: unjudgedSites, capturedAt: report.capturedAt }));
|
|
389
426
|
process.exitCode = strict && verdict !== 'PASS' ? 1 : 0;
|
|
390
427
|
}
|
|
391
428
|
//# sourceMappingURL=audit.js.map
|
package/dist/cli/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
|