@testivai/mcp 0.6.1 → 0.8.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 +13 -5
- package/dist/lib.d.ts +112 -5
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +394 -36
- package/dist/lib.js.map +1 -1
- package/dist/server.js +38 -33
- package/dist/server.js.map +1 -1
- package/dist/tool-meta.d.ts +58 -0
- package/dist/tool-meta.d.ts.map +1 -1
- package/dist/tool-meta.js +154 -6
- package/dist/tool-meta.js.map +1 -1
- package/package.json +4 -3
- package/server.json +7 -4
package/dist/lib.js
CHANGED
|
@@ -33,8 +33,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.baselinesDirFor = void 0;
|
|
36
37
|
exports.resolvePaths = resolvePaths;
|
|
37
38
|
exports.readResults = readResults;
|
|
39
|
+
exports.summaryLine = summaryLine;
|
|
40
|
+
exports.missingBaselineNames = missingBaselineNames;
|
|
41
|
+
exports.missingBaselineDir = missingBaselineDir;
|
|
42
|
+
exports.missingVerdict = missingVerdict;
|
|
43
|
+
exports.notHere = notHere;
|
|
44
|
+
exports.missingBaselineLines = missingBaselineLines;
|
|
45
|
+
exports.imageContent = imageContent;
|
|
46
|
+
exports.missingBaselineDiff = missingBaselineDiff;
|
|
38
47
|
exports.verdictFor = verdictFor;
|
|
39
48
|
exports.describeMissingResults = describeMissingResults;
|
|
40
49
|
exports.reportLinks = reportLinks;
|
|
@@ -47,10 +56,13 @@ exports.downscalePng = downscalePng;
|
|
|
47
56
|
exports.resolveApprovalPrompt = resolveApprovalPrompt;
|
|
48
57
|
exports.groupChanges = groupChanges;
|
|
49
58
|
exports.changeGroupLines = changeGroupLines;
|
|
59
|
+
exports.withPromptArguments = withPromptArguments;
|
|
50
60
|
const fs = __importStar(require("fs"));
|
|
51
61
|
const path = __importStar(require("path"));
|
|
52
62
|
const pngjs_1 = require("pngjs");
|
|
53
63
|
const baselines_1 = require("@testivai/witness/baselines");
|
|
64
|
+
const tool_meta_1 = require("./tool-meta");
|
|
65
|
+
const report_1 = require("@testivai/witness/report");
|
|
54
66
|
/** Resolve the report dir from .testivai/config.json (reportDir key), default visual-report/. */
|
|
55
67
|
function resolvePaths(root) {
|
|
56
68
|
let reportDir = 'visual-report';
|
|
@@ -74,22 +86,258 @@ function readResults(paths) {
|
|
|
74
86
|
return null;
|
|
75
87
|
return JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
76
88
|
}
|
|
89
|
+
/** The get_visual_results header: the run and its counts, with missing baselines when the results carry them. */
|
|
90
|
+
function summaryLine(results) {
|
|
91
|
+
const { total, passed, changed, newSnapshots, missing } = results.summary;
|
|
92
|
+
const m = typeof missing === 'number' ? missing : Array.isArray(results.missingBaselines) ? results.missingBaselines.length : undefined;
|
|
93
|
+
const missingText = m === undefined ? '' : `; ${m} missing baseline${m === 1 ? '' : 's'} (no capture this run)`;
|
|
94
|
+
return `Run: ${results.timestamp} — ${total} snapshots: ${passed} passed, ${changed} changed, ${newSnapshots} new${missingText}.`;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The missing baselines to report, in results order and each once: names in
|
|
98
|
+
* `missingBaselines` that are not also a snapshot (the snapshot's own line
|
|
99
|
+
* covers those). Older results have no such list: none.
|
|
100
|
+
*/
|
|
101
|
+
function missingBaselineNames(results) {
|
|
102
|
+
if (!Array.isArray(results.missingBaselines))
|
|
103
|
+
return [];
|
|
104
|
+
const snapshots = new Set((results.snapshots ?? []).map((s) => s.name));
|
|
105
|
+
const names = results.missingBaselines.filter((n) => typeof n === 'string' && n.length > 0 && !snapshots.has(n));
|
|
106
|
+
return [...new Set(names)];
|
|
107
|
+
}
|
|
108
|
+
/** A path for the reader: relative to the project root, with forward slashes. */
|
|
109
|
+
const projectPath = (root, abs) => path.relative(root, abs).split(path.sep).join('/') || '.';
|
|
110
|
+
/** The baselines directory relative to the project root (config.json baselinesDir, `{platform}` resolved). */
|
|
111
|
+
const baselinesDirFor = (root) => projectPath(root, (0, baselines_1.resolveBaselinesDir)(root));
|
|
112
|
+
exports.baselinesDirFor = baselinesDirFor;
|
|
113
|
+
/** True when `target`, with every symlink resolved, is strictly inside `dir` (also resolved). */
|
|
114
|
+
function staysInside(dir, target) {
|
|
115
|
+
try {
|
|
116
|
+
const realDir = fs.realpathSync(dir);
|
|
117
|
+
return fs.realpathSync(target).startsWith(realDir + path.sep);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The committed baseline directory of a missing baseline (absolute), or null.
|
|
125
|
+
* This is the only way a missing name becomes a path: the name must be listed
|
|
126
|
+
* in `missingBaselines` (and not be a snapshot), must name one directory
|
|
127
|
+
* directly inside the baselines directory (resolveBaselinesDir: config.json
|
|
128
|
+
* `baselinesDir`, `{platform}` included), and, when it exists, must not lead
|
|
129
|
+
* out of it through a symlink. witness lists missing baselines from that
|
|
130
|
+
* directory's own entries, so a real one always passes.
|
|
131
|
+
*/
|
|
132
|
+
function missingBaselineDir(root, results, name) {
|
|
133
|
+
if (name.includes('\0') || !missingBaselineNames(results).includes(name))
|
|
134
|
+
return null;
|
|
135
|
+
const base = path.resolve((0, baselines_1.resolveBaselinesDir)(root));
|
|
136
|
+
const dir = path.resolve(base, name);
|
|
137
|
+
if (path.dirname(dir) !== base || path.basename(dir) !== name)
|
|
138
|
+
return null;
|
|
139
|
+
if (fs.existsSync(dir) && !staysInside(base, dir))
|
|
140
|
+
return null;
|
|
141
|
+
return dir;
|
|
142
|
+
}
|
|
143
|
+
/** One-line verdict for a missing baseline; `dir` is its baseline directory relative to the project root, when known. */
|
|
144
|
+
function missingVerdict(dir) {
|
|
145
|
+
return ("missing baseline — committed, but no capture this run: its test was removed, renamed or skipped, or failed before it captured (the report cannot say which; the test run's log can); " +
|
|
146
|
+
`nothing to approve (approving only promotes a new capture) — to accept an intended removal, delete its baseline directory${dir ? ` (${dir})` : ''} in the same change`);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Why a missing baseline's directory may not be there: the results predate a
|
|
150
|
+
* deletion, or another machine wrote them with a baselinesDir that resolved
|
|
151
|
+
* elsewhere (`{platform}`). Neither is "committed here", so no git rm.
|
|
152
|
+
*/
|
|
153
|
+
function notHere(dir) {
|
|
154
|
+
return (`no baseline directory at ${dir} on this machine: the results may be stale (the baseline was already deleted, or the tests have not run since), ` +
|
|
155
|
+
`or come from a machine whose baselinesDir resolved to another directory ({platform} resolves to ${process.platform} here); re-run the tests before judging it`);
|
|
156
|
+
}
|
|
157
|
+
/** A missing baseline's directory (absolute, and relative for the reader), whether it is there, and its verdict. */
|
|
158
|
+
function locateMissing(root, results, name) {
|
|
159
|
+
const abs = missingBaselineDir(root, results, name);
|
|
160
|
+
const dir = abs ? projectPath(root, abs) : null;
|
|
161
|
+
const present = abs !== null && fs.existsSync(abs);
|
|
162
|
+
return { abs, dir, present, verdict: abs && !present ? `missing baseline — ${notHere(dir)}` : missingVerdict(dir) };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* get_visual_results lines for the missing baselines. One is shaped like the
|
|
166
|
+
* per-snapshot lines (`- <name>: <verdict>`). Several are grouped by kind,
|
|
167
|
+
* each kind's verdict once and a short line per name, since a partial run
|
|
168
|
+
* (`--grep`, a matrix lane) can leave most of the suite missing: committed
|
|
169
|
+
* here, not on this machine (stale results, another platform's
|
|
170
|
+
* `{platform}`), or a name outside the baselines directory. A baseline that
|
|
171
|
+
* is not here is never under the "committed, delete it" verdict.
|
|
172
|
+
*/
|
|
173
|
+
function missingBaselineLines(root, results) {
|
|
174
|
+
const names = missingBaselineNames(results);
|
|
175
|
+
if (names.length <= 1)
|
|
176
|
+
return names.map((name) => `- ${name}: ${locateMissing(root, results, name).verdict}`);
|
|
177
|
+
const committed = [];
|
|
178
|
+
const notOnThisMachine = [];
|
|
179
|
+
const unresolved = [];
|
|
180
|
+
for (const name of names) {
|
|
181
|
+
const { abs, present } = locateMissing(root, results, name);
|
|
182
|
+
(!abs ? unresolved : present ? committed : notOnThisMachine).push(name);
|
|
183
|
+
}
|
|
184
|
+
const template = `${(0, exports.baselinesDirFor)(root)}/<name>`;
|
|
185
|
+
const group = (list, header, verdict) => list.length > 0 ? [`${header} (${list.length}): ${verdict}`, ...list.map((n) => `- ${n}`)] : [];
|
|
186
|
+
return [
|
|
187
|
+
...group(committed, 'Missing baselines', missingVerdict(template)),
|
|
188
|
+
...group(notOnThisMachine, 'Missing baselines not on this machine', `missing baseline — ${notHere(template)}`),
|
|
189
|
+
...group(unresolved, 'Missing baselines whose name does not resolve to a directory inside the baselines directory', 'no baseline files were read for them'),
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
/** The files a committed baseline can hold, in the order they are listed. */
|
|
193
|
+
const BASELINE_FILES = ['screenshot.png', 'dom.html', 'metadata.json', 'elements.json'];
|
|
194
|
+
function explainMissingBaseline(root, results, name) {
|
|
195
|
+
const base = (0, baselines_1.resolveBaselinesDir)(root);
|
|
196
|
+
const { abs, dir, present, verdict } = locateMissing(root, results, name);
|
|
197
|
+
const files = abs
|
|
198
|
+
? BASELINE_FILES.map((f) => path.join(abs, f))
|
|
199
|
+
.filter((f) => fs.existsSync(f) && staysInside(base, f))
|
|
200
|
+
.map((f) => projectPath(root, f))
|
|
201
|
+
: [];
|
|
202
|
+
const guidance = [];
|
|
203
|
+
if (!dir) {
|
|
204
|
+
guidance.push(`The name "${name}" does not resolve to a directory inside the baselines directory (${projectPath(root, base)}), so no baseline files were read.`);
|
|
205
|
+
}
|
|
206
|
+
else if (!present) {
|
|
207
|
+
// Not committed here: stale results or another platform's baselinesDir.
|
|
208
|
+
const why = notHere(dir);
|
|
209
|
+
guidance.push(`${why.charAt(0).toUpperCase()}${why.slice(1)}.`);
|
|
210
|
+
}
|
|
211
|
+
else if (files.length === 0) {
|
|
212
|
+
guidance.push(`No committed baseline files were found in ${dir}.`);
|
|
213
|
+
}
|
|
214
|
+
if (!dir || present) {
|
|
215
|
+
guidance.push(`No capture this run: the baseline is committed${dir ? ` (${dir})` : ''}, but the test run captured nothing under this name, so there is no current image and nothing to diff. ` +
|
|
216
|
+
'The report cannot say why: the test may have been removed or renamed, skipped, or failed before it captured. ' +
|
|
217
|
+
"Check what the change under test did to that test or snapshot, and the test run's log for a failed or skipped test.");
|
|
218
|
+
}
|
|
219
|
+
const fresh = results.snapshots.filter((s) => s.status === 'new').map((s) => s.name);
|
|
220
|
+
if (fresh.length > 0) {
|
|
221
|
+
const shown = fresh.slice(0, 10).join(', ') + (fresh.length > 10 ? ', …' : '');
|
|
222
|
+
guidance.push(`New snapshots this run (no baseline yet): ${shown}. If one of them is this test under another name, it is a rename: judge the two together.`);
|
|
223
|
+
}
|
|
224
|
+
guidance.push('Approving does nothing here: approve_snapshot and `testivai approve` only promote a new capture from .testivai/temp, and there is none.' +
|
|
225
|
+
(!dir || present
|
|
226
|
+
? ` To accept an intended removal, delete the baseline directory in the same change${dir ? ` (git rm -r ${(0, tool_meta_1.shellArg)(dir)})` : ''}; otherwise restore the test, or what it needs to reach its capture.`
|
|
227
|
+
: ''), 'There is no capture to call bad, so this is not a glitch: an intended change if the change under test meant to remove or rename it, a bug if it did so by mistake or broke the test before its capture, otherwise a possible bug.');
|
|
228
|
+
return { name, status: 'missing', verdict, baseline: { directory: dir, files }, guidance };
|
|
229
|
+
}
|
|
230
|
+
/** An image labelled like get_diff labels it, downscaled for model context. */
|
|
231
|
+
function imageContent(label, raw) {
|
|
232
|
+
const downscaled = downscalePng(raw);
|
|
233
|
+
const wasDownscaled = downscaled.originalWidth !== downscaled.width || downscaled.originalHeight !== downscaled.height;
|
|
234
|
+
return [
|
|
235
|
+
{ type: 'text', text: wasDownscaled ? `${label} (downscaled from ${downscaled.originalWidth}x${downscaled.originalHeight}):` : `${label}:` },
|
|
236
|
+
{ type: 'image', data: downscaled.data.toString('base64'), mimeType: 'image/png' },
|
|
237
|
+
];
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* get_diff for a missing baseline: its verdict, that there is no current
|
|
241
|
+
* capture, and the committed baseline screenshot only. A screenshot that is
|
|
242
|
+
* not there, or not a PNG, is said, never thrown. Null when the name is not
|
|
243
|
+
* a missing baseline.
|
|
244
|
+
*/
|
|
245
|
+
function missingBaselineDiff(root, results, name) {
|
|
246
|
+
if (!missingBaselineNames(results).includes(name))
|
|
247
|
+
return null;
|
|
248
|
+
const { abs: dir, verdict } = locateMissing(root, results, name);
|
|
249
|
+
const content = [
|
|
250
|
+
{ type: 'text', text: `${name}: ${verdict}` },
|
|
251
|
+
{
|
|
252
|
+
type: 'text',
|
|
253
|
+
text: 'No current capture: nothing was captured under this name this run, so there is no current or diff image, only the committed baseline.',
|
|
254
|
+
},
|
|
255
|
+
];
|
|
256
|
+
if (!dir) {
|
|
257
|
+
content.push({ type: 'text', text: `baseline: "${name}" does not resolve to a directory inside the baselines directory, so no file was read.` });
|
|
258
|
+
return content;
|
|
259
|
+
}
|
|
260
|
+
const file = path.join(dir, 'screenshot.png');
|
|
261
|
+
if (!fs.existsSync(file) || !staysInside((0, baselines_1.resolveBaselinesDir)(root), file)) {
|
|
262
|
+
content.push({ type: 'text', text: `baseline: no committed screenshot at ${projectPath(root, file)}.` });
|
|
263
|
+
return content;
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
content.push(...imageContent('baseline', fs.readFileSync(file)));
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
content.push({
|
|
270
|
+
type: 'text',
|
|
271
|
+
text: `baseline: ${projectPath(root, file)} could not be read as a PNG (${err instanceof Error ? err.message : String(err)}).`,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
return content;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Why the styles of an identical-DOM snapshot were not compared, or null when
|
|
278
|
+
* they were. noiseHint means the DOM is identical and no style mismatch was
|
|
279
|
+
* found, but only styleCheck 'match' proves the styles were compared:
|
|
280
|
+
* 'unavailable' (no comparable digests on both sides) and results written
|
|
281
|
+
* before the style check also carry the hint. Those are unknown, not noise:
|
|
282
|
+
* a stylesheet-only change is not ruled out.
|
|
283
|
+
*/
|
|
284
|
+
function stylesNotCompared(dom) {
|
|
285
|
+
if (!dom?.noiseHint || dom.styleCheck === 'match')
|
|
286
|
+
return null;
|
|
287
|
+
return dom.styleCheck === undefined ? 'absent' : 'unavailable';
|
|
288
|
+
}
|
|
289
|
+
/** The parenthetical naming why the styles were not compared. */
|
|
290
|
+
const NOT_COMPARED_REASON = {
|
|
291
|
+
unavailable: 'style check unavailable',
|
|
292
|
+
absent: 'no style check in these results',
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* The shape of an identical-DOM diff whose computed styles match, or null for
|
|
296
|
+
* any other snapshot. Render noise is small and scattered; a diff
|
|
297
|
+
* concentrated in one area or large is a bad capture or a change the style
|
|
298
|
+
* check does not cover (see diffShape in @testivai/witness).
|
|
299
|
+
*/
|
|
300
|
+
function matchedStylesShape(snapshot) {
|
|
301
|
+
if (!snapshot.dom?.noiseHint || snapshot.dom.styleCheck !== 'match')
|
|
302
|
+
return null;
|
|
303
|
+
return (0, report_1.diffShape)(snapshot);
|
|
304
|
+
}
|
|
77
305
|
/** One-line, agent-oriented verdict for a snapshot. */
|
|
78
306
|
function verdictFor(snapshot) {
|
|
79
|
-
|
|
80
|
-
|
|
307
|
+
const pct = snapshot.diffPercent !== undefined ? `${snapshot.diffPercent.toFixed(2)}% pixels differ` : 'pixels differ';
|
|
308
|
+
const notCompared = stylesNotCompared(snapshot.dom);
|
|
309
|
+
const shape = matchedStylesShape(snapshot);
|
|
310
|
+
if (snapshot.status === 'passed') {
|
|
311
|
+
if (!snapshot.autoPassed)
|
|
312
|
+
return 'passed — no visual change';
|
|
313
|
+
// An auto-pass is a configured tolerance: the pixel diff is still there.
|
|
314
|
+
const verdict = `passed — auto-passed by the configured '${snapshot.autoPassed}' criterion: ${pct}, within its tolerance`;
|
|
315
|
+
if (snapshot.autoPassed === 'noise' && notCompared) {
|
|
316
|
+
return `${verdict}; styles were not compared (${NOT_COMPARED_REASON[notCompared]}), so a stylesheet-only change is not ruled out — look at the diff`;
|
|
317
|
+
}
|
|
318
|
+
// A noise auto-pass from before noiseAutoPass refused concentrated diffs.
|
|
319
|
+
if (snapshot.autoPassed === 'noise' && shape?.kind === 'concentrated') {
|
|
320
|
+
return `${verdict}; but the diff is concentrated in one area (${(0, report_1.describeRegions)(shape)}), which render noise is not — look at the diff`;
|
|
321
|
+
}
|
|
322
|
+
return verdict;
|
|
323
|
+
}
|
|
81
324
|
if (snapshot.status === 'new')
|
|
82
325
|
return 'new snapshot — no baseline yet; a human should review and approve it';
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
326
|
+
if (notCompared) {
|
|
327
|
+
return (`changed (${pct}) but the DOM is structurally identical and styles were not compared (${NOT_COMPARED_REASON[notCompared]}) — ` +
|
|
328
|
+
'could be render noise or a stylesheet-only change; look at the diff before approving');
|
|
329
|
+
}
|
|
330
|
+
if (shape?.kind === 'concentrated') {
|
|
331
|
+
return (`changed (${pct}) — the DOM and computed styles both match, but the diff is concentrated in one area (${(0, report_1.describeRegions)(shape)}): ` +
|
|
332
|
+
`a bad capture, or a change the style check does not cover (${report_1.STYLE_CHECK_DOES_NOT_COVER}); compare the images (get_diff) before approving`);
|
|
333
|
+
}
|
|
334
|
+
if (shape?.kind === 'large') {
|
|
335
|
+
return (`changed (${pct}) — the DOM and computed styles both match, but the diff is large (over ${report_1.NOISE_MAX_DIFF_PERCENT}% of pixels, spread across the page), ` +
|
|
336
|
+
'more than render noise usually changes: often fonts or rendering that differ between machines, a bad capture, ' +
|
|
337
|
+
'or a change the style check does not cover; compare the images (get_diff) before approving');
|
|
338
|
+
}
|
|
88
339
|
if (snapshot.dom?.noiseHint) {
|
|
89
|
-
|
|
90
|
-
? 'the DOM and computed styles both match'
|
|
91
|
-
: 'DOM is structurally identical; styles were not compared (style check unavailable), so a style-only change is not ruled out';
|
|
92
|
-
return `changed (${pct}) but ${evidence} — likely render noise (font hinting, anti-aliasing); mention it, don't block`;
|
|
340
|
+
return `changed (${pct}) but the DOM and computed styles both match and the diff is small and scattered — likely render noise (font hinting, anti-aliasing); mention it, don't block`;
|
|
93
341
|
}
|
|
94
342
|
if (snapshot.dom?.changed) {
|
|
95
343
|
const s = snapshot.dom.summary;
|
|
@@ -185,12 +433,32 @@ function resolveImage(paths, relativePath) {
|
|
|
185
433
|
return null; // no traversal
|
|
186
434
|
return fs.existsSync(abs) ? abs : null;
|
|
187
435
|
}
|
|
188
|
-
/**
|
|
436
|
+
/**
|
|
437
|
+
* The smallest element every region maps to, or null when they share none.
|
|
438
|
+
* Each region lists its elements smallest first, so the first shared one of
|
|
439
|
+
* the first region is the smallest.
|
|
440
|
+
*/
|
|
441
|
+
function sharedElement(regions) {
|
|
442
|
+
const [first, ...rest] = regions;
|
|
443
|
+
if (!first)
|
|
444
|
+
return null;
|
|
445
|
+
const shared = (first.elements ?? [])
|
|
446
|
+
.map((e) => e.selector)
|
|
447
|
+
.filter((selector) => rest.every((r) => (r.elements ?? []).some((e) => e.selector === selector)));
|
|
448
|
+
return shared[0] ?? null;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Build the layered explanation bundle for one snapshot, the missing-baseline
|
|
452
|
+
* explanation for a name in `missingBaselines` that is not a snapshot, or
|
|
453
|
+
* null when the latest results have neither.
|
|
454
|
+
*/
|
|
189
455
|
function explainSnapshot(root, name) {
|
|
190
456
|
const results = readResults(resolvePaths(root));
|
|
191
|
-
|
|
192
|
-
if (!results || !snapshot)
|
|
457
|
+
if (!results)
|
|
193
458
|
return null;
|
|
459
|
+
const snapshot = results.snapshots.find((s) => s.name === name);
|
|
460
|
+
if (!snapshot)
|
|
461
|
+
return missingBaselineNames(results).includes(name) ? explainMissingBaseline(root, results, name) : null;
|
|
194
462
|
const regions = [...(snapshot.regions ?? [])]
|
|
195
463
|
.sort((a, b) => b.width * b.height - a.width * a.height)
|
|
196
464
|
.slice(0, 10);
|
|
@@ -204,14 +472,56 @@ function explainSnapshot(root, name) {
|
|
|
204
472
|
const guidance = [];
|
|
205
473
|
if (snapshot.status === 'new') {
|
|
206
474
|
guidance.push('No baseline exists yet — this is a first capture, not a regression. A human should review and approve it.');
|
|
475
|
+
// The other half of a rename: read on its own it would look like something to approve.
|
|
476
|
+
const missing = missingBaselineNames(results);
|
|
477
|
+
if (missing.length > 0) {
|
|
478
|
+
const shown = missing.slice(0, 10).join(', ') + (missing.length > 10 ? ', …' : '');
|
|
479
|
+
guidance.push(`Missing baselines this run (no capture): ${shown}. If this new snapshot is one of them under another name, it is a rename: judge the two together before approving it.`);
|
|
480
|
+
}
|
|
207
481
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
482
|
+
const notCompared = stylesNotCompared(snapshot.dom);
|
|
483
|
+
const shape = matchedStylesShape(snapshot);
|
|
484
|
+
// The DOM signal is computed before the pass criteria, so a passed snapshot
|
|
485
|
+
// can still carry noiseHint. The noise / styles-not-compared reading is for
|
|
486
|
+
// a diff pending review; a passed snapshot has nothing pending approval
|
|
487
|
+
// (an auto-pass gets its own line below), so the verdict and guidance agree.
|
|
488
|
+
const pending = snapshot.status === 'changed';
|
|
489
|
+
if (pending && notCompared) {
|
|
490
|
+
const why = notCompared === 'absent' ? 'these results have no style check' : 'no comparable style digests on both sides';
|
|
491
|
+
guidance.push('Styles not compared — could be render noise or a stylesheet-only change: pixels differ and the DOM is ' +
|
|
492
|
+
`structurally identical, but computed styles were not compared (${why}), so a stylesheet-only change is ` +
|
|
493
|
+
'not ruled out. Do not treat it as noise: compare the images (get_diff) before approving.');
|
|
213
494
|
}
|
|
214
|
-
if (
|
|
495
|
+
else if (pending && shape?.kind === 'concentrated' && shape.box) {
|
|
496
|
+
const regionList = snapshot.regions ?? [];
|
|
497
|
+
const element = sharedElement(regionList);
|
|
498
|
+
const mapsTo = element ? `, and ${regionList.length === 1 ? 'the region' : 'every region'} maps to \`${element}\`` : '';
|
|
499
|
+
guidance.push('Diff concentrated in one area, which render noise does not do: pixels differ and the DOM is structurally ' +
|
|
500
|
+
`identical with matching style digests, but ${(0, report_1.describeRegions)(shape)}, changed (box at x=${shape.box.x}, ` +
|
|
501
|
+
`y=${shape.box.y})${mapsTo}. Render noise is small and scattered (anti-aliasing and font hinting at glyph edges), ` +
|
|
502
|
+
'so this is a bad capture (a torn or partly blank render, a shifted band, a bad baseline) or a change the style ' +
|
|
503
|
+
`check does not cover (${report_1.STYLE_CHECK_DOES_NOT_COVER}). Do not treat it as noise: compare the images (get_diff) before approving.`);
|
|
504
|
+
}
|
|
505
|
+
else if (pending && shape?.kind === 'large') {
|
|
506
|
+
// diffShape treats an unknown size as not small; say so rather than claim a share.
|
|
507
|
+
const size = snapshot.diffPercent === undefined
|
|
508
|
+
? 'the share of pixels that differ is unknown'
|
|
509
|
+
: `${snapshot.diffPercent.toFixed(2)}% of pixels differ (over ${report_1.NOISE_MAX_DIFF_PERCENT}%)`;
|
|
510
|
+
guidance.push('Large diff, more than render noise usually changes: pixels differ and the DOM is structurally identical with ' +
|
|
511
|
+
`matching style digests, but ${size}, spread across the page. That is often fonts or rendering that differ between the ` +
|
|
512
|
+
'machines that captured the baseline and the current image; it can also be a bad capture or a change the style ' +
|
|
513
|
+
`check does not cover (${report_1.STYLE_CHECK_DOES_NOT_COVER}). Do not treat it as noise: compare the images (get_diff) before approving.`);
|
|
514
|
+
}
|
|
515
|
+
else if (pending && snapshot.dom?.noiseHint) {
|
|
516
|
+
guidance.push('Pixels differ but the DOM is structurally identical, style digests match, and the diff is small and scattered — likely render noise (anti-aliasing, font hinting). Mention it; do not block on it.');
|
|
517
|
+
}
|
|
518
|
+
if (snapshot.dom?.styleCheck === 'mismatch' && snapshot.dom.changed) {
|
|
519
|
+
// A class or style attribute change: the DOM changed AND elements were
|
|
520
|
+
// restyled. Never call the DOM identical here.
|
|
521
|
+
const els = snapshot.dom.styleChanges?.elements?.slice(0, 5).join(', ');
|
|
522
|
+
guidance.push(`Computed styles also changed on ${snapshot.dom.styleChanges?.count ?? 'some'} element(s)${els ? ` (${els})` : ''} along with the DOM change.`);
|
|
523
|
+
}
|
|
524
|
+
else if (snapshot.dom?.styleCheck === 'mismatch') {
|
|
215
525
|
const els = snapshot.dom.styleChanges?.elements?.slice(0, 5).join(', ');
|
|
216
526
|
guidance.push(`Computed styles changed on ${snapshot.dom.styleChanges?.count ?? 'some'} element(s)${els ? ` (${els})` : ''} while the DOM stayed identical — a stylesheet-only change. This is REAL, not noise.`);
|
|
217
527
|
}
|
|
@@ -225,7 +535,17 @@ function explainSnapshot(root, name) {
|
|
|
225
535
|
const s = snapshot.dom.summary;
|
|
226
536
|
guidance.push(`The DOM changed structurally (${s.added} added, ${s.removed} removed, ${s.attributeChanges} attribute changes${s.textChanges ? `, ${s.textChanges} text changes` : ''}) — confirm the change is intended before approving.`);
|
|
227
537
|
}
|
|
228
|
-
if (snapshot.autoPassed) {
|
|
538
|
+
if (snapshot.autoPassed === 'noise' && notCompared) {
|
|
539
|
+
// A noise auto-pass that did not require a style match (older results).
|
|
540
|
+
guidance.push("This diff auto-passed via the 'noise' criterion although its styles were not compared, so a " +
|
|
541
|
+
'stylesheet-only change was not ruled out — compare the images (get_diff) before relying on it.');
|
|
542
|
+
}
|
|
543
|
+
else if (snapshot.autoPassed === 'noise' && shape?.kind === 'concentrated') {
|
|
544
|
+
// A noise auto-pass from before noiseAutoPass refused concentrated diffs.
|
|
545
|
+
guidance.push(`This diff auto-passed via the 'noise' criterion although it is concentrated in one area (${(0, report_1.describeRegions)(shape)}), ` +
|
|
546
|
+
'which render noise is not — compare the images (get_diff) before relying on it.');
|
|
547
|
+
}
|
|
548
|
+
else if (snapshot.autoPassed) {
|
|
229
549
|
guidance.push(`This diff auto-passed via the '${snapshot.autoPassed}' criterion — reported for transparency, no action needed.`);
|
|
230
550
|
}
|
|
231
551
|
if (snapshot.maskWarnings?.length) {
|
|
@@ -241,6 +561,7 @@ function explainSnapshot(root, name) {
|
|
|
241
561
|
diffPercent: snapshot.diffPercent ?? null,
|
|
242
562
|
regionCount: snapshot.regions?.length ?? 0,
|
|
243
563
|
regions,
|
|
564
|
+
shape: snapshot.status === 'changed' || snapshot.autoPassed ? (0, report_1.diffShape)(snapshot) : null,
|
|
244
565
|
},
|
|
245
566
|
element: {
|
|
246
567
|
pageShift: snapshot.pageShift ?? null,
|
|
@@ -286,8 +607,7 @@ function approveAll(root) {
|
|
|
286
607
|
function listBaselines(root) {
|
|
287
608
|
// Honor config.json baselinesDir (incl. the {platform} token) so this
|
|
288
609
|
// agrees with the store's resolution — see witness resolveBaselinesDir.
|
|
289
|
-
const
|
|
290
|
-
const dir = resolveBaselinesDir(root);
|
|
610
|
+
const dir = (0, baselines_1.resolveBaselinesDir)(root);
|
|
291
611
|
if (!fs.existsSync(dir))
|
|
292
612
|
return [];
|
|
293
613
|
return fs
|
|
@@ -339,13 +659,14 @@ function resolveApprovalPrompt(argv, configValue) {
|
|
|
339
659
|
}
|
|
340
660
|
return configValue ?? true;
|
|
341
661
|
}
|
|
342
|
-
// Real changes before noise when groups are the same size.
|
|
343
|
-
const BASIS_ORDER = ['style-only', 'page-shift', 'noise'];
|
|
662
|
+
// Real changes, then unknowns, before likely noise when groups are the same size.
|
|
663
|
+
const BASIS_ORDER = ['style-only', 'page-shift', 'styles-not-compared', 'large-diff', 'noise'];
|
|
344
664
|
/**
|
|
345
665
|
* The one grouping signal a changed snapshot carries, or null when it must
|
|
346
666
|
* not be grouped. Precedence: structural (never grouped) > style-only >
|
|
347
|
-
* page shift >
|
|
348
|
-
*
|
|
667
|
+
* page shift > styles not compared > concentrated (never grouped) > large
|
|
668
|
+
* diff > noise. Every rule errs towards null: under-grouping is acceptable,
|
|
669
|
+
* over-grouping is a bug.
|
|
349
670
|
*/
|
|
350
671
|
function signatureOf(s) {
|
|
351
672
|
// Only changed snapshots; auto-passed ones are status 'passed'.
|
|
@@ -379,14 +700,38 @@ function signatureOf(s) {
|
|
|
379
700
|
'grouped on the displacement, not on its cause',
|
|
380
701
|
};
|
|
381
702
|
}
|
|
703
|
+
// Styles not compared is unknown, not noise: its own basis, so it is never
|
|
704
|
+
// grouped or labelled with noise. Unavailable and absent style checks are
|
|
705
|
+
// labelled differently, so they are keyed apart.
|
|
706
|
+
const notCompared = stylesNotCompared(s.dom);
|
|
707
|
+
if (notCompared) {
|
|
708
|
+
return {
|
|
709
|
+
basis: 'styles-not-compared',
|
|
710
|
+
key: `styles-not-compared:${notCompared}`,
|
|
711
|
+
label: `identical DOM, styles not compared (${NOT_COMPARED_REASON[notCompared]}): ` +
|
|
712
|
+
'render noise or a stylesheet-only change, not ruled out',
|
|
713
|
+
};
|
|
714
|
+
}
|
|
715
|
+
// Matching styles: likely noise only when the diff is small and scattered.
|
|
716
|
+
// A diff concentrated in one area sits in its own place on its own page,
|
|
717
|
+
// so grouping two would suggest one cause: never grouped, never as noise.
|
|
718
|
+
const shape = matchedStylesShape(s);
|
|
719
|
+
if (shape?.kind === 'concentrated')
|
|
720
|
+
return null;
|
|
721
|
+
if (shape?.kind === 'large') {
|
|
722
|
+
return {
|
|
723
|
+
basis: 'large-diff',
|
|
724
|
+
key: 'large-diff',
|
|
725
|
+
label: `identical DOM and computed styles, but over ${report_1.NOISE_MAX_DIFF_PERCENT}% of pixels differ, spread across the page: ` +
|
|
726
|
+
'more than render noise usually changes; grouped on that signal, not on its cause',
|
|
727
|
+
};
|
|
728
|
+
}
|
|
382
729
|
if (s.dom.noiseHint) {
|
|
383
|
-
return
|
|
384
|
-
|
|
385
|
-
:
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
label: 'likely render noise with identical DOM, but styles not compared (style check unavailable)',
|
|
389
|
-
};
|
|
730
|
+
return {
|
|
731
|
+
basis: 'noise',
|
|
732
|
+
key: 'noise:match',
|
|
733
|
+
label: 'likely render noise: the DOM and computed styles both match and the diff is small and scattered',
|
|
734
|
+
};
|
|
390
735
|
}
|
|
391
736
|
return null;
|
|
392
737
|
}
|
|
@@ -394,8 +739,8 @@ function signatureOf(s) {
|
|
|
394
739
|
* Deterministic grouping of changed snapshots whose grouping signal is
|
|
395
740
|
* identical. Pure: no I/O, and the output does not depend on input order.
|
|
396
741
|
* Groups are ordered by size (largest first), then kind (style-only, page
|
|
397
|
-
* shift, noise), then signature; members by
|
|
398
|
-
* more members are returned.
|
|
742
|
+
* shift, styles not compared, large diff, noise), then signature; members by
|
|
743
|
+
* name. Only groups with two or more members are returned.
|
|
399
744
|
*/
|
|
400
745
|
function groupChanges(snapshots) {
|
|
401
746
|
const byKey = new Map();
|
|
@@ -441,4 +786,17 @@ function changeGroupLines(snapshots) {
|
|
|
441
786
|
: []),
|
|
442
787
|
];
|
|
443
788
|
}
|
|
789
|
+
/**
|
|
790
|
+
* MCP makes a prompts/get request's `arguments` optional, but the SDK
|
|
791
|
+
* validates a prompt's argument schema against the object itself and rejects
|
|
792
|
+
* a request without one, even when every argument is optional. Run on each
|
|
793
|
+
* incoming message, before the SDK sees it: a prompts/get with no arguments
|
|
794
|
+
* gets an empty object. Everything else is returned as it was.
|
|
795
|
+
*/
|
|
796
|
+
function withPromptArguments(message) {
|
|
797
|
+
const m = message;
|
|
798
|
+
if (!m || typeof m !== 'object' || m.method !== 'prompts/get' || !m.params || m.params.arguments !== undefined)
|
|
799
|
+
return message;
|
|
800
|
+
return { ...m, params: { ...m.params, arguments: {} } };
|
|
801
|
+
}
|
|
444
802
|
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|