Files
member-console/docs/operator-a11y-baseline.md
T
cgalo5758 568383b55e Reorganize status docs and add identifier docs
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.
2026-08-29 21:15:31 -05:00

7.6 KiB

title, audience, summary
title audience summary
Operator UI Accessibility Baseline
developer
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 (/logout styled text-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:44 flags a heading-hierarchy regression (h1 → h6 jump). Lighthouse's heading-order audit picks this up where it occurs; cross-reference with the per-route table above before working that issue.