From 0f3db191e00cdc6776a4ff060b67a60f868d9809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tao=20Bojl=C3=A9n?= Date: Sat, 20 Jun 2026 16:52:22 +0100 Subject: [PATCH] fix(e2e): address final review (allowlist hover_card demo, state-gated locators, docs) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - hover_card: its 'shown' findings are demo-page artifacts (text-xs muted span,

heading jump in the demo), so allowlist them instead of fixme — this keeps the shown state SCANNED for any other violation. Drop the FOLLOWUPS component entry. - radio_group/slider: return state-gated locators (:checked, :focus, value-changed) so a no-op interaction fails the waitFor instead of scanning the wrong state. - README: correct CI to Tangled (.tangled/workflows/e2e.yml) and Node to 24. (Reviewer's 'command filtered/option-active will fail' was verified false: role= combobox requires aria-expanded, which IS present; aria-controls is not required. Those tests pass — confirmed by running them.) Co-Authored-By: Claude Opus 4.8 (1M context) --- FOLLOWUPS.md | 6 ----- test/e2e/README.md | 5 ++-- test/e2e/support/allowlist.mjs | 7 +++++ test/e2e/support/scenarios/hover_card.mjs | 31 +++++++--------------- test/e2e/support/scenarios/radio_group.mjs | 12 +++++---- test/e2e/support/scenarios/slider.mjs | 24 ++++++++++++----- 6 files changed, 43 insertions(+), 42 deletions(-) diff --git a/FOLLOWUPS.md b/FOLLOWUPS.md index d90a717..6b6f0d2 100644 --- a/FOLLOWUPS.md +++ b/FOLLOWUPS.md @@ -188,12 +188,6 @@ the full rationale in its scenario file's comments. Summary: `priv/templates/theme.css`, `website/components/docs/alert_dialog.ex`. Scenario: `support/scenarios/alert_dialog.mjs`. -- **[P2] hover_card / shown — `color-contrast` + `heading-order`:** the demo content - (`website/components/docs/hover_card.ex`) uses a `text-xs text-muted-foreground` span - (~3.46:1) and an `

` that jumps from the page `

`. Both are demo-authoring - issues — fix the demo (higher-contrast class; `

`/`` instead of `

`). - Scenario: `support/scenarios/hover_card.mjs`. - - **[P1] command / no-results — `aria-required-children` (critical):** like combobox (§10), when the query matches nothing the `command_empty` element leaves `role="listbox"` with no `role="option"` children. Affects: diff --git a/test/e2e/README.md b/test/e2e/README.md index 648d6fa..f036f33 100644 --- a/test/e2e/README.md +++ b/test/e2e/README.md @@ -7,7 +7,7 @@ Playwright-based end-to-end test suite for the Shadix docs site. Runs two suites ## Prerequisites -- Node.js 18+ (managed by mise; `mise install` from repo root) +- Node.js 24 (managed by mise; `mise install` from repo root) - A running Shadix docs server: - **Local:** `mix dev` from repo root (serves `http://localhost:4001`) - **CI:** a production release build served on `:8080` (set via `PLAYWRIGHT_BASE_URL`) @@ -81,7 +81,8 @@ Keep regression tests focused on a single interaction flow. Use web-first assert ## CI -CI runs the full suite against a production release build. The GitHub Actions workflow: +CI runs the full suite against a production release build. The Tangled workflow +(`.tangled/workflows/e2e.yml`, nixery engine): 1. Builds the Elixir release with `MIX_ENV=docs mix release shadix_docs` 2. Starts the release server and waits for it to be healthy diff --git a/test/e2e/support/allowlist.mjs b/test/e2e/support/allowlist.mjs index b0ca2c3..8d5b79e 100644 --- a/test/e2e/support/allowlist.mjs +++ b/test/e2e/support/allowlist.mjs @@ -62,6 +62,13 @@ export const ALLOW = { // Two