From 7f898fdb6a4f1416da94836acc862d0f53301904 Mon Sep 17 00:00:00 2001 From: Florian Laabs Date: Fri, 23 Oct 2026 22:10:37 +0200 Subject: [PATCH 1/3] ci: run the browser checks in parallel The axe check opens up to four pages at once (A11Y_CONCURRENCY) and can check a share of the stories (A11Y_SHARD); CI splits the Vue and React Storybooks in halves. Playwright runs every test on its own (fullyParallel) with 75 % of the cores in CI, so the single big files (visual, css/parity) no longer run on one worker. Screenshots wait until nothing scrolls any more: the baseline of the native LogViewer (Follow) showed a list halfway to its end. Signed-off-by: Florian Laabs --- .github/workflows/ci.yml | 16 ++++++--- .../native-data-logviewer--playground.png | Bin 45896 -> 49971 bytes packages/parity/e2e/visual/visual.spec.ts | 19 +++++++++++ packages/parity/playwright.config.ts | 4 +++ packages/parity/scripts/storybook-a11y.ts | 32 +++++++++++++----- 5 files changed, 59 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c6701c..bd8c158 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,17 +73,23 @@ jobs: !apps/next/.next/cache/** # axe in a real browser against every story of the Vue, React, React Native and HTML Storybooks (all modes and themes) - # – one job per Storybook, so they run side by side + # – one job per Storybook, the two biggest split in halves (A11Y_SHARD), so they run side by side a11y: - name: a11y (${{ matrix.storybook }}) + name: a11y (${{ matrix.storybook }}${{ matrix.shard != '1/1' && format(' {0}', matrix.shard) || '' }}) needs: build runs-on: ubuntu-latest - timeout-minutes: 90 + timeout-minutes: 60 container: mcr.microsoft.com/playwright:v1.64.1-noble strategy: fail-fast: false matrix: - storybook: [vue, react, native, css] + include: + - { storybook: vue, shard: 1/2 } + - { storybook: vue, shard: 2/2 } + - { storybook: react, shard: 1/2 } + - { storybook: react, shard: 2/2 } + - { storybook: native, shard: 1/1 } + - { storybook: css, shard: 1/1 } steps: - uses: actions/checkout@v7 - uses: ./.github/actions/setup @@ -94,6 +100,8 @@ jobs: name: build - working-directory: packages/parity run: node scripts/storybook-a11y.ts ../${{ matrix.storybook }}/storybook-static + env: + A11Y_SHARD: ${{ matrix.shard }} # Keyboard/interaction tests in a real browser, each spec against Vue and React (e2e/native: React Native, # e2e/apps: the Nuxt and Next.js demo apps) diff --git a/packages/parity/e2e/visual/__screenshots__/native-data-logviewer--playground.png b/packages/parity/e2e/visual/__screenshots__/native-data-logviewer--playground.png index 1a1d186fdba5787ac9956e57b1a6667707fcc528..9138057c31b40350f137f93420192c515fe3b344 100644 GIT binary patch literal 49971 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 HKVJVQ9S>Jp diff --git a/packages/parity/e2e/visual/visual.spec.ts b/packages/parity/e2e/visual/visual.spec.ts index 6cc2165..e20b9be 100644 --- a/packages/parity/e2e/visual/visual.spec.ts +++ b/packages/parity/e2e/visual/visual.spec.ts @@ -72,6 +72,25 @@ async function shoot(page: Page, url: string, name: string) { await page.locator('#storybook-root > *, #root > *').first().waitFor(); await page.waitForLoadState('networkidle'); await page.evaluate(() => document.fonts.ready); + // Lists that scroll to their end (LogViewer "Follow") do so in steps – under load a pause between two steps looks + // stable to toHaveScreenshot; wait until no scroll position has changed for 10 frames + await page.evaluate( + () => + new Promise((done) => { + const positions = () => + [...document.querySelectorAll('*')].map((element) => element.scrollTop + element.scrollLeft).join(); + let last = positions(); + let quiet = 0; + const frame = () => { + const now = positions(); + quiet = now === last ? quiet + 1 : 0; + last = now; + if (quiet >= 10) done(); + else requestAnimationFrame(frame); + }; + requestAnimationFrame(frame); + }) + ); await expect(page).toHaveScreenshot(`${name}.png`); } diff --git a/packages/parity/playwright.config.ts b/packages/parity/playwright.config.ts index 3e762f8..92cbb90 100644 --- a/packages/parity/playwright.config.ts +++ b/packages/parity/playwright.config.ts @@ -32,6 +32,10 @@ export default defineConfig({ reporter: 'list', // CI: one retry against load spikes – Playwright still reports such tests as "flaky" retries: isStatic ? 1 : 0, + // Every test on its own: the big files (visual, css/parity) spread over all workers instead of one each + fullyParallel: true, + // GitHub's runners have 4 cores – Playwright's default (half of them) leaves the browser idle while it waits + workers: process.env.CI ? '75%' : undefined, use: { // No transitions by default, so assertions see final states immediately; // E2E_MOTION=1 runs everything with animations (keyboard/focus must work during them too) diff --git a/packages/parity/scripts/storybook-a11y.ts b/packages/parity/scripts/storybook-a11y.ts index 79223c0..df8c7ae 100644 --- a/packages/parity/scripts/storybook-a11y.ts +++ b/packages/parity/scripts/storybook-a11y.ts @@ -4,10 +4,13 @@ // node scripts/storybook-a11y.ts http://localhost:6007 http://localhost:6008 http://localhost:6009 http://localhost:6010 // A11Y_FILTER=datepicker node scripts/storybook-a11y.ts … (only matching stories) // node scripts/storybook-a11y.ts ../vue/storybook-static ../react/storybook-static ../native/storybook-static ../css/storybook-static +// A11Y_SHARD=1/2 … (every second story, starting with the first – for parallel CI jobs) +// A11Y_CONCURRENCY=2 … (pages at once; default: the CPU cores, at most 4) +import { availableParallelism } from 'node:os'; import { fileURLToPath } from 'node:url'; import type { AxeResults } from 'axe-core'; import { modes, themes } from '@wirecore/wirelayer-tokens'; -import { chromium } from 'playwright'; +import { chromium, type Page } from 'playwright'; import { serve } from './serve.ts'; const AXE_SOURCE = fileURLToPath(import.meta.resolve('axe-core/axe.min.js')); @@ -25,9 +28,8 @@ if (targets.length === 0) const browser = await chromium.launch(); // Reduced motion: no colour transitions while the theme switches, so axe measures the final colours const newPage = () => browser.newPage({ reducedMotion: 'reduce' }); -let page = await newPage(); -async function check(url: string) { +async function check(page: Page, url: string) { await page.goto(url); await page.waitForSelector('#storybook-root > *', { state: 'attached' }); await page.evaluate(() => document.fonts.ready.then(() => undefined)); @@ -71,7 +73,12 @@ for (const target of targets) { stories: Object.values(index.entries).filter((entry) => entry.type === 'story' && filter.test(entry.id)), }); } -const total = runs.reduce((sum, run) => sum + run.stories.length, 0) * appearances.length; +// A11Y_SHARD=2/3: every third story, starting with the second +const [shard = 1, shards = 1] = (process.env.A11Y_SHARD ?? '1/1').split('/').map(Number); +const queue = runs + .flatMap(({ base, stories }) => stories.map((story) => ({ base, story }))) + .filter((_, index) => index % shards === shard - 1); +const total = queue.length * appearances.length; const started = Date.now(); /** "[ 37 %] 556/1504 ~6 min left Forms/Select › Playground" – once per story */ @@ -85,8 +92,12 @@ function progress(story: IndexEntry) { ); } -for (const { base, stories } of runs) { - for (const story of stories) { +/** Checks the next story of the queue in all modes and themes on its own page, until the queue is empty */ +async function worker() { + let page = await newPage(); + let used = 0; + for (let next = queue.shift(); next; next = queue.shift()) { + const { base, story } = next; progress(story); for (const appearance of appearances) { // A dev Storybook may reload once while Vite optimises a new dependency – try a second time @@ -95,7 +106,7 @@ for (const { base, stories } of runs) { try { // page.evaluate has no timeout of its own – a story that never settles must not stall the run violations = await Promise.race([ - check(`${base}/iframe.html?id=${story.id}&viewMode=story&globals=${appearance}`), + check(page, `${base}/iframe.html?id=${story.id}&viewMode=story&globals=${appearance}`), new Promise((_, fail) => setTimeout(() => fail(new Error('timed out after 60 s')), 60_000) ), @@ -113,7 +124,7 @@ for (const { base, stories } of runs) { violations ??= []; checked++; // A fresh page now and then: the renderer kept growing over thousands of stories (GBs per Storybook) - if (checked % 50 === 0) { + if (++used % 50 === 0) { await page.close().catch(() => {}); page = await newPage(); } @@ -126,8 +137,13 @@ for (const { base, stories } of runs) { } } } + await page.close().catch(() => {}); } +// Several pages at once – the stories are independent; the modes and themes of a story stay on one page +const concurrency = Number(process.env.A11Y_CONCURRENCY) || Math.min(4, availableParallelism()); +await Promise.all(Array.from({ length: concurrency }, worker)); + await browser.close(); console.log(`\n${checked - failed}/${checked} story/mode/theme combinations without axe violations`); process.exit(failed === 0 ? 0 : 1); From 17fa63c530db9fddee7529dc8775b3c95441503b Mon Sep 17 00:00:00 2001 From: Florian Laabs Date: Fri, 23 Oct 2026 22:24:09 +0200 Subject: [PATCH 2/3] test: paste the own Combobox entry instead of typing it Typed key by key, Ark's input sync overwrote a key on a slow CI runner ("John De"); the test is about taking own entries. Signed-off-by: Florian Laabs --- packages/parity/src/behavior.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/parity/src/behavior.test.ts b/packages/parity/src/behavior.test.ts index 2fcbd9f..ca3cf59 100644 --- a/packages/parity/src/behavior.test.ts +++ b/packages/parity/src/behavior.test.ts @@ -859,11 +859,11 @@ describe.each(frameworks)('%s option lists', (framework) => { ); const input = screen.getByRole('combobox', { name: 'Person' }); expect(input).toHaveValue('Jonas Weber'); - // Typing at jsdom speed outruns Ark's input sync (effects) – a short delay per key, like a person - const user = userEvent.setup({ delay: 10 }); + // Pasted in one go: typed key by key, Ark's input sync (effects) can overwrite a key on a slow machine in jsdom + // ("John De") – the own entry is what this test is about + const user = userEvent.setup(); await user.clear(input); - await user.type(input, 'John Doe'); - // On a slow machine Ark's sync can still be behind the last keys – Enter only once the field has the text + await user.paste('John Doe'); await waitFor(() => expect(input).toHaveValue('John Doe')); await user.keyboard('{Enter}'); expect(onChange).toHaveBeenLastCalledWith('John Doe'); From 8c3d33cf6e725d077bd8c3f690546b078429beaa Mon Sep 17 00:00:00 2001 From: Florian Laabs Date: Fri, 23 Oct 2026 22:45:24 +0200 Subject: [PATCH 3/3] test: run axe once the story has stopped changing With several pages at once a busy runner caught pdf.js re-rendering a page: its text pointed to links that were not there yet (aria-owns). The check waits until the story has not changed for 150 ms (at most 3 s). Signed-off-by: Florian Laabs --- packages/parity/scripts/storybook-a11y.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/parity/scripts/storybook-a11y.ts b/packages/parity/scripts/storybook-a11y.ts index df8c7ae..db7f201 100644 --- a/packages/parity/scripts/storybook-a11y.ts +++ b/packages/parity/scripts/storybook-a11y.ts @@ -33,6 +33,29 @@ async function check(page: Page, url: string) { await page.goto(url); await page.waitForSelector('#storybook-root > *', { state: 'attached' }); await page.evaluate(() => document.fonts.ready.then(() => undefined)); + // Until the story has not changed for 150 ms (at most 3 s): pdf.js re-renders a page in steps, in between its text + // points to links that are not there yet (aria-owns) – with several pages at once axe would catch such a moment + await page.evaluate( + () => + new Promise((done) => { + const finish = () => { + observer.disconnect(); + done(); + }; + let quiet = setTimeout(finish, 150); + const observer = new MutationObserver(() => { + clearTimeout(quiet); + quiet = setTimeout(finish, 150); + }); + observer.observe(document.body, { + subtree: true, + childList: true, + attributes: true, + characterData: true, + }); + setTimeout(finish, 3000); + }) + ); // The Storybook a11y addon brings its own axe instance – reuse it instead of loading a second one if (!(await page.evaluate(() => 'axe' in window))) await page.addScriptTag({ path: AXE_SOURCE }); return page.evaluate(async () => {