diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ffdf3cf7f..fe0a1d8a1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -63,4 +63,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: failed-results - path: visual-regression/failed-results/ + path: | + visual-regression/failed-results/ diff --git a/examples/common/ExampleSettings.ts b/examples/common/ExampleSettings.ts index ecba6e40a..45ce8b856 100644 --- a/examples/common/ExampleSettings.ts +++ b/examples/common/ExampleSettings.ts @@ -41,6 +41,13 @@ export interface SnapshotOptions { w: number; h: number; }; + /** + * Maximum number of pixels allowed to differ before the snapshot is + * considered a failure. Defaults to 10 to absorb sub-pixel rounding + * differences across platforms (e.g. macOS vs Linux headless Chromium). + * Set to 0 to require a pixel-perfect match. + */ + maxDiffPixels?: number; } export interface ExampleSettings { diff --git a/examples/index.ts b/examples/index.ts index d8398acb8..ea6331c77 100644 --- a/examples/index.ts +++ b/examples/index.ts @@ -472,9 +472,17 @@ async function runAutomation( }, memMonitor: null, }; - await automation(exampleSettings); - testRoot.parent = null; - testRoot.destroy(); + try { + await automation(exampleSettings); + } catch (err) { + console.error( + `Automation error in test '${testName}':`, + (err as Error).message, + ); + } finally { + testRoot.parent = null; + testRoot.destroy(); + } } } } diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/alignment-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/alignment-1.png new file mode 100644 index 000000000..9fc697be7 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/alignment-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-1.png new file mode 100644 index 000000000..fff35dd7b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-blending-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-blending-1.png new file mode 100644 index 000000000..469fe37a8 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/alpha-blending-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-1.png new file mode 100644 index 000000000..0c38061fd Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-2.png new file mode 100644 index 000000000..917c34193 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-3.png new file mode 100644 index 000000000..f17c49bc8 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a1-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-1.png new file mode 100644 index 000000000..989190c36 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-2.png new file mode 100644 index 000000000..7feffc068 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-3.png new file mode 100644 index 000000000..c7fa97029 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a2-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-1.png new file mode 100644 index 000000000..b05455055 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-2.png new file mode 100644 index 000000000..1647f15d8 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/animation-events_a3-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-1.png new file mode 100644 index 000000000..782726609 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-2.png new file mode 100644 index 000000000..24afb1a18 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/autosize-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-1.png new file mode 100644 index 000000000..b28c806cc Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-2.png new file mode 100644 index 000000000..155f1519a Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-3.png new file mode 100644 index 000000000..3b59d4d5f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clear-color-setting-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-1.png new file mode 100644 index 000000000..94966c639 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-2.png new file mode 100644 index 000000000..ad1343d11 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-3.png new file mode 100644 index 000000000..4fe5edb13 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/clipping-mutations-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-1.png new file mode 100644 index 000000000..0d86f2be7 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-2.png new file mode 100644 index 000000000..34573a033 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/destroy-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-1.png new file mode 100644 index 000000000..93bbfa9f2 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-2.png new file mode 100644 index 000000000..174e9ddb5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/quads-rendered-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-1.png new file mode 100644 index 000000000..c17566f6f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-2.png new file mode 100644 index 000000000..1db1c6645 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-3.png new file mode 100644 index 000000000..a65e0629c Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-4.png new file mode 100644 index 000000000..cb6da9f49 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-5.png new file mode 100644 index 000000000..3b1fa60d7 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-6.png b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-6.png new file mode 100644 index 000000000..cb6da9f49 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/render-settings-6.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-1.png new file mode 100644 index 000000000..363560985 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-2.png new file mode 100644 index 000000000..0a6717921 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-3.png new file mode 100644 index 000000000..2fb82051b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-4.png new file mode 100644 index 000000000..e536c64de Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-5.png new file mode 100644 index 000000000..a35a92b3f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/resize-mode-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-1.png new file mode 100644 index 000000000..f9b213ed5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-2.png new file mode 100644 index 000000000..d19041301 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-3.png new file mode 100644 index 000000000..f9b213ed5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-4.png new file mode 100644 index 000000000..f9b213ed5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-5.png new file mode 100644 index 000000000..f9b213ed5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-6.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-6.png new file mode 100644 index 000000000..41bbfae36 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-dimension-6.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-spritemap-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-spritemap-1.png new file mode 100644 index 000000000..879c45cc0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/rtt-spritemap-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-1.png new file mode 100644 index 000000000..2844ff6ee Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-2.png new file mode 100644 index 000000000..4f8472086 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-3.png new file mode 100644 index 000000000..0a24e8326 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/scaling-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-animation_startup-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-animation_startup-1.png new file mode 100644 index 000000000..f128c1fc0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-animation_startup-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-1.png new file mode 100644 index 000000000..29ce812dc Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-align-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-align-1.png new file mode 100644 index 000000000..b7d036dca Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-align-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-gap-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-gap-1.png new file mode 100644 index 000000000..ec70af198 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-border-gap-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-hole-punch-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-hole-punch-1.png new file mode 100644 index 000000000..a49f1d038 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-hole-punch-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-linear-gradient-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-linear-gradient-1.png new file mode 100644 index 000000000..a24fd945d Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-linear-gradient-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-1.png new file mode 100644 index 000000000..e01c52d54 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-1.png new file mode 100644 index 000000000..ba9708171 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-2.png new file mode 100644 index 000000000..31f24a37d Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-3.png new file mode 100644 index 000000000..f769fe7b6 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-4.png new file mode 100644 index 000000000..1a5f2cbf3 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-5.png new file mode 100644 index 000000000..3612f76ca Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-radial-gradient-w-h-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-1.png new file mode 100644 index 000000000..2ead61d52 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-circles-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-circles-1.png new file mode 100644 index 000000000..bc47763f2 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-rounded-circles-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/shader-shadow-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-shadow-1.png new file mode 100644 index 000000000..f952605a0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/shader-shadow-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-1.png new file mode 100644 index 000000000..1e7aa064e Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-2.png new file mode 100644 index 000000000..f2569ec8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-3.png new file mode 100644 index 000000000..1c428711d Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-4.png new file mode 100644 index 000000000..3e1723793 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-5.png new file mode 100644 index 000000000..daf80c7ec Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-6.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-6.png new file mode 100644 index 000000000..bb62047eb Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-align-6.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-1.png new file mode 100644 index 000000000..fa08c7019 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-2.png new file mode 100644 index 000000000..82ee83954 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-canvas-font-no-metrics-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-1.png new file mode 100644 index 000000000..eca89cbfb Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-2.png new file mode 100644 index 000000000..4988f5db8 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-3.png new file mode 100644 index 000000000..51b4b7ecb Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-contain-adv-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-1.png new file mode 100644 index 000000000..685778d87 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-2.png new file mode 100644 index 000000000..6963ca4ef Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-3.png new file mode 100644 index 000000000..a01ddcd2b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-1.png new file mode 100644 index 000000000..1e7aa064e Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-2.png new file mode 100644 index 000000000..230af2613 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-3.png new file mode 100644 index 000000000..9857f4dd0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-layout-consistency-modified-metrics-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-mixed-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-mixed-1.png new file mode 100644 index 000000000..b13b4da6b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-mixed-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-ssdf-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-ssdf-1.png new file mode 100644 index 000000000..748816b80 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-ssdf-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-1.png new file mode 100644 index 000000000..87dfe0be0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-2.png new file mode 100644 index 000000000..b4816e7e3 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-3.png new file mode 100644 index 000000000..d8b1557c9 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/text-zwsp-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-autosize-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-autosize-1.png new file mode 100644 index 000000000..724c88ff6 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-autosize-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-base64-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-base64-1.png new file mode 100644 index 000000000..a592b552b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-base64-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-factory-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-factory-1.png new file mode 100644 index 000000000..32593ad35 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-factory-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-source-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-source-1.png new file mode 100644 index 000000000..929268fbc Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-source-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-spritemap-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-spritemap-1.png new file mode 100644 index 000000000..72d5262f0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-spritemap-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/texture-svg-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-svg-1.png new file mode 100644 index 000000000..2bc34649d Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/texture-svg-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/textures-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/textures-1.png new file mode 100644 index 000000000..92f198002 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/textures-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-1.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-10.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-10.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-10.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-11.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-11.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-11.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-12.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-12.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-12.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-2.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-3.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-4.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-5.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-6.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-6.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-6.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-7.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-7.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-7.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-8.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-8.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-8.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-9.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-9.png new file mode 100644 index 000000000..6ee2a4d8f Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-boundsmargin-9.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-1.png new file mode 100644 index 000000000..ee86aeaf0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-10.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-10.png new file mode 100644 index 000000000..12cceeb7b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-10.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-11.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-11.png new file mode 100644 index 000000000..85629ebae Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-11.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-12.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-12.png new file mode 100644 index 000000000..643bd0ca0 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-12.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-13.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-13.png new file mode 100644 index 000000000..a423f760d Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-13.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-14.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-14.png new file mode 100644 index 000000000..f28644bca Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-14.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-15.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-15.png new file mode 100644 index 000000000..336fb7850 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-15.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-16.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-16.png new file mode 100644 index 000000000..12cceeb7b Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-16.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-17.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-17.png new file mode 100644 index 000000000..ecec32781 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-17.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-18.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-18.png new file mode 100644 index 000000000..a6417c2e5 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-18.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-2.png new file mode 100644 index 000000000..9d2a2a452 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-3.png new file mode 100644 index 000000000..3f2850fb4 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-4.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-4.png new file mode 100644 index 000000000..3b5f862cd Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-4.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-5.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-5.png new file mode 100644 index 000000000..8ed6aa59a Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-5.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-6.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-6.png new file mode 100644 index 000000000..441a67733 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-6.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-7.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-7.png new file mode 100644 index 000000000..10c8dbaee Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-7.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-8.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-8.png new file mode 100644 index 000000000..6b6158a79 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-8.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-9.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-9.png new file mode 100644 index 000000000..f28644bca Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-events-9.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-1.png new file mode 100644 index 000000000..335130dc7 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-1.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-2.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-2.png new file mode 100644 index 000000000..16f82e6d4 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-2.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-3.png b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-3.png new file mode 100644 index 000000000..3d64100d6 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/viewport-largebound-3.png differ diff --git a/visual-regression/certified-snapshots/chromium-ci-canvas/zIndex-1.png b/visual-regression/certified-snapshots/chromium-ci-canvas/zIndex-1.png new file mode 100644 index 000000000..aaa9e6a97 Binary files /dev/null and b/visual-regression/certified-snapshots/chromium-ci-canvas/zIndex-1.png differ diff --git a/visual-regression/src/index.ts b/visual-regression/src/index.ts index 94e364c7a..fdb682e00 100644 --- a/visual-regression/src/index.ts +++ b/visual-regression/src/index.ts @@ -112,6 +112,14 @@ const argv = yargs(hideBin(process.argv)) default: '*', description: 'Tests to run ("*" wildcard pattern)', }, + renderMode: { + type: 'string', + alias: 'r', + default: runtimeEnv === 'ci' ? 'all' : 'webgl', + choices: ['webgl', 'canvas', 'all'], + description: + 'Renderer mode to test ("webgl", "canvas", or "all" for both)', + }, }) .parseSync(); @@ -148,6 +156,7 @@ async function dockerCiMode(): Promise { argv.skipBuild ? '--skipBuild' : '', argv.port ? `--port ${argv.port}` : '', argv.filter ? `--filter "${argv.filter}"` : '', + argv.renderMode ? `--renderMode ${argv.renderMode}` : '', ].join(' '); // Get the directory of the current file @@ -220,7 +229,17 @@ async function compareCaptureMode(): Promise { } // Run the tests - exitCode = await runTest('chromium'); + const renderModes: ('webgl' | 'canvas')[] = + argv.renderMode === 'all' + ? ['webgl', 'canvas'] + : [argv.renderMode as 'webgl' | 'canvas']; + exitCode = 0; + for (const mode of renderModes) { + const result = await runTest('chromium', mode); + if (result !== 0) { + exitCode = result; + } + } } finally { // Kill the serve-examples process serveExamplesChildProc.kill(); @@ -232,9 +251,13 @@ async function compareCaptureMode(): Promise { * Run the tests in capture or compare mode depending on the `argv.capture` flag * for a specific browser type. */ -async function runTest(browserType: 'chromium') { +async function runTest( + browserType: 'chromium', + renderMode: 'webgl' | 'canvas', +) { const paramString = Object.entries({ browser: browserType, + renderMode, overwrite: argv.overwrite, filter: argv.filter, RUNTIME_ENV: runtimeEnv, @@ -249,7 +272,9 @@ async function runTest(browserType: 'chromium') { ), ); - const snapshotSubDirName = `${browserType}-${runtimeEnv}`; + const snapshotSubDirName = `${browserType}-${runtimeEnv}${ + renderMode === 'canvas' ? '-canvas' : '' + }`; const snapshotSubDir = path.join(certifiedSnapshotDir, snapshotSubDirName); @@ -449,7 +474,7 @@ async function runTest(browserType: 'chromium') { // Go to the examples page await page.goto( - `http://localhost:${argv.port}/?automation=true&test=${argv.filter}`, + `http://localhost:${argv.port}/?automation=true&test=${argv.filter}&renderMode=${renderMode}`, ); return donePromise; diff --git a/visual-regression/src/snapshot.ts b/visual-regression/src/snapshot.ts index e78baa1e5..ca6450f9d 100644 --- a/visual-regression/src/snapshot.ts +++ b/visual-regression/src/snapshot.ts @@ -19,6 +19,13 @@ export interface SnapshotOptions { width: number; height: number; }; + /** + * Maximum number of pixels allowed to differ before the snapshot is + * considered a failure. Defaults to 10 to absorb sub-pixel rounding + * differences across platforms (e.g. macOS vs Linux headless Chromium). + * Set to 0 to require a pixel-perfect match. + */ + maxDiffPixels?: number; } interface CompareResult { @@ -95,7 +102,13 @@ export async function compareSnapshot( const expectedPng = await fs.promises.readFile(snapshotPath); const width = options.clip?.width || (1080 as number); const height = options.clip?.height || (1920 as number); - const result = compareBuffers(actualPng, expectedPng, width, height); + const result = compareBuffers( + actualPng, + expectedPng, + width, + height, + options.maxDiffPixels, + ); if (result.doesMatch) { console.log(chalk.green.bold('PASS!')); @@ -170,6 +183,7 @@ export function compareBuffers( expectedImageBuffer: Buffer, width: number, height: number, + maxDiffPixels = 10, ): CompareResult { const diff = new PNG({ width: width as number, height: height as number }); const actualImage = PNG.sync.read(actualImageBuffer); @@ -196,12 +210,14 @@ export function compareBuffers( { threshold: 0.8 }, // Adjust threshold for sensitivity ); - const doesMatch = count === 0; + const doesMatch = count <= maxDiffPixels; return { doesMatch, diffImageBuffer: doesMatch ? undefined : diff, - reason: doesMatch ? undefined : `${count} pixels differ`, + reason: doesMatch + ? undefined + : `${count} pixels differ (max allowed: ${maxDiffPixels})`, }; }