From 994bf8f8bbf0df3c53111ca7f66af97fe0680013 Mon Sep 17 00:00:00 2001 From: cesnimda Date: Thu, 29 Oct 2026 09:03:58 +0100 Subject: [PATCH] test(dashboard): inspect compact widget controls in accessibility triage --- docs/pre-phase10-ux/DIAGNOSTIC_COMPATIBILITY.md | 16 ++++++++++++++++ .../p9-05/diagnostics/accessibility.spec.ts | 13 ++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/pre-phase10-ux/DIAGNOSTIC_COMPATIBILITY.md diff --git a/docs/pre-phase10-ux/DIAGNOSTIC_COMPATIBILITY.md b/docs/pre-phase10-ux/DIAGNOSTIC_COMPATIBILITY.md new file mode 100644 index 0000000..2d9a869 --- /dev/null +++ b/docs/pre-phase10-ux/DIAGNOSTIC_COMPATIBILITY.md @@ -0,0 +1,16 @@ +# Dashboard diagnostics compatibility recovery + +29 October 2026. Test-only correction to an inherited diagnostic fixture; application source/runtime remain unchanged. + +The source-bound `integration-05/` continuation passed the nine-case smoke recovery, remaining 95 ordinary cases and seven specialized configurations through RD21. The diagnostics configuration then recorded 14 passes/four failures. Each failed EN/Bokmål light/dark accessibility case expected nine permanently visible size selectors in the former large dashboard editing form. Workstream C intentionally replaced that form with direct widgets and compact native disclosures. The assertion stopped those four cases before their final editor axe scan; no accessibility pass is claimed for the failed attempt. + +The corrected fixture verifies the editor and all nine actual widget disclosures, checks the compact default, scans it with axe, opens each disclosure using Enter, and retains the exact nine-size-control requirement. It additionally checks all nine height controls. The existing badge, drawer visibility, keyboard focus, settled-state and axe assertions remain unchanged. No application code, test count or accessibility threshold was removed or relaxed. + +Evidence under `.artifacts/pre-phase10-ux/`: + +- `integration-05/{process.json,diagnostics.json,diagnostics-results/}`: original four failures and 14 passes, with unchanged captured application/ordinary-test source and runtime. +- `diagnostic-compatibility-01/{original-accessibility.spec.ts,original-source.json}`: original diagnostic source archived and matched to Git before correction. Diagnostic sources lie outside the ordinary runner's source-prefix inventory, so this additional binding is explicit. +- `diagnostic-compatibility-01/green.json`: all four updated cases passed with retries disabled, including compact and expanded editor axe scans. +- Follow-up review: no assertion weakening or application change found; the new keyboard and height checks add coverage. + +Final qualification still requires the complete 18-case diagnostic configuration and the remaining volume lanes. Their results must be reconciled separately from the ordinary 380-case census and the focused four-case recovery. Historical failures remain evidence. This checkpoint does not promote human/device accessibility or production acceptance. diff --git a/docs/redesign/phase-9/p9-05/diagnostics/accessibility.spec.ts b/docs/redesign/phase-9/p9-05/diagnostics/accessibility.spec.ts index 404c839..d73e7a9 100644 --- a/docs/redesign/phase-9/p9-05/diagnostics/accessibility.spec.ts +++ b/docs/redesign/phase-9/p9-05/diagnostics/accessibility.spec.ts @@ -65,7 +65,18 @@ for (const language of ['en', 'nb'] as const) for (const theme of ['light', 'dar await scan('drawer-closed-settled'); await page.getByRole('button', { name: t.dashboardCustomize, exact: true }).click(); const editor = page.getByRole('region', { name: t.dashboardEditing, exact: true }); - await expect(editor.getByRole('combobox')).toHaveCount(9); + await expect(editor).toBeVisible(); + const preview = page.getByRole('region', { name: t.dashboardPreview, exact: true }); + const disclosures = preview.locator('[data-dashboard-widget] summary'); + await expect(disclosures).toHaveCount(9); + await expect(preview.getByRole('combobox')).toHaveCount(0); + await scan('editor-compact'); + for (const disclosure of await disclosures.all()) { + await disclosure.focus(); + await disclosure.press('Enter'); + } + await expect(preview.getByRole('combobox')).toHaveCount(9); + await expect(preview.getByRole('spinbutton')).toHaveCount(9); await scan('editor-settled'); await info.attach('phase9-settled-axe', { body: JSON.stringify({ language, theme, badge, drawerAfterEscape, hiddenDrawer, scans, limits: 'Finite native DOM/keyboard evidence; remaining overlapping background contrast and actual screen-reader perception still require human assessment.' }, null, 2), contentType: 'application/json' });