Skip to content

fix: complete wave 3 accessibility remediation#5253

Open
fpigeonjr wants to merge 4 commits intomainfrom
OPS-5149/a11y-wave-three
Open

fix: complete wave 3 accessibility remediation#5253
fpigeonjr wants to merge 4 commits intomainfrom
OPS-5149/a11y-wave-three

Conversation

@fpigeonjr
Copy link
Contributor

Summary

  • complete the Wave 3 accessibility remediation for issue Accessibility Audit and Remediation Plan (Frontend, WCAG 2.1 AA) #5149 by removing the remaining Cypress allowlist entries across gated flows
  • improve semantic names and landmark handling in notification, agreement, budget line, portfolio, and upload experiences so the targeted axe checks pass cleanly
  • add and update the accessibility tracking docs, and make the TruffleHog pre-commit hook worktree-safe for this branch workflow

Testing

  • bun run format
  • bun run lint
  • bun run a11y:validate-suppressions
  • npx cypress run --config-file ./cypress.config.js --headless --spec "cypress/e2e/agreementList.cy.js,cypress/e2e/agreementsPagination.cy.js,cypress/e2e/agreementDetails.cy.js,cypress/e2e/portfolioList.cy.js,cypress/e2e/portfolioDetail.cy.js,cypress/e2e/budgetLineItemsList.cy.js,cypress/e2e/createAgreement.cy.js,cypress/e2e/createAgreementWithValidations.cy.js,cypress/e2e/uploadDocument.cy.js,cypress/e2e/notificationCenter.cy.js"

Linked Issue

Remove the remaining Wave 3 accessibility suppressions by fixing link,
landmark, and decorative SVG issues across the gated flows.

Document the updated baseline for issue #5149 and make the
TruffleHog hook worktree-safe so the branch can commit cleanly.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Completes Wave 3 of the accessibility remediation plan for #5149 by removing remaining Cypress axe suppressions/allowlist entries and adjusting UI markup so key gated flows pass targeted axe rules (link naming, SVG alt handling, and landmark/heading consistency).

Changes:

  • Remove the global Cypress link-name suppression and burn down the temporary a11y allowlist to zero entries.
  • Update multiple UI components to provide accessible names for icon-only controls/links and mark decorative SVG icons as aria-hidden.
  • Update/expand Wave 3 tracking documentation and refresh the accessibility audit baseline; adjust TruffleHog pre-commit hook behavior.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
frontend/src/pages/agreements/review/ReviewAgreement.jsx Wrap loading state in App to preserve layout landmarks/headings during route transitions.
frontend/src/pages/agreements/details/Agreement.jsx Wrap loading state in App and use an h1 for consistent page structure during loading.
frontend/src/components/UI/NotificationCenter/NotificationCenter.jsx Replace clickable SVGs with buttons and hide decorative SVGs from the accessibility tree.
frontend/src/components/UI/Header/User.jsx Ensure the profile link has a non-empty accessible name and avoid linking when user.id is missing.
frontend/src/components/Portfolios/PortfolioSummaryCards/PortfolioLegend.jsx Hide decorative legend icons from assistive tech to satisfy svg-img-alt.
frontend/src/components/Portfolios/PortfolioHero/HeroDescription.jsx Hide decorative external-link icon from assistive tech.
frontend/src/components/Portfolios/PortfolioFundingByCAN/PortfolioFundingByCAN.jsx Hide decorative color key icon from assistive tech.
frontend/src/components/CANs/CANBudgetLineTable/CANBudgetLineTableRow.jsx Add explicit accessible naming for agreement links and trim displayed names.
frontend/src/components/BudgetLineItems/ChangeIcons/ChangeIcons.jsx Hide decorative icons/SVGs inside already-labeled buttons.
frontend/src/components/BudgetLineItems/BLIStatusSummaryCard/BLIStatusSummaryCard.jsx Hide decorative status indicator icon from assistive tech.
frontend/src/components/BudgetLineItems/AllBudgetLinesTable/AllBLIRow.jsx Add resilient accessible naming for agreement links and avoid rendering invalid links.
frontend/src/components/Agreements/Documents/UploadDocument.jsx Wrap in App to avoid nested landmarks and preserve layout semantics.
frontend/cypress/support/e2e.js Remove global injectAxe overwrite that disabled link-name outside the regression gate.
frontend/cypress/support/a11yAllowlist.js Clear the temporary allowlist inventory while keeping validation utilities intact.
frontend/cypress/e2e/notificationCenter.cy.js Enable active axe execution for the notification center spec.
docs/developers/frontend/accessibility/issue-5149-wave-3.md Add Wave 3 remediation tracker with status snapshots and progress log.
docs/accessibility/github-issue-accessibility-audit.md Update checklist/progress notes and document Wave 3 direction.
docs/accessibility/audit-baseline-2026-02-25.md Refresh baseline summary and mark addressed findings as fixed.
.pre-commit-config.yaml Change TruffleHog hook to run in filesystem mode for worktree safety.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Use a unique fallback label for CAN agreement links, align the
legend unit test with decorative SVG behavior, and narrow the
worktree-safe TruffleHog hook to changed files.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@fpigeonjr fpigeonjr marked this pull request as ready for review March 11, 2026 20:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Accessibility Audit and Remediation Plan (Frontend, WCAG 2.1 AA)

3 participants