@testivai/witness 2.4.0 → 2.6.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 +9 -2
- package/dist/baselines/store.d.ts +31 -0
- package/dist/baselines/store.d.ts.map +1 -1
- package/dist/baselines/store.js +38 -1
- package/dist/baselines/store.js.map +1 -1
- package/dist/bin/testivai.js +2 -0
- package/dist/bin/testivai.js.map +1 -1
- package/dist/capture/element-map.d.ts +23 -2
- package/dist/capture/element-map.d.ts.map +1 -1
- package/dist/capture/element-map.js +102 -4
- package/dist/capture/element-map.js.map +1 -1
- package/dist/capture/environment.d.ts +243 -0
- package/dist/capture/environment.d.ts.map +1 -0
- package/dist/capture/environment.js +403 -0
- package/dist/capture/environment.js.map +1 -0
- package/dist/capture/health-limits.d.ts +14 -0
- package/dist/capture/health-limits.d.ts.map +1 -0
- package/dist/capture/health-limits.js +17 -0
- package/dist/capture/health-limits.js.map +1 -0
- package/dist/capture/health.d.ts +124 -0
- package/dist/capture/health.d.ts.map +1 -0
- package/dist/capture/health.js +327 -0
- package/dist/capture/health.js.map +1 -0
- package/dist/capture/native-app.d.ts +77 -0
- package/dist/capture/native-app.d.ts.map +1 -0
- package/dist/capture/native-app.js +172 -0
- package/dist/capture/native-app.js.map +1 -0
- package/dist/capture/shard.d.ts +17 -0
- package/dist/capture/shard.d.ts.map +1 -1
- package/dist/capture/shard.js +8 -1
- package/dist/capture/shard.js.map +1 -1
- package/dist/commands/approve.d.ts.map +1 -1
- package/dist/commands/approve.js +20 -0
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/env.d.ts +37 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +113 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/merge-captures.d.ts.map +1 -1
- package/dist/commands/merge-captures.js +10 -0
- package/dist/commands/merge-captures.js.map +1 -1
- package/dist/config/local-config.d.ts +27 -0
- package/dist/config/local-config.d.ts.map +1 -1
- package/dist/config/local-config.js +1 -0
- package/dist/config/local-config.js.map +1 -1
- package/dist/config/validate-config.d.ts.map +1 -1
- package/dist/config/validate-config.js +22 -0
- package/dist/config/validate-config.js.map +1 -1
- package/dist/diff/attribution.d.ts +16 -2
- package/dist/diff/attribution.d.ts.map +1 -1
- package/dist/diff/attribution.js +5 -4
- package/dist/diff/attribution.js.map +1 -1
- package/dist/diff/dom-diff.d.ts.map +1 -1
- package/dist/diff/dom-diff.js +7 -1
- package/dist/diff/dom-diff.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -1
- package/dist/index.js.map +1 -1
- package/dist/report/anchor.d.ts +18 -0
- package/dist/report/anchor.d.ts.map +1 -0
- package/dist/report/anchor.js +51 -0
- package/dist/report/anchor.js.map +1 -0
- package/dist/report/compare.d.ts +18 -1
- package/dist/report/compare.d.ts.map +1 -1
- package/dist/report/compare.js +107 -16
- package/dist/report/compare.js.map +1 -1
- package/dist/report/environment.d.ts +101 -0
- package/dist/report/environment.d.ts.map +1 -0
- package/dist/report/environment.js +354 -0
- package/dist/report/environment.js.map +1 -0
- package/dist/report/generator.d.ts +20 -2
- package/dist/report/generator.d.ts.map +1 -1
- package/dist/report/generator.js +46 -6
- package/dist/report/generator.js.map +1 -1
- package/dist/report/health.d.ts +115 -0
- package/dist/report/health.d.ts.map +1 -0
- package/dist/report/health.js +279 -0
- package/dist/report/health.js.map +1 -0
- package/dist/report/index.d.ts +9 -2
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +25 -1
- package/dist/report/index.js.map +1 -1
- package/dist/report/results.d.ts +73 -1
- package/dist/report/results.d.ts.map +1 -1
- package/dist/report/shift-check.d.ts +40 -0
- package/dist/report/shift-check.d.ts.map +1 -0
- package/dist/report/shift-check.js +109 -0
- package/dist/report/shift-check.js.map +1 -0
- package/dist/report/template.d.ts +28 -1
- package/dist/report/template.d.ts.map +1 -1
- package/dist/report/template.js +179 -16
- package/dist/report/template.js.map +1 -1
- package/dist/report/thumbnail.d.ts +76 -0
- package/dist/report/thumbnail.d.ts.map +1 -0
- package/dist/report/thumbnail.js +166 -0
- package/dist/report/thumbnail.js.map +1 -0
- package/dist/report/validate.d.ts +53 -0
- package/dist/report/validate.d.ts.map +1 -0
- package/dist/report/validate.js +383 -0
- package/dist/report/validate.js.map +1 -0
- package/dist/standalone/run.d.ts +39 -1
- package/dist/standalone/run.d.ts.map +1 -1
- package/dist/standalone/run.js +142 -3
- package/dist/standalone/run.js.map +1 -1
- package/package.json +1 -1
package/dist/report/compare.js
CHANGED
|
@@ -38,6 +38,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
38
38
|
};
|
|
39
39
|
})();
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.sameElementIdAttributes = sameElementIdAttributes;
|
|
41
42
|
exports.compareAll = compareAll;
|
|
42
43
|
exports.applyPassCriteria = applyPassCriteria;
|
|
43
44
|
const fs = __importStar(require("fs"));
|
|
@@ -48,7 +49,24 @@ const dom_diff_1 = require("../diff/dom-diff");
|
|
|
48
49
|
const store_1 = require("../baselines/store");
|
|
49
50
|
const diff_shape_1 = require("./diff-shape");
|
|
50
51
|
const mask_1 = require("../diff/mask");
|
|
52
|
+
const environment_1 = require("../capture/environment");
|
|
53
|
+
const health_1 = require("../capture/health");
|
|
54
|
+
const element_map_1 = require("../capture/element-map");
|
|
55
|
+
const environment_2 = require("./environment");
|
|
56
|
+
const health_2 = require("./health");
|
|
57
|
+
const thumbnail_1 = require("./thumbnail");
|
|
58
|
+
const shift_check_1 = require("./shift-check");
|
|
51
59
|
const attribution_1 = require("../diff/attribution");
|
|
60
|
+
/**
|
|
61
|
+
* Whether two captures built their element paths the same way: the same
|
|
62
|
+
* `elementIdAttributes` (order included, it is the precedence), absent
|
|
63
|
+
* meaning unset.
|
|
64
|
+
*/
|
|
65
|
+
function sameElementIdAttributes(a, b) {
|
|
66
|
+
const x = (0, element_map_1.normalizeElementIdAttributes)(a);
|
|
67
|
+
const y = (0, element_map_1.normalizeElementIdAttributes)(b);
|
|
68
|
+
return x.length === y.length && x.every((name, i) => name === y[i]);
|
|
69
|
+
}
|
|
52
70
|
function readElementMap(projectRoot, kind, name) {
|
|
53
71
|
const p = kind === 'baselines'
|
|
54
72
|
? path.join((0, store_1.resolveBaselinesDir)(projectRoot), name, 'elements.json')
|
|
@@ -91,7 +109,10 @@ function compareAll(options) {
|
|
|
91
109
|
const currentPath = path.join(snapshotImagesDir, 'current.png');
|
|
92
110
|
fs.writeFileSync(currentPath, tempBuffer);
|
|
93
111
|
if (!store.exists(name)) {
|
|
94
|
-
// New snapshot — no baseline to compare against
|
|
112
|
+
// New snapshot — no baseline to compare against. Its health is said
|
|
113
|
+
// before anyone approves it: an unhealthy first capture must not
|
|
114
|
+
// become the baseline.
|
|
115
|
+
const firstHealth = (0, health_2.snapshotCaptureHealth)(null, (0, health_1.parseHealth)(store.readTempMetadata(name)?.health));
|
|
95
116
|
results.push({
|
|
96
117
|
name,
|
|
97
118
|
status: 'new',
|
|
@@ -99,6 +120,7 @@ function compareAll(options) {
|
|
|
99
120
|
diffCount: 0,
|
|
100
121
|
totalPixels: 0,
|
|
101
122
|
currentPath: `images/${name}/current.png`,
|
|
123
|
+
...(firstHealth ? { captureHealth: firstHealth } : {}),
|
|
102
124
|
});
|
|
103
125
|
continue;
|
|
104
126
|
}
|
|
@@ -113,7 +135,7 @@ function compareAll(options) {
|
|
|
113
135
|
// For simplicity and zero-dep, we do a byte-level comparison first,
|
|
114
136
|
// then fall back to diff engine for actual pixel data.
|
|
115
137
|
const captureMeta = readTempMaskMetadata(projectRoot, name);
|
|
116
|
-
const result = compareBuffers(baselineBuffer, tempBuffer, name, snapshotImagesDir, threshold, {
|
|
138
|
+
const { result, pixels } = compareBuffers(baselineBuffer, tempBuffer, name, snapshotImagesDir, threshold, {
|
|
117
139
|
configMasks: options.mask ?? [],
|
|
118
140
|
callMasks: [
|
|
119
141
|
...(captureMeta.masks ?? []),
|
|
@@ -127,6 +149,29 @@ function compareAll(options) {
|
|
|
127
149
|
if (baselineMeta) {
|
|
128
150
|
result.baselineApprovedAt = baselineMeta.updatedAt ?? baselineMeta.createdAt;
|
|
129
151
|
}
|
|
152
|
+
// Capture provenance: the environment each side was captured in. Only
|
|
153
|
+
// when both recorded one: an unrecorded side is unknown, not a change.
|
|
154
|
+
const candidateMeta = store.readTempMetadata(name);
|
|
155
|
+
const baselineEnv = (0, environment_1.readEnvironment)(baselineMeta?.environment);
|
|
156
|
+
const candidateEnv = (0, environment_1.readEnvironment)(candidateMeta?.environment);
|
|
157
|
+
if (baselineEnv && candidateEnv) {
|
|
158
|
+
const { delta, renderingDelta } = (0, environment_2.diffEnvironments)(baselineEnv, candidateEnv);
|
|
159
|
+
result.environment = delta.length > 0
|
|
160
|
+
? { delta, renderingDelta, baseline: baselineEnv, candidate: candidateEnv }
|
|
161
|
+
: { delta, renderingDelta };
|
|
162
|
+
// strict: the environment changed, so the baseline no longer gates
|
|
163
|
+
// this capture, even when the pixels happen to match.
|
|
164
|
+
if (options.environmentPolicy === 'strict' && renderingDelta.length > 0) {
|
|
165
|
+
result.status = 'changed';
|
|
166
|
+
result.environment.policy = 'strict';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Capture health: what failed to load on each side. Either side recorded
|
|
170
|
+
// is enough: an unhealthy baseline is called out on every compare against
|
|
171
|
+
// it. Unrecorded on both sides is not checked: no field.
|
|
172
|
+
const health = (0, health_2.snapshotCaptureHealth)((0, health_1.parseHealth)(baselineMeta?.health), (0, health_1.parseHealth)(candidateMeta?.health));
|
|
173
|
+
if (health)
|
|
174
|
+
result.captureHealth = health;
|
|
130
175
|
// DOM-level signal. Only meaningful when both sides captured DOM.
|
|
131
176
|
// Computed whenever the two files differ at all (pixels, dimensions, or
|
|
132
177
|
// a re-encode with identical pixels), so a passed snapshot whose DOM
|
|
@@ -149,7 +194,13 @@ function compareAll(options) {
|
|
|
149
194
|
// stylesheet-only change is not ruled out: the report labels that
|
|
150
195
|
// case "styles not compared" and noiseAutoPass never passes it.
|
|
151
196
|
if (domSignal) {
|
|
152
|
-
|
|
197
|
+
// Paths built with different elementIdAttributes only meet on the
|
|
198
|
+
// elements no anchor covers: comparing those would be a verdict on
|
|
199
|
+
// part of the page. Not compared until the baseline is re-approved.
|
|
200
|
+
const samePaths = sameElementIdAttributes(baselineMeta?.elementIdAttributes, candidateMeta?.elementIdAttributes);
|
|
201
|
+
const styleComparison = samePaths
|
|
202
|
+
? (0, attribution_1.compareStyleHashes)(baselineElements, candidateElements)
|
|
203
|
+
: { status: 'unavailable', changed: [] };
|
|
153
204
|
domSignal.styleCheck = styleComparison.status;
|
|
154
205
|
if (styleComparison.status === 'mismatch') {
|
|
155
206
|
domSignal.styleChanges = {
|
|
@@ -158,21 +209,47 @@ function compareAll(options) {
|
|
|
158
209
|
};
|
|
159
210
|
domSignal.noiseHint = false;
|
|
160
211
|
}
|
|
212
|
+
// An unhealthy capture is never render noise: a font that fell back
|
|
213
|
+
// or a stylesheet that failed leaves the DOM identical and the
|
|
214
|
+
// declared styles matching, and only the health record says so.
|
|
215
|
+
if ((0, health_2.isUnhealthyCapture)(result))
|
|
216
|
+
domSignal.noiseHint = false;
|
|
161
217
|
result.dom = domSignal;
|
|
162
218
|
}
|
|
219
|
+
// A claimed move must be the same content, moved: paths renumbered by
|
|
220
|
+
// inserted content can pair look-alike neighbours (shift-check.ts).
|
|
221
|
+
const confirmShift = pixels ? (0, shift_check_1.makeShiftCheck)(pixels.baseline, pixels.current, threshold, result.masks ?? []) : undefined;
|
|
163
222
|
if (result.regions && result.regions.length > 0) {
|
|
164
|
-
result.regions = (0, attribution_1.attributeRegions)(result.regions, baselineElements, candidateElements);
|
|
223
|
+
result.regions = (0, attribution_1.attributeRegions)(result.regions, baselineElements, candidateElements, confirmShift);
|
|
165
224
|
}
|
|
166
|
-
const pageShift = (0, attribution_1.detectPageShift)(baselineElements, candidateElements);
|
|
225
|
+
const pageShift = (0, attribution_1.detectPageShift)(baselineElements, candidateElements, undefined, confirmShift);
|
|
167
226
|
if (pageShift) {
|
|
168
227
|
result.pageShift = pageShift;
|
|
169
228
|
}
|
|
170
229
|
applyPassCriteria(result, passCriteria);
|
|
171
230
|
}
|
|
231
|
+
// The thumbnail is for a snapshot someone has to look at: only once the
|
|
232
|
+
// status is final, and only for 'changed' (never passed or new).
|
|
233
|
+
if (result.status === 'changed' && pixels) {
|
|
234
|
+
writeThumbnail(result, pixels, snapshotImagesDir, name);
|
|
235
|
+
}
|
|
172
236
|
results.push(result);
|
|
173
237
|
}
|
|
174
238
|
return results;
|
|
175
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Write thumb.png (baseline | current | diff of the changed area, see
|
|
242
|
+
* report/thumbnail.ts) and record `thumbPath`. Nothing when the diff has no
|
|
243
|
+
* differing pixel to show.
|
|
244
|
+
*/
|
|
245
|
+
function writeThumbnail(result, pixels, snapshotImagesDir, name) {
|
|
246
|
+
const area = (0, thumbnail_1.thumbnailArea)(result.regions, pixels.diff);
|
|
247
|
+
if (!area)
|
|
248
|
+
return;
|
|
249
|
+
const strip = (0, thumbnail_1.renderThumbnail)(pixels, area);
|
|
250
|
+
fs.writeFileSync(path.join(snapshotImagesDir, 'thumb.png'), encodePng(Buffer.from(strip.data.buffer), strip.width, strip.height));
|
|
251
|
+
result.thumbPath = `images/${name}/thumb.png`;
|
|
252
|
+
}
|
|
176
253
|
/**
|
|
177
254
|
* Turn a 'changed' result into 'passed' when it satisfies the configured
|
|
178
255
|
* pass criteria. Mutates the result: status flips to 'passed' and
|
|
@@ -187,8 +264,10 @@ function applyPassCriteria(result, criteria) {
|
|
|
187
264
|
// zero-count path below used to pass a grown page whose candidate had been
|
|
188
265
|
// truncated to the baseline's height. A DOM change on its own never
|
|
189
266
|
// decides the status: visible output is the contract, so the pixels do,
|
|
190
|
-
// and the report says when a passed snapshot's DOM differs.
|
|
191
|
-
|
|
267
|
+
// and the report says when a passed snapshot's DOM differs. Under
|
|
268
|
+
// environmentPolicy "strict", a changed rendering environment is never
|
|
269
|
+
// passed either.
|
|
270
|
+
if (result.sizeMismatch || result.environment?.policy === 'strict')
|
|
192
271
|
return;
|
|
193
272
|
// Nothing above the per-pixel threshold: visually identical. Guard on
|
|
194
273
|
// totalPixels — the PNG-decode-failure path reports diffCount 0 with
|
|
@@ -198,6 +277,15 @@ function applyPassCriteria(result, criteria) {
|
|
|
198
277
|
result.diffPercent = 0;
|
|
199
278
|
return;
|
|
200
279
|
}
|
|
280
|
+
// An unhealthy capture (a font that fell back, a stylesheet that failed,
|
|
281
|
+
// on either side) whose pixels differ is never passed by a tolerance: the
|
|
282
|
+
// diff is a glitch of the capture or a broken asset, and the fix is the
|
|
283
|
+
// page, the server or the test, not a tolerance. Except when both sides
|
|
284
|
+
// failed the same way (captureHealth.sameOnBothSides, a permanently broken
|
|
285
|
+
// asset): both images miss the same assets, so the tolerances still
|
|
286
|
+
// measure the page. Noise auto-pass never applies to an unhealthy capture.
|
|
287
|
+
if (!(0, health_2.healthAllowsTolerances)(result))
|
|
288
|
+
return;
|
|
201
289
|
const withinPercent = result.diffPercent <= maxDiffPercent;
|
|
202
290
|
const withinPixels = maxDiffPixels !== undefined && result.diffCount <= maxDiffPixels;
|
|
203
291
|
if (withinPercent || withinPixels) {
|
|
@@ -212,6 +300,7 @@ function applyPassCriteria(result, criteria) {
|
|
|
212
300
|
// bad capture or a change the style check does not cover, so they stay
|
|
213
301
|
// too. The size bound is noiseMaxDiffPercent, not diffShape's 1%.
|
|
214
302
|
if (noiseAutoPass &&
|
|
303
|
+
!(0, health_2.isUnhealthyCapture)(result) &&
|
|
215
304
|
result.dom?.noiseHint === true &&
|
|
216
305
|
result.dom.styleCheck === 'match' &&
|
|
217
306
|
result.diffPercent <= noiseMaxDiffPercent &&
|
|
@@ -308,7 +397,7 @@ function compareBuffers(baselineBuffer, candidateBuffer, name, snapshotImagesDir
|
|
|
308
397
|
result.maskWarnings = warnings;
|
|
309
398
|
}
|
|
310
399
|
}
|
|
311
|
-
return result;
|
|
400
|
+
return { result };
|
|
312
401
|
}
|
|
313
402
|
try {
|
|
314
403
|
// Decode PNG → raw RGBA so the diff engine gets real pixel data
|
|
@@ -372,19 +461,21 @@ function compareBuffers(baselineBuffer, candidateBuffer, name, snapshotImagesDir
|
|
|
372
461
|
result.masks = maskRects;
|
|
373
462
|
if (maskWarnings.length > 0)
|
|
374
463
|
result.maskWarnings = maskWarnings;
|
|
375
|
-
return result;
|
|
464
|
+
return { result, pixels: { baseline, current: candidate, diff: { data: diffOutput, width, height } } };
|
|
376
465
|
}
|
|
377
466
|
catch (_err) {
|
|
378
467
|
// PNG decode failed (corrupt file, unexpected format) — report as changed
|
|
379
468
|
// without a diff image so the user can investigate manually
|
|
380
469
|
return {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
470
|
+
result: {
|
|
471
|
+
name,
|
|
472
|
+
status: 'changed',
|
|
473
|
+
diffPercent: 100,
|
|
474
|
+
diffCount: 0,
|
|
475
|
+
totalPixels: 0,
|
|
476
|
+
baselinePath: `images/${name}/baseline.png`,
|
|
477
|
+
currentPath: `images/${name}/current.png`,
|
|
478
|
+
},
|
|
388
479
|
};
|
|
389
480
|
}
|
|
390
481
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/report/compare.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/report/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TestivAI Report — what changed in the capture environment
|
|
3
|
+
*
|
|
4
|
+
* The compare reads the environment the baseline was captured in next to the
|
|
5
|
+
* current capture's (capture/environment.ts) and lists every field that
|
|
6
|
+
* differs. Only some of those can change how a page renders. A new browser
|
|
7
|
+
* build, another OS, distro or architecture, another device scale, viewport,
|
|
8
|
+
* color scheme, locale or time zone, another capture method, a container or a
|
|
9
|
+
* relabelled environment can; a newer test framework, adapter or driver, a
|
|
10
|
+
* new CI runner image or another project name cannot on its own (a browser
|
|
11
|
+
* that came with a framework upgrade shows up as the browser change).
|
|
12
|
+
*
|
|
13
|
+
* When pixels differ, the DOM and the computed styles are identical and the
|
|
14
|
+
* rendering environment changed, the diff is RENDERING DRIFT: the machine
|
|
15
|
+
* changed, not the page. The report, @testivai/mcp and the GitHub Action
|
|
16
|
+
* word it that way instead of "likely render noise", and say it once at the
|
|
17
|
+
* top when several snapshots share the same change.
|
|
18
|
+
*
|
|
19
|
+
* Read from results.json fields only, so every surface agrees.
|
|
20
|
+
*/
|
|
21
|
+
import type { CaptureEnvironment } from '../capture/environment';
|
|
22
|
+
import { type DiffShapeInput } from './diff-shape';
|
|
23
|
+
/**
|
|
24
|
+
* The fields of a snapshot result these rules read: results.json's own, so
|
|
25
|
+
* @testivai/mcp and the GitHub Action pass their snapshot types as they are.
|
|
26
|
+
*/
|
|
27
|
+
export interface EnvironmentSnapshotInput extends DiffShapeInput {
|
|
28
|
+
name: string;
|
|
29
|
+
status: string;
|
|
30
|
+
autoPassed?: string;
|
|
31
|
+
dom?: {
|
|
32
|
+
changed: boolean;
|
|
33
|
+
styleCheck?: string;
|
|
34
|
+
} | null;
|
|
35
|
+
sizeMismatch?: unknown;
|
|
36
|
+
environment?: {
|
|
37
|
+
delta: string[];
|
|
38
|
+
renderingDelta: string[];
|
|
39
|
+
baseline?: CaptureEnvironment;
|
|
40
|
+
candidate?: CaptureEnvironment;
|
|
41
|
+
policy?: string;
|
|
42
|
+
} | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Every field that differs between two recorded environments, and the subset
|
|
46
|
+
* that can change rendering, both sorted. A field recorded on one side only
|
|
47
|
+
* is unknown (an older adapter did not record it), not a change; the
|
|
48
|
+
* container, the label and the CI provider are always decided by the
|
|
49
|
+
* collector, so their absence means "no".
|
|
50
|
+
*/
|
|
51
|
+
export declare function diffEnvironments(baseline: CaptureEnvironment, candidate: CaptureEnvironment): {
|
|
52
|
+
delta: string[];
|
|
53
|
+
renderingDelta: string[];
|
|
54
|
+
};
|
|
55
|
+
/** "full-page:cdp" → "full page (CDP)"; an unknown method passes through. */
|
|
56
|
+
export declare function describeCaptureMethod(method: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* The listed fields as one readable clause, each with its values, in a fixed
|
|
59
|
+
* order: "chromium 130.0.6723.58 → 141.0.7390.37, ubuntu 22.04 → ubuntu
|
|
60
|
+
* 24.04, capture method full page (CDP) → viewport (WebDriver)".
|
|
61
|
+
*/
|
|
62
|
+
export declare function describeEnvironmentChange(baseline: CaptureEnvironment, candidate: CaptureEnvironment, fields: string[]): string;
|
|
63
|
+
/**
|
|
64
|
+
* Rendering drift: pixels differ (the snapshot is changed, or was auto-passed
|
|
65
|
+
* by a tolerance), the DOM is identical, the computed styles were compared and
|
|
66
|
+
* match, and the rendering environment changed since the baseline. Never for
|
|
67
|
+
* a diff concentrated in one area (a new browser or OS redraws text
|
|
68
|
+
* everywhere; one area is a bad capture or a change the style check does not
|
|
69
|
+
* cover). A size change counts only when the environment explains it (the
|
|
70
|
+
* viewport, the device scale or the capture method changed).
|
|
71
|
+
*/
|
|
72
|
+
export declare function isRenderingDrift(snapshot: EnvironmentSnapshotInput): boolean;
|
|
73
|
+
/** The rendering change of one snapshot, worded, or null when there is none. */
|
|
74
|
+
export declare function snapshotEnvironmentChange(snapshot: EnvironmentSnapshotInput): string | null;
|
|
75
|
+
/**
|
|
76
|
+
* The fields every listed environment agrees on: the run-level block in
|
|
77
|
+
* results.json. One environment is its own; none is null.
|
|
78
|
+
*/
|
|
79
|
+
export declare function commonEnvironment(envs: CaptureEnvironment[]): Partial<CaptureEnvironment> | null;
|
|
80
|
+
/** Snapshots sharing one rendering environment change. */
|
|
81
|
+
export interface EnvironmentChangeGroup {
|
|
82
|
+
/** The change, worded (describeEnvironmentChange). */
|
|
83
|
+
change: string;
|
|
84
|
+
/** Changed or auto-passed snapshots with this change, in results order. */
|
|
85
|
+
snapshots: string[];
|
|
86
|
+
/** The subset that is rendering drift (isRenderingDrift). */
|
|
87
|
+
drift: string[];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Changed (and auto-passed) snapshots grouped by the same rendering
|
|
91
|
+
* environment change, largest group first. A passed snapshot with no pixel
|
|
92
|
+
* diff is not counted: nothing to explain.
|
|
93
|
+
*/
|
|
94
|
+
export declare function environmentChangeGroups(snapshots: EnvironmentSnapshotInput[]): EnvironmentChangeGroup[];
|
|
95
|
+
/**
|
|
96
|
+
* The line said once at the top of the report, the PR comment and
|
|
97
|
+
* get_visual_results for a group of two or more snapshots, with an honest
|
|
98
|
+
* count of how many are drift alone.
|
|
99
|
+
*/
|
|
100
|
+
export declare function environmentChangeLine(group: EnvironmentChangeGroup): string;
|
|
101
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/report/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,cAAc,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;QAC9B,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAuED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,kBAAkB,GAC5B;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAc/C;AAaD,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI5D;AAqDD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,MAAM,EAAE,GACf,MAAM,CAyCR;AAKD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAQ5E;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAI3F;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAqBhG;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,sBAAsB,EAAE,CAYvG;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAkB3E"}
|