From a67440bee9f5e05a4a402479b55ed902ca76332c Mon Sep 17 00:00:00 2001 From: BRADSEC <7948876+bradsec@users.noreply.github.com> Date: Fri, 30 Oct 2026 09:32:10 +1000 Subject: [PATCH 1/2] test(e2e): run magic wand spec with reduced motion The marching ants animation repaints the selection overlay every frame. In CI's software-rendered WebKit on 2 vCPUs this starved the wand worker: the smooth slider rebuild took 4 to 5 s instead of about 0.5 s and the "smooth slider reshapes the current selection outline" poll hit its 5 s timeout on iPad. Reduced motion stops the ants; outline geometry and assertions are unchanged. --- e2e/magicwand.spec.mjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/e2e/magicwand.spec.mjs b/e2e/magicwand.spec.mjs index 94a6aac..6b984a4 100644 --- a/e2e/magicwand.spec.mjs +++ b/e2e/magicwand.spec.mjs @@ -2,6 +2,12 @@ import { expect, test } from "@playwright/test"; const SIZE = [160, 80]; +// The marching ants repaint the selection overlay every frame. In CI's +// software-rendered WebKit on 2 vCPUs that starves the wand worker, and a +// slider rebuild took 4 to 5 s instead of 0.5 s, past the 5 s expect +// timeout. Reduced motion stops the ants; the outline geometry is unchanged. +test.use({ contextOptions: { reducedMotion: "reduce" } }); + /** Two separate red blocks on a light background. */ async function loadTwoBlocks(page) { const base64 = await page.evaluate(async ([width, height]) => { From 02ec9b9318161ffffbca35c134646e66d9aeb056 Mon Sep 17 00:00:00 2001 From: BRADSEC <7948876+bradsec@users.noreply.github.com> Date: Fri, 30 Oct 2026 09:37:33 +1000 Subject: [PATCH 2/2] ci: upload hidden Playwright artifacts folder on failure --- .github/workflows/tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b71d955..2759573 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,6 +53,8 @@ jobs: with: name: playwright-artifacts-${{ matrix.shard }} path: .playwright-artifacts + # The folder name starts with a dot, so it counts as hidden. + include-hidden-files: true retention-days: 7 wasm: