@public-ui/visual-tests 2.2.11-rc.0 → 2.2.11-rc.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@public-ui/visual-tests",
3
- "version": "2.2.11-rc.0",
3
+ "version": "2.2.11-rc.1",
4
4
  "license": "EUPL-1.2",
5
5
  "homepage": "https://public-ui.github.io",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  "axe-playwright": "2.1.0",
30
30
  "portfinder": "1.0.35",
31
31
  "serve": "14.2.4",
32
- "@public-ui/sample-react": "2.2.11-rc.0"
32
+ "@public-ui/sample-react": "2.2.11-rc.1"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@babel/eslint-parser": "7.26.10",
@@ -36,21 +36,31 @@ test.use({
36
36
  },
37
37
  });
38
38
 
39
- const blocklist = [];
40
-
41
39
  ROUTES.forEach((options, route) => {
42
- if (blocklist.includes(route)) {
40
+ // Skip unnecessary axe tests
41
+ if (options?.axe?.skip === true) {
43
42
  return;
44
43
  }
45
44
  test(`snapshot for ${route}`, async ({ page }, testInfo) => {
46
45
  const outputPath = rename(testInfo.outputDir);
47
- await page.goto(`/#${route}?hideMenus`, { waitUntil: 'networkidle' });
48
- if (options?.viewportSize) {
49
- await page.setViewportSize(options.viewportSize);
46
+ const hideMenusParam = `${route.includes('?') ? '&' : '?'}hideMenus`;
47
+ await page.goto(`/#${route}${hideMenusParam}`);
48
+ await page.waitForLoadState('networkidle');
49
+ await page.addStyleTag({
50
+ content: `
51
+ * {
52
+ transition: none !important;
53
+ animation: none !important;
54
+ }
55
+ `,
56
+ });
57
+ if (options?.snapshot?.viewportSize) {
58
+ await page.setViewportSize(options?.snapshot?.viewportSize);
50
59
  }
51
- if (options?.waitForTimeout) {
52
- await page.waitForTimeout(options.waitForTimeout);
60
+ if (options?.snapshot?.waitForTimeout) {
61
+ await page.waitForTimeout(options?.snapshot?.waitForTimeout);
53
62
  }
63
+
54
64
  await injectAxe(page);
55
65
  await checkA11y(
56
66
  page,
@@ -67,7 +77,7 @@ ROUTES.forEach((options, route) => {
67
77
  html: true,
68
78
  },
69
79
  },
70
- options?.axe?.skipFailures ?? true,
80
+ options?.axe?.skipFailures ?? false,
71
81
  'html',
72
82
  {
73
83
  outputDirPath: outputPath.replace(/\/[^/]+$/, ''),
@@ -3,521 +3,279 @@ export const ROUTES = new Map();
3
3
  /**
4
4
  * Actually we support the following options:
5
5
  *
6
- * Details: https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1
7
- * - fullPage: boolean (Default: true)
8
- * - maxDiffPixelRatio: number (Default: undefined)
9
- * - maxDiffPixels: number (Default: undefined)
10
- * - threshold: number (Default: undefined)
11
- * - timeout: number (Default: 0)
12
- *
13
- * To set the viewport size, use the following options:
14
- * - viewportSize: { width, height } (Default: 800x600)
6
+ * Axe options:
7
+ * - axe:
8
+ * - skip: boolean (Default: false)
9
+ * - skipFailures: boolean (Default: false)
15
10
  *
11
+ * Snapshot options:
12
+ * - snapshot:
13
+ * - options:
14
+ * - maxDiffPixelRatio: number (Default: 0)
15
+ * - skip: boolean (Default: false)
16
+ * - viewportSize:
17
+ * - width (Default: 800)
18
+ * - height (Default: 600)
19
+ * - waitForTimeout: number (Default: 15000)
20
+ * - zoom:
21
+ * - options:
22
+ * - maxDiffPixelRatio: number (Default: 0)
23
+ * - skip: boolean (Default: false)
16
24
  */
17
25
 
18
- ROUTES.set('abbr/basic', {
19
- axe: {
20
- skipFailures: false,
21
- },
22
- });
23
- ROUTES.set('accordion/basic', null);
24
- ROUTES.set('accordion/headlines', {
25
- axe: {
26
- skipFailures: false,
27
- },
28
- });
29
- ROUTES.set('alert/basic', {
30
- axe: {
31
- skipFailures: false,
32
- },
33
- });
34
- ROUTES.set('alert/card-msg', {
35
- axe: {
36
- skipFailures: false,
37
- },
38
- });
39
- ROUTES.set('alert/html', {
40
- axe: {
41
- skipFailures: false,
42
- },
43
- });
44
- ROUTES.set('avatar/basic', {
45
- axe: {
46
- skipFailures: false,
47
- },
48
- });
49
- ROUTES.set('badge/basic', null);
50
- ROUTES.set('badge/button', null);
51
- ROUTES.set('breadcrumb/basic', {
52
- axe: {
53
- skipFailures: false,
54
- },
55
- });
56
- ROUTES.set('button-group/basic', {
57
- axe: {
58
- skipFailures: false,
59
- },
60
- });
61
- ROUTES.set('button-link/basic', {
62
- axe: {
63
- skipFailures: false,
64
- },
65
- });
66
- ROUTES.set('button-link/icons', {
67
- axe: {
68
- skipFailures: false,
69
- },
70
- });
71
- ROUTES.set('button-link/image', {
72
- axe: {
73
- skipFailures: false,
74
- },
75
- });
76
- ROUTES.set('button/basic', {
77
- axe: {
78
- skipFailures: false,
79
- },
80
- });
81
- ROUTES.set('button/icons', {
82
- axe: {
83
- skipFailures: false,
84
- },
85
- });
86
- ROUTES.set('button/width', {
87
- axe: {
88
- skipFailures: false,
89
- },
90
- });
91
- ROUTES.set('button/access-key', {
92
- axe: {
93
- skipFailures: false,
94
- },
95
- });
96
- ROUTES.set('button/baselined', {
97
- axe: {
98
- skipFailures: false,
99
- },
100
- });
101
- ROUTES.set('button/short-key', {
102
- axe: {
103
- skipFailures: false,
104
- },
105
- });
106
- ROUTES.set('card/basic', {
107
- axe: {
108
- skipFailures: false,
109
- },
110
- });
111
- ROUTES.set('combobox/basic', {
112
- axe: {
113
- skipFailures: false,
114
- },
115
- });
116
- ROUTES.set('details/basic', {
117
- axe: {
118
- skipFailures: false,
119
- },
120
- });
26
+ ROUTES.set('abbr/basic');
27
+ ROUTES.set('accordion/basic');
28
+ ROUTES.set('accordion/headlines');
29
+ ROUTES.set('alert/basic');
30
+ ROUTES.set('alert/card-msg');
31
+ ROUTES.set('alert/html');
32
+ ROUTES.set('avatar/basic');
33
+ ROUTES.set('badge/basic');
34
+ ROUTES.set('badge/button');
35
+ ROUTES.set('breadcrumb/basic');
36
+ ROUTES.set('button-group/basic');
37
+ ROUTES.set('button-link/basic');
38
+ ROUTES.set('button-link/icons');
39
+ ROUTES.set('button-link/image');
40
+ ROUTES.set('button/basic');
41
+ ROUTES.set('button/icons');
42
+ ROUTES.set('button/width');
43
+ ROUTES.set('button/access-key');
44
+ ROUTES.set('button/baselined');
45
+ ROUTES.set('button/short-key');
46
+ ROUTES.set('card/basic');
47
+ ROUTES.set('combobox/basic');
48
+ ROUTES.set('details/basic');
121
49
  ROUTES.set('drawer/basic?align=left', {
122
- viewportSize: {
123
- width: 1920,
124
- height: 600,
50
+ snapshot: {
51
+ viewportSize: {
52
+ width: 1920,
53
+ height: 600,
54
+ },
125
55
  },
126
56
  });
127
57
  ROUTES.set('drawer/basic?align=top', {
128
- viewportSize: {
129
- width: 800,
130
- height: 600,
58
+ snapshot: {
59
+ viewportSize: {
60
+ width: 800,
61
+ height: 600,
62
+ },
131
63
  },
132
64
  });
133
65
  ROUTES.set('drawer/basic?align=right', {
134
- viewportSize: {
135
- width: 1920,
136
- height: 600,
66
+ snapshot: {
67
+ viewportSize: {
68
+ width: 1920,
69
+ height: 600,
70
+ },
137
71
  },
138
72
  });
139
73
  ROUTES.set('drawer/basic?align=bottom', {
140
- viewportSize: {
141
- width: 800,
142
- height: 600,
143
- },
144
- });
145
- ROUTES.set('form/basic', {
146
- axe: {
147
- skipFailures: false,
148
- },
149
- });
150
- ROUTES.set('form/error-list', {
151
- axe: {
152
- skipFailures: false,
153
- },
154
- });
155
- ROUTES.set('heading/badge', {
156
- axe: {
157
- skipFailures: false,
158
- },
159
- });
160
- ROUTES.set('heading/basic', {
161
- axe: {
162
- skipFailures: false,
163
- },
164
- });
165
- ROUTES.set('heading/paragraph', {
166
- axe: {
167
- skipFailures: false,
168
- },
169
- });
170
- ROUTES.set('icon/basic', {
171
- axe: {
172
- skipFailures: false,
173
- },
174
- });
175
- ROUTES.set('image/basic', {
176
- axe: {
177
- skipFailures: false,
178
- },
179
- });
180
- ROUTES.set('indented-text/basic', {
181
- axe: {
182
- skipFailures: false,
183
- },
184
- });
185
- ROUTES.set('input-checkbox/basic', null);
186
- ROUTES.set('input-checkbox/button', null);
187
- ROUTES.set('input-checkbox/switch', null);
188
- ROUTES.set('input-color/basic', null);
189
- ROUTES.set('input-date/basic', null);
190
- ROUTES.set('input-email/basic', null);
191
- ROUTES.set('input-file/basic', null);
192
- ROUTES.set('input-number/basic', null);
193
- ROUTES.set('input-password/basic', null);
194
- ROUTES.set('input-password/show-password', null);
195
- ROUTES.set('input-radio/basic', null);
196
- ROUTES.set('input-radio/horizontal', null);
197
- ROUTES.set('input-radio/object', null);
198
- ROUTES.set('input-range/basic', null);
199
- ROUTES.set('input-text/basic', null);
200
- ROUTES.set('input-text/focus', null);
201
- ROUTES.set('kolibri/basic', {
202
- axe: {
203
- skipFailures: false,
204
- },
205
- });
206
- ROUTES.set('link-button/basic', {
207
- axe: {
208
- skipFailures: false,
209
- },
210
- });
211
- ROUTES.set('link-group/basic', {
212
- axe: {
213
- skipFailures: false,
214
- },
215
- });
216
- ROUTES.set('link-group/horizontal', {
217
- axe: {
218
- skipFailures: false,
219
- },
220
- });
221
- ROUTES.set('link/basic', {
222
- axe: {
223
- skipFailures: false,
224
- },
225
- });
226
- ROUTES.set('link/icons', {
227
- axe: {
228
- skipFailures: false,
229
- },
230
- });
231
- ROUTES.set('link/image', {
232
- axe: {
233
- skipFailures: false,
234
- },
235
- });
236
- ROUTES.set('link/target', {
237
- axe: {
238
- skipFailures: false,
239
- },
240
- });
241
- ROUTES.set('modal/basic', {
242
- axe: {
243
- skipFailures: false,
244
- },
245
- });
74
+ snapshot: {
75
+ viewportSize: {
76
+ width: 800,
77
+ height: 600,
78
+ },
79
+ },
80
+ });
81
+ ROUTES.set('form/basic');
82
+ ROUTES.set('form/error-list');
83
+ ROUTES.set('heading/badge');
84
+ ROUTES.set('heading/basic');
85
+ ROUTES.set('heading/paragraph');
86
+ ROUTES.set('icon/basic');
87
+ ROUTES.set('image/basic');
88
+ ROUTES.set('indented-text/basic');
89
+ ROUTES.set('input-checkbox/basic');
90
+ ROUTES.set('input-checkbox/button');
91
+ ROUTES.set('input-checkbox/switch');
92
+ ROUTES.set('input-color/basic');
93
+ ROUTES.set('input-date/basic');
94
+ ROUTES.set('input-email/basic');
95
+ ROUTES.set('input-file/basic');
96
+ ROUTES.set('input-number/basic');
97
+ ROUTES.set('input-password/basic');
98
+ ROUTES.set('input-password/show-password');
99
+ ROUTES.set('input-radio/basic');
100
+ ROUTES.set('input-radio/horizontal');
101
+ ROUTES.set('input-radio/object');
102
+ ROUTES.set('input-range/basic');
103
+ ROUTES.set('input-text/basic', {
104
+ axe: {
105
+ skipFailures: true,
106
+ },
107
+ });
108
+ ROUTES.set('input-text/focus');
109
+ ROUTES.set('kolibri/basic');
110
+ ROUTES.set('link-button/basic');
111
+ ROUTES.set('link-group/basic');
112
+ ROUTES.set('link-group/horizontal');
113
+ ROUTES.set('link/basic');
114
+ ROUTES.set('link/icons');
115
+ ROUTES.set('link/image');
116
+ ROUTES.set('link/target');
117
+ ROUTES.set('modal/basic');
246
118
  ROUTES.set('modal/basic?show-modal=true', {
247
- viewportSize: {
248
- width: 1920,
249
- height: 600,
119
+ snapshot: {
120
+ viewportSize: {
121
+ width: 1920,
122
+ height: 600,
123
+ },
250
124
  },
251
125
  });
252
126
 
253
- ROUTES.set('nav/aria-current', {
254
- axe: {
255
- skipFailures: false,
256
- },
257
- });
258
- ROUTES.set('nav/basic', null);
259
- ROUTES.set('nav/horizontal', {
260
- axe: {
261
- skipFailures: false,
262
- },
263
- });
264
- ROUTES.set('pagination/basic', {
265
- axe: {
266
- skipFailures: false,
267
- },
268
- });
269
- ROUTES.set('progress/basic', {
270
- axe: {
271
- skipFailures: false,
272
- },
273
- });
274
- ROUTES.set('quote/basic', {
275
- axe: {
276
- skipFailures: false,
277
- },
278
- });
279
- ROUTES.set('quote/block', {
280
- axe: {
281
- skipFailures: false,
282
- },
283
- });
284
- ROUTES.set('select/basic', null);
285
- ROUTES.set('skip-nav/basic', {
286
- axe: {
287
- skipFailures: false,
288
- },
289
- });
290
- ROUTES.set('spin/basic', {
291
- axe: {
292
- skipFailures: false,
293
- },
294
- });
127
+ ROUTES.set('nav/aria-current');
128
+ ROUTES.set('nav/basic');
129
+ ROUTES.set('nav/horizontal');
130
+ ROUTES.set('pagination/basic');
131
+ ROUTES.set('progress/basic');
132
+ ROUTES.set('quote/basic');
133
+ ROUTES.set('quote/block');
134
+ ROUTES.set('select/basic');
135
+ ROUTES.set('skip-nav/basic');
136
+ ROUTES.set('spin/basic');
295
137
  ROUTES.set('single-select/basic', {
296
138
  axe: {
297
- skipFailures: false,
298
- },
299
- });
300
- ROUTES.set('spin/custom', {
301
- axe: {
302
- skipFailures: false,
303
- },
304
- });
305
- ROUTES.set('spin/cycle', {
306
- axe: {
307
- skipFailures: false,
308
- },
309
- });
310
- ROUTES.set('split-button/basic', {
311
- axe: {
312
- skipFailures: false,
313
- },
314
- });
315
- ROUTES.set('table/column-alignment', {
316
- axe: {
317
- skipFailures: false,
318
- },
319
- });
320
- ROUTES.set('table/sort-data', {
321
- axe: {
322
- skipFailures: false,
323
- },
324
- });
325
- ROUTES.set('table/with-footer', {
326
- axe: {
327
- skipFailures: false,
328
- },
329
- });
330
- ROUTES.set('table/with-pagination', {
331
- axe: {
332
- skipFailures: false,
333
- },
334
- });
335
- ROUTES.set('table/pagination-position', {
336
- axe: {
337
- skipFailures: false,
338
- },
339
- });
340
- ROUTES.set('table/complex-headers', {
341
- axe: {
342
- skipFailures: false,
343
- },
344
- });
345
- ROUTES.set('table/stateful-with-selection', {
346
- axe: {
347
- skipFailures: false,
348
- },
349
- });
350
- ROUTES.set('table/stateful-with-single-selection', {
351
- axe: {
352
- skipFailures: false,
353
- },
354
- });
355
- ROUTES.set('table/stateless-with-single-selection', {
356
- axe: {
357
- skipFailures: false,
358
- },
359
- });
360
- ROUTES.set('table/stateless-with-selection', {
361
- axe: {
362
- skipFailures: false,
363
- },
364
- });
365
- ROUTES.set('table/stateless', {
366
- axe: {
367
- skipFailures: false,
368
- },
369
- });
370
- ROUTES.set('tabs/basic', {
371
- axe: {
372
- skipFailures: false,
373
- },
374
- });
375
- ROUTES.set('tabs/icons-only', {
376
- axe: {
377
- skipFailures: false,
378
- },
379
- });
380
- ROUTES.set('textarea/adjust-height', {
381
- axe: {
382
- skipFailures: false,
383
- },
384
- });
385
- ROUTES.set('textarea/basic', null);
386
- ROUTES.set('textarea/resize', {
387
- axe: {
388
- skipFailures: false,
389
- },
390
- });
391
- ROUTES.set('textarea/rows', {
392
- axe: {
393
- skipFailures: false,
394
- },
395
- });
396
- ROUTES.set('textarea/with-counter', {
397
- axe: {
398
- skipFailures: false,
399
- },
400
- });
401
- ROUTES.set('toast/basic', {
402
- axe: {
403
- skipFailures: false,
404
- },
405
- });
139
+ skipFailures: true,
140
+ },
141
+ });
142
+ ROUTES.set('spin/custom');
143
+ ROUTES.set('spin/cycle');
144
+ ROUTES.set('split-button/basic');
145
+ ROUTES.set('table/column-alignment');
146
+ ROUTES.set('table/sort-data');
147
+ ROUTES.set('table/with-footer');
148
+ ROUTES.set('table/with-pagination');
149
+ ROUTES.set('table/pagination-position');
150
+ ROUTES.set('table/complex-headers');
151
+ ROUTES.set('table/stateful-with-selection');
152
+ ROUTES.set('table/stateful-with-single-selection');
153
+ ROUTES.set('table/stateless-with-single-selection');
154
+ ROUTES.set('table/stateless-with-selection');
155
+ ROUTES.set('table/stateless');
156
+ ROUTES.set('tabs/basic');
157
+ ROUTES.set('tabs/icons-only');
158
+ ROUTES.set('textarea/adjust-height');
159
+ ROUTES.set('textarea/basic');
160
+ ROUTES.set('textarea/resize');
161
+ ROUTES.set('textarea/rows');
162
+ ROUTES.set('textarea/with-counter');
163
+ ROUTES.set('toast/basic');
406
164
  ROUTES.set('toast/basic?type=info', {
407
- viewportSize: {
408
- width: 1920,
409
- height: 600,
165
+ snapshot: {
166
+ viewportSize: {
167
+ width: 1920,
168
+ height: 600,
169
+ },
410
170
  },
411
171
  });
412
172
  ROUTES.set('toast/basic?type=success', {
413
- viewportSize: {
414
- width: 1920,
415
- height: 600,
173
+ snapshot: {
174
+ viewportSize: {
175
+ width: 1920,
176
+ height: 600,
177
+ },
416
178
  },
417
179
  });
418
180
  ROUTES.set('toast/basic?type=warning', {
419
- viewportSize: {
420
- width: 1920,
421
- height: 600,
181
+ snapshot: {
182
+ viewportSize: {
183
+ width: 1920,
184
+ height: 600,
185
+ },
422
186
  },
423
187
  });
424
188
  ROUTES.set('toast/basic?type=error', {
425
- viewportSize: {
426
- width: 1920,
427
- height: 600,
189
+ snapshot: {
190
+ viewportSize: {
191
+ width: 1920,
192
+ height: 600,
193
+ },
428
194
  },
429
195
  });
430
196
  ROUTES.set('toast/basic?variant=msg', {
431
- viewportSize: {
432
- width: 1920,
433
- height: 600,
197
+ snapshot: {
198
+ viewportSize: {
199
+ width: 1920,
200
+ height: 600,
201
+ },
434
202
  },
435
203
  });
436
204
  ROUTES.set('toast/basic?variant=card', {
437
- viewportSize: {
438
- width: 1920,
439
- height: 600,
205
+ snapshot: {
206
+ viewportSize: {
207
+ width: 1920,
208
+ height: 600,
209
+ },
440
210
  },
441
211
  });
442
212
 
443
213
  ROUTES.set('toast/basic?type=default&variant=msg', {
444
- viewportSize: {
445
- width: 1920,
446
- height: 600,
214
+ snapshot: {
215
+ viewportSize: {
216
+ width: 1920,
217
+ height: 600,
218
+ },
447
219
  },
448
220
  });
449
221
  ROUTES.set('toast/basic?type=info&variant=msg', {
450
- viewportSize: {
451
- width: 1920,
452
- height: 600,
222
+ snapshot: {
223
+ viewportSize: {
224
+ width: 1920,
225
+ height: 600,
226
+ },
453
227
  },
454
228
  });
455
229
  ROUTES.set('toast/basic?type=success&variant=msg', {
456
- viewportSize: {
457
- width: 1920,
458
- height: 600,
230
+ snapshot: {
231
+ viewportSize: {
232
+ width: 1920,
233
+ height: 600,
234
+ },
459
235
  },
460
236
  });
461
237
  ROUTES.set('toast/basic?type=warning&variant=msg', {
462
- viewportSize: {
463
- width: 1920,
464
- height: 600,
238
+ snapshot: {
239
+ viewportSize: {
240
+ width: 1920,
241
+ height: 600,
242
+ },
465
243
  },
466
244
  });
467
245
  ROUTES.set('toast/basic?type=error&variant=msg', {
468
- viewportSize: {
469
- width: 1920,
470
- height: 600,
246
+ snapshot: {
247
+ viewportSize: {
248
+ width: 1920,
249
+ height: 600,
250
+ },
471
251
  },
472
252
  });
473
253
 
474
- ROUTES.set('toolbar/basic', {
475
- axe: {
476
- skipFailures: false,
477
- },
478
- });
479
- ROUTES.set('toolbar/disabled', {
480
- axe: {
481
- skipFailures: false,
482
- },
483
- });
254
+ ROUTES.set('toolbar/basic');
255
+ ROUTES.set('toolbar/disabled');
484
256
  ROUTES.set('tree/basic/home', {
485
257
  axe: {
486
- skipFailures: false,
487
- },
488
- });
489
- ROUTES.set('version/basic', {
490
- axe: {
491
- skipFailures: false,
492
- },
493
- });
494
- ROUTES.set('version/context', {
495
- axe: {
496
- skipFailures: false,
497
- },
498
- });
499
- ROUTES.set('scenarios/appointment-form', {
500
- axe: {
501
- skipFailures: false,
258
+ skipFailures: true,
502
259
  },
503
260
  });
261
+ ROUTES.set('version/basic');
262
+ ROUTES.set('version/context');
263
+ ROUTES.set('scenarios/appointment-form');
504
264
  ROUTES.set('scenarios/static-form', {
505
265
  axe: {
506
- skipFailures: false,
507
- },
508
- });
509
- ROUTES.set('scenarios/disabled-interactive-scenario', {
510
- axe: {
511
- skipFailures: false,
266
+ skipFailures: true,
512
267
  },
513
268
  });
269
+ ROUTES.set('scenarios/disabled-interactive-scenario');
514
270
  ROUTES.set('scenarios/same-height-of-all-interactive-elements', {
515
271
  axe: {
516
- skipFailures: false,
272
+ skipFailures: true,
517
273
  },
518
- viewportSize: {
519
- width: 4000,
520
- height: 0,
274
+ snapshot: {
275
+ viewportSize: {
276
+ width: 4000,
277
+ height: 0,
278
+ },
521
279
  },
522
280
  });
523
281
 
@@ -542,5 +300,9 @@ ROUTES.set('scenarios/focus-elements?component=link');
542
300
  ROUTES.set('scenarios/focus-elements?component=linkButton');
543
301
  ROUTES.set('scenarios/focus-elements?component=select');
544
302
  ROUTES.set('scenarios/focus-elements?component=selectMultiple');
545
- ROUTES.set('scenarios/focus-elements?component=singleSelect');
303
+ ROUTES.set('scenarios/focus-elements?component=singleSelect', {
304
+ axe: {
305
+ skipFailures: true,
306
+ },
307
+ });
546
308
  ROUTES.set('scenarios/focus-elements?component=textarea');
@@ -21,6 +21,10 @@ const DEFAULT_SNAPSHOT_OPTIONS = {
21
21
  };
22
22
 
23
23
  ROUTES.forEach((options, route) => {
24
+ // Skip unnecessary snapshot tests
25
+ if (options?.snapshot?.skip === true && options?.snapshot?.zoom?.skip === true) {
26
+ return;
27
+ }
24
28
  test(`snapshot for ${route}`, async ({ page }) => {
25
29
  const hideMenusParam = `${route.includes('?') ? '&' : '?'}hideMenus`;
26
30
  await page.goto(`/#${route}${hideMenusParam}`);
@@ -33,11 +37,11 @@ ROUTES.forEach((options, route) => {
33
37
  }
34
38
  `,
35
39
  });
36
- if (options?.viewportSize) {
37
- await page.setViewportSize(options.viewportSize);
40
+ if (options?.snapshot?.viewportSize) {
41
+ await page.setViewportSize(options?.snapshot?.viewportSize);
38
42
  }
39
- if (options?.waitForTimeout) {
40
- await page.waitForTimeout(options.waitForTimeout);
43
+ if (options?.snapshot?.waitForTimeout) {
44
+ await page.waitForTimeout(options?.snapshot?.waitForTimeout);
41
45
  }
42
46
 
43
47
  /**
@@ -45,20 +49,29 @@ ROUTES.forEach((options, route) => {
45
49
  */
46
50
  const snapshotName = `snapshot-for-${route.replace(/(\/|\?|&|=)/g, '-')}`;
47
51
 
48
- await expect(page).toHaveScreenshot(`${snapshotName}.png`, {
52
+ const SNAPSHOT_OPTIONS = {
49
53
  ...DEFAULT_SNAPSHOT_OPTIONS,
50
- ...options,
51
- });
52
- await page.evaluate(() => {
53
- // eslint-disable-next-line no-undef
54
- document.body.style.zoom = '400%';
55
- // document.body.style.transform = 'scale(4)';
56
- // document.body.style.transformOrigin = 'top left';
57
- // document.body.style.width = '25vw';
58
- });
59
- await expect(page).toHaveScreenshot(`${snapshotName}-zoom.png`, {
60
- ...DEFAULT_SNAPSHOT_OPTIONS,
61
- ...options,
62
- });
54
+ ...options?.snapshot?.options,
55
+ };
56
+
57
+ // Skip unnecessary normal tests
58
+ if (options?.snapshot?.skip !== true) {
59
+ await expect(page).toHaveScreenshot(`${snapshotName}.png`, SNAPSHOT_OPTIONS);
60
+ }
61
+
62
+ // Skip unnecessary zoom tests
63
+ if (options?.snapshot?.zoom?.skip !== true) {
64
+ await page.evaluate(() => {
65
+ // eslint-disable-next-line no-undef
66
+ document.body.style.zoom = '400%';
67
+ // document.body.style.transform = 'scale(4)';
68
+ // document.body.style.transformOrigin = 'top left';
69
+ // document.body.style.width = '25vw';
70
+ });
71
+ await expect(page).toHaveScreenshot(`${snapshotName}-zoom.png`, {
72
+ ...SNAPSHOT_OPTIONS,
73
+ ...options?.snapshot?.zoom?.options,
74
+ });
75
+ }
63
76
  });
64
77
  });