@ia-qa/self-healing 1.6.7 → 1.6.10
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 +111 -0
- package/TUTORIAL.md +128 -2
- package/assets/logoKawaiiGreenTiny.png +0 -0
- package/dist/aom.d.ts +8 -0
- package/dist/aom.js.map +1 -1
- package/dist/cli/args.js +4 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit.js +2 -8
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/diff.d.ts +25 -1
- package/dist/cli/diff.js +176 -20
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/emit.d.ts +71 -0
- package/dist/cli/emit.js +150 -0
- package/dist/cli/emit.js.map +1 -0
- package/dist/cli/fix.js +41 -3
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/history.d.ts +12 -0
- package/dist/cli/history.js +95 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/index.js +68 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ingest.js +5 -8
- package/dist/cli/ingest.js.map +1 -1
- package/dist/cli/init.js +32 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/map.d.ts +14 -1
- package/dist/cli/map.js +144 -33
- package/dist/cli/map.js.map +1 -1
- package/dist/cli/run.js +91 -8
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/ui.d.ts +16 -0
- package/dist/cli/ui.js +294 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli-ai/index.js +3 -3
- package/dist/cli-ai/index.js.map +1 -1
- package/dist/config.d.ts +50 -0
- package/dist/config.js +63 -1
- package/dist/config.js.map +1 -1
- package/dist/evidence.d.ts +130 -0
- package/dist/evidence.js +232 -0
- package/dist/evidence.js.map +1 -0
- package/dist/fixEngine.d.ts +2 -0
- package/dist/fixEngine.js +7 -0
- package/dist/fixEngine.js.map +1 -1
- package/dist/history.d.ts +145 -0
- package/dist/history.js +230 -0
- package/dist/history.js.map +1 -0
- package/dist/htmlReport.d.ts +47 -0
- package/dist/htmlReport.js +103 -1
- package/dist/htmlReport.js.map +1 -1
- package/dist/ingest.d.ts +18 -0
- package/dist/ingest.js +0 -0
- package/dist/ingest.js.map +1 -1
- package/dist/junit.d.ts +53 -0
- package/dist/junit.js +150 -0
- package/dist/junit.js.map +1 -0
- package/dist/mcp/server.js +46 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/nameMask.d.ts +110 -0
- package/dist/nameMask.js +0 -0
- package/dist/nameMask.js.map +1 -0
- package/dist/ui/icon.d.ts +41 -0
- package/dist/ui/icon.js +115 -0
- package/dist/ui/icon.js.map +1 -0
- package/dist/ui/lock.d.ts +40 -0
- package/dist/ui/lock.js +138 -0
- package/dist/ui/lock.js.map +1 -0
- package/dist/ui/page.d.ts +1 -0
- package/dist/ui/page.js +657 -0
- package/dist/ui/page.js.map +1 -0
- package/dist/ui/registry.d.ts +62 -0
- package/dist/ui/registry.js +139 -0
- package/dist/ui/registry.js.map +1 -0
- package/dist/ui/server.d.ts +76 -0
- package/dist/ui/server.js +607 -0
- package/dist/ui/server.js.map +1 -0
- package/dist/ui/shortcut.d.ts +90 -0
- package/dist/ui/shortcut.js +176 -0
- package/dist/ui/shortcut.js.map +1 -0
- package/dist/update.d.ts +104 -0
- package/dist/update.js +297 -0
- package/dist/update.js.map +1 -0
- package/dist/volatile.d.ts +2 -0
- package/dist/volatile.js +2 -0
- package/dist/volatile.js.map +1 -1
- package/package.json +3 -2
- package/skills/ia-qa-heal/SKILL.md +37 -0
package/dist/config.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.SHOTS_DIRNAME = exports.LAYOUT_DIRNAME = exports.BASELINE_DIRNAME = exports.MAPPING_DIRNAME = exports.CONFIG_DIR = void 0;
|
|
37
|
+
exports.stripBom = stripBom;
|
|
37
38
|
exports.setBaseDir = setBaseDir;
|
|
38
39
|
exports.baseDir = baseDir;
|
|
39
40
|
exports.configPath = configPath;
|
|
@@ -45,6 +46,7 @@ exports.layoutDir = layoutDir;
|
|
|
45
46
|
exports.baselineLayoutDir = baselineLayoutDir;
|
|
46
47
|
exports.layoutPath = layoutPath;
|
|
47
48
|
exports.loadConfig = loadConfig;
|
|
49
|
+
exports.configuredTestPaths = configuredTestPaths;
|
|
48
50
|
exports.saveConfig = saveConfig;
|
|
49
51
|
exports.supportsTolerantEnvFile = supportsTolerantEnvFile;
|
|
50
52
|
exports.envLoadHint = envLoadHint;
|
|
@@ -54,6 +56,24 @@ const fs = __importStar(require("fs"));
|
|
|
54
56
|
const path = __importStar(require("path"));
|
|
55
57
|
exports.CONFIG_DIR = '.ia-qa';
|
|
56
58
|
exports.MAPPING_DIRNAME = 'mapping';
|
|
59
|
+
/**
|
|
60
|
+
* Strip a leading UTF-8 BOM before `JSON.parse`.
|
|
61
|
+
*
|
|
62
|
+
* `JSON.parse` rejects it — the byte is not whitespace per the grammar — and the
|
|
63
|
+
* message it throws (`Unexpected token ''`) names a character that is
|
|
64
|
+
* invisible in every editor, so it reads as "your config is corrupt" rather than
|
|
65
|
+
* "your editor added three bytes". Windows puts it there by default: PowerShell's
|
|
66
|
+
* `Out-File`/`>` and Notepad both write UTF-8-with-BOM, so `config.json > file` is
|
|
67
|
+
* enough to earn it, and the file *looks* perfect.
|
|
68
|
+
*
|
|
69
|
+
* Applied to every JSON this package reads from the user's disk (config, usage,
|
|
70
|
+
* mappings, history) — not just the one that happened to be reported. Node's own
|
|
71
|
+
* `require()` has stripped it since forever; matching that is the least surprising
|
|
72
|
+
* behaviour.
|
|
73
|
+
*/
|
|
74
|
+
function stripBom(text) {
|
|
75
|
+
return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
76
|
+
}
|
|
57
77
|
/**
|
|
58
78
|
* The directory that holds `.ia-qa/`. Everything — config, mappings, baseline,
|
|
59
79
|
* layouts, captures — is resolved under it, so redirecting it is all a monorepo
|
|
@@ -125,7 +145,7 @@ function loadConfig(cwd = baseDir()) {
|
|
|
125
145
|
if (!fs.existsSync(file)) {
|
|
126
146
|
throw new Error(`No ${exports.CONFIG_DIR}/config.json found in ${cwd}. Run \`ia-qa-heal init\` first.`);
|
|
127
147
|
}
|
|
128
|
-
const raw = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
148
|
+
const raw = JSON.parse(stripBom(fs.readFileSync(file, 'utf8')));
|
|
129
149
|
if (!raw.baseUrl || !Array.isArray(raw.pages)) {
|
|
130
150
|
throw new Error(`${file} is malformed: "baseUrl" and "pages" are required.`);
|
|
131
151
|
}
|
|
@@ -159,8 +179,50 @@ function loadConfig(cwd = baseDir()) {
|
|
|
159
179
|
`(e.g. ["href:*source=rss*"]).`);
|
|
160
180
|
}
|
|
161
181
|
}
|
|
182
|
+
// A mask with no stable text ("*", "*:*") matches every label in the app: it would
|
|
183
|
+
// collapse the whole contract onto one name and turn healable rows into ambiguous
|
|
184
|
+
// ones. Refusing at load is the only place it can be refused without a verdict
|
|
185
|
+
// already having been produced from it.
|
|
186
|
+
if (raw.nameMask !== undefined) {
|
|
187
|
+
if (!Array.isArray(raw.nameMask) ||
|
|
188
|
+
raw.nameMask.some((p) => typeof p !== 'string' || p.trim() === '')) {
|
|
189
|
+
throw new Error(`${file} is malformed: "nameMask" must be an array of non-empty pattern strings ` +
|
|
190
|
+
`(e.g. ["Cart (*)", "🔌 Smithery * calls"]).`);
|
|
191
|
+
}
|
|
192
|
+
const blank = raw.nameMask.find((p) => !/[A-Za-z0-9]/.test(p.replace(/\*/g, '')));
|
|
193
|
+
if (blank !== undefined) {
|
|
194
|
+
throw new Error(`${file} is malformed: "nameMask" pattern ${JSON.stringify(blank)} has no stable text — ` +
|
|
195
|
+
`it would match every label in the app. A mask must keep what a human recognises the ` +
|
|
196
|
+
`element by ("Cart (*)", not "*"). For a label that is entirely variable (a clock), the ` +
|
|
197
|
+
`element itself is what rotates — use "volatile" with a selector pattern instead.`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
162
200
|
return raw;
|
|
163
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* `testPaths` from the config, resolved against the **config's own directory**.
|
|
204
|
+
*
|
|
205
|
+
* A relative `"tests"` in `apps/xsp/.ia-qa/config.json` means `apps/xsp/tests` — it was
|
|
206
|
+
* written next to the pages it belongs to. Resolving it against the shell's cwd instead
|
|
207
|
+
* (which is what a bare `fs` call does) makes `--config apps/xsp` scan the wrong tree, or
|
|
208
|
+
* nothing at all, and the inventory it produces is confidently wrong rather than absent.
|
|
209
|
+
*
|
|
210
|
+
* Paths typed on the command line are deliberately *not* routed through here: those
|
|
211
|
+
* resolve against the cwd, because that is what the person typing them means.
|
|
212
|
+
*
|
|
213
|
+
* Returns `[]` when there is no config or no `testPaths` — the callers already have a
|
|
214
|
+
* message for "nothing to scan", and they should not have to tell the two apart.
|
|
215
|
+
*/
|
|
216
|
+
function configuredTestPaths(cwd = baseDir()) {
|
|
217
|
+
let configured;
|
|
218
|
+
try {
|
|
219
|
+
configured = loadConfig(cwd).testPaths;
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
return (configured ?? []).map((p) => path.resolve(cwd, p));
|
|
225
|
+
}
|
|
164
226
|
function saveConfig(config, cwd = baseDir()) {
|
|
165
227
|
const file = configPath(cwd);
|
|
166
228
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { MappedElement, PageMapping } from './aom';
|
|
2
|
+
import type { DiffRow } from './cli/diff';
|
|
3
|
+
/**
|
|
4
|
+
* Visual evidence for the rows a human has to decide — the decision-grade half
|
|
5
|
+
* of SPEC-visual-evidence.md layer 1.
|
|
6
|
+
*
|
|
7
|
+
* The measured problem this exists for: `ambiguous` rows are 10 % of elements on
|
|
8
|
+
* a dogfooded corpus and 20 % in the wild, and all the report could say about
|
|
9
|
+
* one was `div:nth-of-type(4) > … > button`. The human is not missing a
|
|
10
|
+
* description of what they were looking for — the row already says
|
|
11
|
+
* `button "Copy"` — they are missing *which of the N identical candidates* is
|
|
12
|
+
* the one. That question has exactly one cheap answer: show them, highlighted.
|
|
13
|
+
*
|
|
14
|
+
* Three constraints shape everything below.
|
|
15
|
+
*
|
|
16
|
+
* 1. **No pixel is ever an input to a verdict.** This module is called only when
|
|
17
|
+
* rendering HTML. `diffMappings` never sees it, no counter moves, and a
|
|
18
|
+
* report generated with no screenshots on disk is byte-identical to one from
|
|
19
|
+
* before the feature (a test pins that).
|
|
20
|
+
* 2. **No image is decoded in Node.** There is no PNG/JPEG codec here and no
|
|
21
|
+
* dependency to add one. A crop is a *CSS window* onto the page screenshot:
|
|
22
|
+
* the JPEG is emitted once per page as a `background-image`, and every
|
|
23
|
+
* thumbnail is a box with a negative background offset. N crops of one page
|
|
24
|
+
* therefore cost the bytes of one picture.
|
|
25
|
+
* 3. **A crop with no marker on the target is worse than no crop** — study D,
|
|
26
|
+
* measured on real captures. Six identical upvote arrows tell a human
|
|
27
|
+
* nothing about which one drifted. So the highlight is not decoration and is
|
|
28
|
+
* never optional: if the rect is unknown, the crop is not rendered at all.
|
|
29
|
+
*/
|
|
30
|
+
/** Pixels of page context kept around the element. 120 is the value study D found legible. */
|
|
31
|
+
export declare const CROP_PADDING = 120;
|
|
32
|
+
/** Widest a thumbnail may render; wider windows are scaled down, never cropped further. */
|
|
33
|
+
export declare const CROP_MAX_WIDTH = 360;
|
|
34
|
+
export interface PageShot {
|
|
35
|
+
/** `data:image/jpeg;base64,…` of the whole viewport. */
|
|
36
|
+
dataUri: string;
|
|
37
|
+
viewport: {
|
|
38
|
+
w: number;
|
|
39
|
+
h: number;
|
|
40
|
+
};
|
|
41
|
+
/** Selector → [x, y, w, h] in viewport coordinates at capture time. */
|
|
42
|
+
rects: Record<string, [number, number, number, number]>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load the screenshot and the element positions `map --screenshots` wrote for a
|
|
46
|
+
* page. Either half missing — flag never used, page skipped, old capture — means
|
|
47
|
+
* no evidence for that page and nothing else: every caller degrades to the
|
|
48
|
+
* report as it was.
|
|
49
|
+
*/
|
|
50
|
+
export declare function loadPageShot(pageName: string, dir?: string): PageShot | null;
|
|
51
|
+
export interface CropWindow {
|
|
52
|
+
/** Rendered size of the thumbnail, after scaling. */
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
/** Scale applied to the underlying page image. */
|
|
56
|
+
scale: number;
|
|
57
|
+
/** Background offset, in unscaled page pixels. */
|
|
58
|
+
offsetX: number;
|
|
59
|
+
offsetY: number;
|
|
60
|
+
/** Highlight box, in unscaled page pixels, relative to the window. */
|
|
61
|
+
hi: {
|
|
62
|
+
left: number;
|
|
63
|
+
top: number;
|
|
64
|
+
width: number;
|
|
65
|
+
height: number;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The CSS window onto the page image for one element: a box of `rect ± padding`,
|
|
70
|
+
* clamped to the picture's bounds, plus where the target sits inside it.
|
|
71
|
+
*
|
|
72
|
+
* Pure arithmetic — same inputs, same output, no I/O — which is what lets a test
|
|
73
|
+
* pin it without a browser (AC-13's spirit: the crop is a function, not a
|
|
74
|
+
* capture).
|
|
75
|
+
*/
|
|
76
|
+
export declare function cropWindow(rect: [number, number, number, number], viewport: {
|
|
77
|
+
w: number;
|
|
78
|
+
h: number;
|
|
79
|
+
}, padding?: number, maxWidth?: number): CropWindow;
|
|
80
|
+
export interface Candidate {
|
|
81
|
+
selector: string;
|
|
82
|
+
name: string;
|
|
83
|
+
role: string;
|
|
84
|
+
context?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The elements an `ambiguous` row could not be told apart from.
|
|
88
|
+
*
|
|
89
|
+
* `matchElement` returns only a *count* — it decides, or refuses, and the
|
|
90
|
+
* refusal carries no list. Rather than widen its return type, this re-derives
|
|
91
|
+
* the same set from the same primitives on the "after" side. That choice is not
|
|
92
|
+
* stylistic: `src/browser/match.js` ships twice (npm and the web tool on
|
|
93
|
+
* ia-qa.com), so every change to it owes two deploys and risks the two copies
|
|
94
|
+
* disagreeing about a verdict. Reporting is allowed to import *from* the
|
|
95
|
+
* matcher; it is not allowed to change it — the same rule the AI layer follows.
|
|
96
|
+
*
|
|
97
|
+
* The tiers mirror `matchElement` exactly: exact accessible-name matches first,
|
|
98
|
+
* then the fuzzy band within 0.05 of the top Dice score.
|
|
99
|
+
*
|
|
100
|
+
* One case it cannot reproduce, on purpose: a row demoted to `ambiguous` by the
|
|
101
|
+
* many-to-one guard (N baseline elements all healing onto one target) has a
|
|
102
|
+
* `candidateCount` counting *baseline rows*, not live elements. There, this
|
|
103
|
+
* returns the single contested target, which is the useful thing to look at.
|
|
104
|
+
*/
|
|
105
|
+
export declare function ambiguousCandidates(row: DiffRow, after: MappedElement[]): Candidate[];
|
|
106
|
+
export interface RowEvidence {
|
|
107
|
+
/** What the test's old selector resolves to *today* — only when the row rebound. */
|
|
108
|
+
nowAt?: {
|
|
109
|
+
selector: string;
|
|
110
|
+
label: string;
|
|
111
|
+
crop: CropWindow;
|
|
112
|
+
};
|
|
113
|
+
/** The elements a human must choose between, each located in the picture. */
|
|
114
|
+
candidates: Array<{
|
|
115
|
+
selector: string;
|
|
116
|
+
label: string;
|
|
117
|
+
crop: CropWindow;
|
|
118
|
+
}>;
|
|
119
|
+
/** Why there is nothing to show, when there is nothing to show. */
|
|
120
|
+
note?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Assemble the evidence for one drifted row.
|
|
124
|
+
*
|
|
125
|
+
* Only the statuses where a human is actually stuck get pictures — `ambiguous`,
|
|
126
|
+
* and anything `rebound`. `ok`, `renamed` and `healable` are deliberately left
|
|
127
|
+
* bare: there is no decision to take on them, so a thumbnail would be weight
|
|
128
|
+
* without a question (F1.8).
|
|
129
|
+
*/
|
|
130
|
+
export declare function rowEvidence(row: DiffRow, after: PageMapping | null, shot: PageShot | null): RowEvidence | null;
|
package/dist/evidence.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CROP_MAX_WIDTH = exports.CROP_PADDING = void 0;
|
|
37
|
+
exports.loadPageShot = loadPageShot;
|
|
38
|
+
exports.cropWindow = cropWindow;
|
|
39
|
+
exports.ambiguousCandidates = ambiguousCandidates;
|
|
40
|
+
exports.rowEvidence = rowEvidence;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const config_1 = require("./config");
|
|
44
|
+
const match_1 = require("./browser/match");
|
|
45
|
+
/**
|
|
46
|
+
* Visual evidence for the rows a human has to decide — the decision-grade half
|
|
47
|
+
* of SPEC-visual-evidence.md layer 1.
|
|
48
|
+
*
|
|
49
|
+
* The measured problem this exists for: `ambiguous` rows are 10 % of elements on
|
|
50
|
+
* a dogfooded corpus and 20 % in the wild, and all the report could say about
|
|
51
|
+
* one was `div:nth-of-type(4) > … > button`. The human is not missing a
|
|
52
|
+
* description of what they were looking for — the row already says
|
|
53
|
+
* `button "Copy"` — they are missing *which of the N identical candidates* is
|
|
54
|
+
* the one. That question has exactly one cheap answer: show them, highlighted.
|
|
55
|
+
*
|
|
56
|
+
* Three constraints shape everything below.
|
|
57
|
+
*
|
|
58
|
+
* 1. **No pixel is ever an input to a verdict.** This module is called only when
|
|
59
|
+
* rendering HTML. `diffMappings` never sees it, no counter moves, and a
|
|
60
|
+
* report generated with no screenshots on disk is byte-identical to one from
|
|
61
|
+
* before the feature (a test pins that).
|
|
62
|
+
* 2. **No image is decoded in Node.** There is no PNG/JPEG codec here and no
|
|
63
|
+
* dependency to add one. A crop is a *CSS window* onto the page screenshot:
|
|
64
|
+
* the JPEG is emitted once per page as a `background-image`, and every
|
|
65
|
+
* thumbnail is a box with a negative background offset. N crops of one page
|
|
66
|
+
* therefore cost the bytes of one picture.
|
|
67
|
+
* 3. **A crop with no marker on the target is worse than no crop** — study D,
|
|
68
|
+
* measured on real captures. Six identical upvote arrows tell a human
|
|
69
|
+
* nothing about which one drifted. So the highlight is not decoration and is
|
|
70
|
+
* never optional: if the rect is unknown, the crop is not rendered at all.
|
|
71
|
+
*/
|
|
72
|
+
/** Pixels of page context kept around the element. 120 is the value study D found legible. */
|
|
73
|
+
exports.CROP_PADDING = 120;
|
|
74
|
+
/** Widest a thumbnail may render; wider windows are scaled down, never cropped further. */
|
|
75
|
+
exports.CROP_MAX_WIDTH = 360;
|
|
76
|
+
/**
|
|
77
|
+
* Load the screenshot and the element positions `map --screenshots` wrote for a
|
|
78
|
+
* page. Either half missing — flag never used, page skipped, old capture — means
|
|
79
|
+
* no evidence for that page and nothing else: every caller degrades to the
|
|
80
|
+
* report as it was.
|
|
81
|
+
*/
|
|
82
|
+
function loadPageShot(pageName, dir = safeShotsDir()) {
|
|
83
|
+
if (!dir)
|
|
84
|
+
return null;
|
|
85
|
+
const safe = pageName.replace(/[^a-zA-Z0-9._-]/g, '-');
|
|
86
|
+
const jpg = path.join(dir, `${safe}.jpg`);
|
|
87
|
+
const rectsFile = path.join(dir, `${safe}.rects.json`);
|
|
88
|
+
try {
|
|
89
|
+
if (!fs.existsSync(jpg) || !fs.existsSync(rectsFile))
|
|
90
|
+
return null;
|
|
91
|
+
const parsed = JSON.parse(fs.readFileSync(rectsFile, 'utf8'));
|
|
92
|
+
if (!parsed.rects || !parsed.viewport)
|
|
93
|
+
return null;
|
|
94
|
+
const b64 = fs.readFileSync(jpg).toString('base64');
|
|
95
|
+
return {
|
|
96
|
+
dataUri: `data:image/jpeg;base64,${b64}`,
|
|
97
|
+
viewport: parsed.viewport,
|
|
98
|
+
rects: parsed.rects,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function safeShotsDir() {
|
|
106
|
+
try {
|
|
107
|
+
return (0, config_1.shotsDir)();
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return '';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The CSS window onto the page image for one element: a box of `rect ± padding`,
|
|
115
|
+
* clamped to the picture's bounds, plus where the target sits inside it.
|
|
116
|
+
*
|
|
117
|
+
* Pure arithmetic — same inputs, same output, no I/O — which is what lets a test
|
|
118
|
+
* pin it without a browser (AC-13's spirit: the crop is a function, not a
|
|
119
|
+
* capture).
|
|
120
|
+
*/
|
|
121
|
+
function cropWindow(rect, viewport, padding = exports.CROP_PADDING, maxWidth = exports.CROP_MAX_WIDTH) {
|
|
122
|
+
const [x, y, w, h] = rect;
|
|
123
|
+
const winW = Math.min(viewport.w, w + padding * 2);
|
|
124
|
+
const winH = Math.min(viewport.h, h + padding * 2);
|
|
125
|
+
const offsetX = Math.max(0, Math.min(viewport.w - winW, Math.round(x - (winW - w) / 2)));
|
|
126
|
+
const offsetY = Math.max(0, Math.min(viewport.h - winH, Math.round(y - (winH - h) / 2)));
|
|
127
|
+
const scale = Math.min(1, maxWidth / winW);
|
|
128
|
+
return {
|
|
129
|
+
width: Math.round(winW * scale),
|
|
130
|
+
height: Math.round(winH * scale),
|
|
131
|
+
scale,
|
|
132
|
+
offsetX,
|
|
133
|
+
offsetY,
|
|
134
|
+
hi: { left: x - offsetX, top: y - offsetY, width: w, height: h },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The elements an `ambiguous` row could not be told apart from.
|
|
139
|
+
*
|
|
140
|
+
* `matchElement` returns only a *count* — it decides, or refuses, and the
|
|
141
|
+
* refusal carries no list. Rather than widen its return type, this re-derives
|
|
142
|
+
* the same set from the same primitives on the "after" side. That choice is not
|
|
143
|
+
* stylistic: `src/browser/match.js` ships twice (npm and the web tool on
|
|
144
|
+
* ia-qa.com), so every change to it owes two deploys and risks the two copies
|
|
145
|
+
* disagreeing about a verdict. Reporting is allowed to import *from* the
|
|
146
|
+
* matcher; it is not allowed to change it — the same rule the AI layer follows.
|
|
147
|
+
*
|
|
148
|
+
* The tiers mirror `matchElement` exactly: exact accessible-name matches first,
|
|
149
|
+
* then the fuzzy band within 0.05 of the top Dice score.
|
|
150
|
+
*
|
|
151
|
+
* One case it cannot reproduce, on purpose: a row demoted to `ambiguous` by the
|
|
152
|
+
* many-to-one guard (N baseline elements all healing onto one target) has a
|
|
153
|
+
* `candidateCount` counting *baseline rows*, not live elements. There, this
|
|
154
|
+
* returns the single contested target, which is the useful thing to look at.
|
|
155
|
+
*/
|
|
156
|
+
function ambiguousCandidates(row, after) {
|
|
157
|
+
const sameRole = after.filter((c) => c.role === row.role);
|
|
158
|
+
const wanted = (0, match_1.normalize)(row.name);
|
|
159
|
+
const wantedCtx = (0, match_1.normalize)(row.context);
|
|
160
|
+
const pick = (cands) => {
|
|
161
|
+
if (cands.length <= 1)
|
|
162
|
+
return cands;
|
|
163
|
+
if (wantedCtx) {
|
|
164
|
+
const byCtx = cands.filter((c) => (0, match_1.normalize)(c.context) === wantedCtx);
|
|
165
|
+
if (byCtx.length === 1)
|
|
166
|
+
return byCtx;
|
|
167
|
+
}
|
|
168
|
+
return cands;
|
|
169
|
+
};
|
|
170
|
+
const exact = sameRole.filter((c) => (0, match_1.normalize)(c.name) === wanted && wanted !== '');
|
|
171
|
+
if (exact.length > 0)
|
|
172
|
+
return pick(exact).map(toCandidate);
|
|
173
|
+
const scored = sameRole
|
|
174
|
+
.map((c) => ({ c, score: (0, match_1.diceSimilarity)((0, match_1.normalize)(c.name), wanted) }))
|
|
175
|
+
.filter((s) => s.score >= match_1.FUZZY_THRESHOLD)
|
|
176
|
+
.sort((a, b) => b.score - a.score);
|
|
177
|
+
if (scored.length === 0)
|
|
178
|
+
return [];
|
|
179
|
+
const top = scored[0].score;
|
|
180
|
+
const tied = scored.filter((s) => top - s.score < 0.05).map((s) => s.c);
|
|
181
|
+
return pick(tied).map(toCandidate);
|
|
182
|
+
}
|
|
183
|
+
function toCandidate(e) {
|
|
184
|
+
return { selector: e.selector, name: e.name, role: e.role, context: e.context };
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Assemble the evidence for one drifted row.
|
|
188
|
+
*
|
|
189
|
+
* Only the statuses where a human is actually stuck get pictures — `ambiguous`,
|
|
190
|
+
* and anything `rebound`. `ok`, `renamed` and `healable` are deliberately left
|
|
191
|
+
* bare: there is no decision to take on them, so a thumbnail would be weight
|
|
192
|
+
* without a question (F1.8).
|
|
193
|
+
*/
|
|
194
|
+
function rowEvidence(row, after, shot) {
|
|
195
|
+
if (!shot || !after)
|
|
196
|
+
return null;
|
|
197
|
+
const wants = row.status === 'ambiguous' || row.rebound === true;
|
|
198
|
+
if (!wants)
|
|
199
|
+
return null;
|
|
200
|
+
const locate = (selector, label) => {
|
|
201
|
+
const rect = shot.rects[selector];
|
|
202
|
+
// No rect means the element was below the fold or absent when the picture
|
|
203
|
+
// was taken. Showing the crop anyway would highlight empty space — exactly
|
|
204
|
+
// the misleading thumbnail study D rules out.
|
|
205
|
+
if (!rect)
|
|
206
|
+
return null;
|
|
207
|
+
return { selector, label, crop: cropWindow(rect, shot.viewport) };
|
|
208
|
+
};
|
|
209
|
+
const out = { candidates: [] };
|
|
210
|
+
if (row.rebound) {
|
|
211
|
+
const hit = locate(row.selector, `${row.role} "${row.reboundTo ?? ''}"`);
|
|
212
|
+
if (hit)
|
|
213
|
+
out.nowAt = hit;
|
|
214
|
+
}
|
|
215
|
+
if (row.status === 'ambiguous') {
|
|
216
|
+
for (const c of ambiguousCandidates(row, after.elements)) {
|
|
217
|
+
const located = locate(c.selector, c.name ? `${c.role} "${c.name}"` : `${c.role} (no name)`);
|
|
218
|
+
if (located)
|
|
219
|
+
out.candidates.push(located);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (!out.nowAt && out.candidates.length === 0) {
|
|
223
|
+
return {
|
|
224
|
+
candidates: [],
|
|
225
|
+
note: row.status === 'ambiguous'
|
|
226
|
+
? 'No picture for these candidates — they were below the fold when the page was captured.'
|
|
227
|
+
: 'No picture for this element — it was below the fold when the page was captured.',
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
return out;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/fixEngine.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface DiffRowLike {
|
|
|
11
11
|
role?: string;
|
|
12
12
|
name?: string;
|
|
13
13
|
healedName?: string;
|
|
14
|
+
/** The label is a `nameMask` pattern, not what the page reads. See `nameMask.ts`. */
|
|
15
|
+
nameMasked?: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface LocatorTarget {
|
|
16
18
|
role: string;
|
package/dist/fixEngine.js
CHANGED
|
@@ -71,6 +71,13 @@ function computeLocatorRewrites(rows, afterElements) {
|
|
|
71
71
|
for (const r of rows) {
|
|
72
72
|
if (r.status !== 'healable' || !r.selector || !r.healedSelector)
|
|
73
73
|
continue;
|
|
74
|
+
// A masked label is a glob (`Cart (*)`), not a name any locator can match. The
|
|
75
|
+
// `hits.length !== 1` test below already drops it — `afterElements` carries raw
|
|
76
|
+
// names — but this must never depend on which array a caller happened to pass:
|
|
77
|
+
// the failure mode is the tool committing `getByRole('link', { name: 'Cart (*)' })`
|
|
78
|
+
// into someone's suite.
|
|
79
|
+
if (r.nameMasked)
|
|
80
|
+
continue;
|
|
74
81
|
const role = r.role;
|
|
75
82
|
const name = r.healedName || r.name;
|
|
76
83
|
if (!role || !LOCATABLE_ROLES.has(role))
|
package/dist/fixEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixEngine.js","sourceRoot":"","sources":["../src/fixEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fixEngine.js","sourceRoot":"","sources":["../src/fixEngine.ts"],"names":[],"mappings":"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"}
|