Move settled investigation records into `status/explorations/<topic>-<date>/` with README indexes, promote durable conventions to `docs/`, and add `docs/identifiers.md` plus upstream Doc 46 person-name provenance documents. Update cross-references and archive resolved issues.
7.6 KiB
title, audience, summary
| title | audience | summary | |
|---|---|---|---|
| Operator UI Accessibility Baseline |
|
The accessibility baseline every operator-UI change is diffed against: captured findings, what must not regress, and how to re-run the capture. |
Operator UI accessibility baseline
Captured 2026-05-18 as the M7f.3 deliverable. Subsequent PRs touching operator UI MUST diff against this file: regressions in a route's a11y score are blockers; new findings should be evaluated and either fixed in the same PR or recorded here with rationale.
Tool. Lighthouse 12 (Chromium snapshot mode), via the chrome-devtools MCP
lighthouse_audit tool. Audited against the running test stack
(http://member-console.localhost:9481) authenticated as alice
(operator-member). Captured pages render against the seeded test data —
scores may shift slightly with different fixture content (e.g. an
empty list page vs. one with rows).
Scope. Top-level operator routes per operator_partials.RegisterRoutes.
Pop-up / modal states (confirm modal, lookup result panel post-search) are
not audited as separate routes — they are covered by the parent route's
snapshot when active.
Out of scope for this baseline. Performance, SEO, best-practices, and the Lighthouse "agentic browsing" category. M7f.3's scope is accessibility only.
Summary by route
| Route | Score | Contrast | Heading order | Failed audits |
|---|---|---|---|---|
/operator |
96 | FAIL | PASS | color-contrast |
/operator/organizations |
95 | FAIL | N/A | color-contrast |
/operator/organizations/{orgID} |
96 | FAIL | PASS | color-contrast |
/operator/grants |
95 | FAIL | N/A | color-contrast |
/operator/billing/accounts |
90 | FAIL | N/A | aria-required-children, color-contrast |
/operator/billing/subscriptions |
90 | FAIL | N/A | aria-required-children, color-contrast |
/operator/billing/invoices |
90 | FAIL | N/A | aria-required-children, color-contrast |
/operator/billing/payments |
90 | FAIL | N/A | aria-required-children, color-contrast |
/operator/org-types |
89 | FAIL | PASS | color-contrast, select-name |
/operator/products |
96 | FAIL | PASS | color-contrast |
/operator/entitlement-sets |
96 | FAIL | PASS | color-contrast |
/operator/plan-ladders |
96 | FAIL | PASS | color-contrast |
/operator/fedwiki-sites |
95 | FAIL | N/A | color-contrast |
/operator/persons/{personID} |
94 | FAIL | FAIL | color-contrast, heading-order |
/operator
Operator landing (lookup + recent activity).
- Lighthouse a11y: 96
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/organizations
Organizations list.
- Lighthouse a11y: 95
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/organizations/{orgID}
Per-org composite (grant actions live here).
- Lighthouse a11y: 96
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/grants
Grants list (read-only).
- Lighthouse a11y: 95
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/billing/accounts
Billing accounts list.
- Lighthouse a11y: 90
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
aria-required-children— Elements with an ARIA[role]that require children to contain a specific[role]are missing some (1 element)color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/billing/subscriptions
Billing subscriptions list.
- Lighthouse a11y: 90
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
aria-required-children— Elements with an ARIA[role]that require children to contain a specific[role]are missing some (1 element)color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/billing/invoices
Billing invoices list.
- Lighthouse a11y: 90
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
aria-required-children— Elements with an ARIA[role]that require children to contain a specific[role]are missing some (1 element)color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/billing/payments
Billing payments list.
- Lighthouse a11y: 90
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
aria-required-children— Elements with an ARIA[role]that require children to contain a specific[role]are missing some (1 element)color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/org-types
Organization types catalog + default-plan + backfill.
- Lighthouse a11y: 89
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)select-name— Select elements do not have associated label elements. (2 elements)
/operator/products
Products catalog (CRUD).
- Lighthouse a11y: 96
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/entitlement-sets
Entitlement sets catalog (CRUD).
- Lighthouse a11y: 96
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/plan-ladders
Plan ladders catalog (CRUD).
- Lighthouse a11y: 96
- Color contrast: FAIL
- Heading order: PASS
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/fedwiki-sites
FedWiki sites integration list.
- Lighthouse a11y: 95
- Color contrast: FAIL
- Heading order: N/A
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)
/operator/persons/{personID}
Person detail (memberships).
- Lighthouse a11y: 94
- Color contrast: FAIL
- Heading order: FAIL
- Failed audits:
color-contrast— Background and foreground colors do not have a sufficient contrast ratio. (10 elements)heading-order— Heading elements are not in a sequentially-descending order (1 element)
Notes & known issues
- Color-contrast violations on the global nav (
/logoutstyledtext-danger, active nav link) repeat across every route. Fix is single-location (the shared nav partial); it'll lift all per-route scores by ~1 point. - The four
/operator/billing/*routes share the same 90 score and same failure profile — they reuse a common billing table fragment. Fixing the fragment fixes all four at once. status/issues.md:44flags a heading-hierarchy regression (h1 → h6 jump). Lighthouse'sheading-orderaudit picks this up where it occurs; cross-reference with the per-route table above before working that issue.