Fixes sidebar navigation not exposed as a separate navigation landmark - #2026
Fixes sidebar navigation not exposed as a separate navigation landmark#2026jacobo-dominguez-wgu wants to merge 1 commit into
Conversation
|
Thanks for the pull request, @jacobo-dominguez-wgu! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2026 +/- ##
==========================================
+ Coverage 93.53% 93.59% +0.05%
==========================================
Files 363 367 +4
Lines 5905 6007 +102
Branches 1367 1418 +51
==========================================
+ Hits 5523 5622 +99
- Misses 367 368 +1
- Partials 15 17 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
brian-smith-tcril
left a comment
There was a problem hiding this comment.
This is definitely worth addressing, but I have some concerns with the proposed solution in this PR.
I'd like to hear @kblemel's thoughts on this one.
| verifiedMode={verifiedMode} | ||
| /> | ||
| <main className="d-flex flex-column flex-grow-1"> | ||
| <PageWrapper className="d-flex flex-column flex-grow-1"> |
There was a problem hiding this comment.
This feels awkward to me. Without this PR the main-content div doesn't contain the AlertList or CourseTabsNavigationSlot. This seems to be splitting main from the main-content div, which doesn't feel right to me.
There was a problem hiding this comment.
That was i mistake, I have fixed it.
b97a94d to
ab14327
Compare
ab14327 to
5e080fe
Compare
Description
Fixes an accessibility issue on the courseware page where the course-outline sidebar was not exposed as its own landmark and the
<main>landmark included both the sidebar navigation and the primary sequence content, making the page structure unclear for screen-reader users.After this change:
<nav>landmark with an accessible name (aria-label="Course outline").<main>landmark contains only the primary sequence content; the sidebar is a sibling outside of<main>.#main-content) now lives on the semantic<main>element, which is the correct WCAG-aligned skip target.Problem
Before:
Screen readers announced a single
mainlandmark containing both the navigation and the reading content, and the sidebar had no distinct landmark or accessible name.Solution
After:
Non-courseware tabs (
outline,dates,progress,discussion,lti_live) still receive a<main>fromLoadedTabPageexactly as before — the swap is scoped toactiveTabSlug === 'courseware'.Accessibility impact
Course outlinenavigation landmark and amainlandmark that contains only the primary content.#main-content) now targets the semantic<main>element, matching the WAI-ARIA recommendation.<main id="main-content">landmark still wraps the tab content.Testing
/course/:courseId/:sequenceId/:unitIdshould now list anavigationlandmark named "Course outline" and amainlandmark that does not contain the sidebar.Screenshots
No visual changes intended. All modifications are DOM-semantics only.

AI assistance disclosure
The modifications of this PR — including the semantic-landmark refactor, the layout-preserving CSS cleanup, and the new landmark-structure tests — were made with the assistance of Claude Opus 4.7.