Skip to content

Commit 04eb080

Browse files
test: skip baseline rewrite on sub-threshold drift in update mode (#11628) (#11634)
Co-authored-by: Serhii Kulykov <iamkulykov@gmail.com>
1 parent bd04a45 commit 04eb080

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

patches/@web+test-runner-visual-regression+0.10.0.patch

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
diff --git a/node_modules/@web/test-runner-visual-regression/dist/visualDiffCommand.js b/node_modules/@web/test-runner-visual-regression/dist/visualDiffCommand.js
2+
index 08b4d27..423aa5a 100644
3+
--- a/node_modules/@web/test-runner-visual-regression/dist/visualDiffCommand.js
4+
+++ b/node_modules/@web/test-runner-visual-regression/dist/visualDiffCommand.js
5+
@@ -40,6 +40,22 @@ async function visualDiffCommand(options, image, name, { browser, testFile }) {
6+
name: baselineName,
7+
});
8+
if (options.update) {
9+
+ // Skip rewriting the baseline if the new image is already within the
10+
+ // configured diff threshold. Sub-perceptual drift (1-LSB Chromium
11+
+ // rasterizer rounding, anti-alias jitter on shadows / translucent
12+
+ // layers) leaves the existing baseline untouched, avoiding 800+
13+
+ // file rewrites on every browser bump.
14+
+ if (baselineImage) {
15+
+ const updateResult = await options.getImageDiff({
16+
+ name,
17+
+ baselineImage,
18+
+ image,
19+
+ options: options.diffOptions,
20+
+ });
21+
+ if (!updateResult.error && passesFailureThreshold(updateResult, options).passed) {
22+
+ return { diffPercentage: updateResult.diffPercentage, passed: true };
23+
+ }
24+
+ }
25+
await options.saveBaseline({
26+
filePath: resolveImagePath(baseDir, baselineName),
27+
baseDir,
128
diff --git a/node_modules/@web/test-runner-visual-regression/index.d.ts b/node_modules/@web/test-runner-visual-regression/index.d.ts
229
index f540538..5198ffa 100644
330
--- a/node_modules/@web/test-runner-visual-regression/index.d.ts

wtr-utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ const createVisualTestsConfig = (theme) => {
312312
getFailedName(args) {
313313
return getScreenshotFileName(args, 'failed');
314314
},
315+
diffOptions: { threshold: 0.2 },
315316
failureThreshold: 0.05,
316317
failureThresholdType: 'percent',
317318
update: process.env.TEST_ENV === 'update',

0 commit comments

Comments
 (0)