| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
Thanks for the pull request, @filippovskii09! This repository is currently maintained by @openedx/committers-frontend-app-learning. 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.
To 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:
If 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:
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. |
Sorry, something went wrong.
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## master #1820 +/- ##
==========================================
+ Coverage 90.86% 90.97% +0.11%
==========================================
Files 348 350 +2
Lines 5814 5930 +116
Branches 1341 1400 +59
==========================================
+ Hits 5283 5395 +112
- Misses 514 515 +1
- Partials 17 20 +3 ☔ View full report in Codecov by Sentry.
|
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
| data-testid="courseware-sequence-navigation" | ||
| className={classNames('sequence-navigation', className, { 'mr-2': shouldDisplayNotificationTriggerInSequence })} | ||
| style={{ width: shouldDisplayNotificationTriggerInSequence ? '90%' : null }} | ||
| aria-label="course sequence tabs" |
There was a problem hiding this comment.
Should we have a translation for this label?
Sorry, something went wrong.
There was a problem hiding this comment.
translations have been added
Sorry, something went wrong.
| jest.mock('../../../../generic/tabs/useIndexOfLastVisibleChild'); | ||
| useIndexOfLastVisibleChild.mockReturnValue([0, null, null]); | ||
|
|
||
| jest.mock('@openedx/paragon', () => { |
There was a problem hiding this comment.
Can we abandon these mocks and test real functionality?
Sorry, something went wrong.
There was a problem hiding this comment.
fixed
Sorry, something went wrong.
|
|
||
| render(<SequenceNavigation {...mockData} />, { wrapWithRouter: true }); | ||
|
|
||
| const nav = screen.getByRole('navigation', { name: /course sequence tabs/i }); |
There was a problem hiding this comment.
If you add a translation for this text, it can be used here
Sorry, something went wrong.
There was a problem hiding this comment.
translations have been added too
Sorry, something went wrong.
| const onClick = jest.fn(); | ||
| render(<UnitButton {...mockData} onClick={onClick} />, { wrapWithRouter: true }); | ||
|
|
||
| fireEvent.click(screen.getByRole('tab')); |
There was a problem hiding this comment.
Let's use userEvent here
Sorry, something went wrong.
There was a problem hiding this comment.
fixed
Sorry, something went wrong.
| const onClick = jest.fn(); | ||
| render(<UnitButton {...mockData} onClick={onClick} />, { wrapWithRouter: true }); | ||
| fireEvent.click(screen.getByRole('link')); | ||
| fireEvent.click(screen.getByRole('tab')); |
There was a problem hiding this comment.
Let's use userEvent here
Sorry, something went wrong.
There was a problem hiding this comment.
fixed
Sorry, something went wrong.
| }); | ||
| const dropdownMenu = container.querySelector('.dropdown-menu'); | ||
| getAllByRole(dropdownMenu, 'link', { hidden: true }).forEach(button => fireEvent.click(button)); | ||
| getAllByRole(dropdownMenu, 'tab', { hidden: true }).forEach(button => fireEvent.click(button)); |
There was a problem hiding this comment.
Let's use userEvent here
Sorry, something went wrong.
There was a problem hiding this comment.
fixed
Sorry, something went wrong.
|
Sandbox deployment successful 🚀 |
Sorry, something went wrong.
|
Sandbox deployment successful 🚀 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Sandbox deployment successful 🚀 |
Sorry, something went wrong.
|
Sandbox deployment successful 🚀 |
Sorry, something went wrong.
|
Sandbox deployment successful 🚀 |
Sorry, something went wrong.
|
Hi @openedx/openedx-product-managers could you please take a look at this PR? Thanks in advance! |
Sorry, something went wrong.
|
Sandbox deployment failed 💥 |
Sorry, something went wrong.
|
Hi @PKulkoRaccoonGang - the Product team doesn't have any a11y experts, so I'm not sure if any of us can be called upon. I think an a11y expert should be the one to approve these types of PRs, but I'm not sure who that would be - @brian-smith-tcril any advice? |
Sorry, something went wrong.
|
@filippovskii09 Do you mind rebasing or pushing a new commit to this so that the sandbox gets re-created? |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Note
This PR has been added to the product proposal to improve accessibility.
Product proposal
Issue
#1881
Description
This PR introduces accessibility (a11y) improvements to the Course Top Navigation Bar (Sequence Navigation).
This ensures the navigation is fully perceivable and operable for screen reader and keyboard-only users.
Key Changes
The container for the sequence navigation tabs now explicitly uses role="tablist", creating a proper context for assistive technologies.
A descriptive label (aria-label="course sequence tabs") has been added to the main navigation element, allowing screen readers to identify this specific navigation region.
Tab Role: Each button within the navigation bar now correctly uses role="tab".
Selected State: Implemented dynamic management of the aria-selected state. The active unit button is explicitly announced as selected="true", while inactive buttons are selected="false".
Relationship: Added the aria-controls property to establish a programmatic link between the tab button and the content it controls.
Steps to Test
Note: These steps focus on verifying keyboard navigation behavior (Tab / Shift+Tab).
- Open Course: Navigate to any course unit within the Learning MFE.
- Navigate to Sequence Bar: From the top of the page, press the Tab key repeatedly until the visual focus indicator lands on the Course Sequence Navigation
- Forward Navigation: Continue pressing Tab. Verify that focus moves logically from left to right, landing on each unit icon in the sequence.
- Backward Navigation: Press Shift + Tab. Verify that focus moves logically backwards (right to left) through the sequence without getting trapped or skipping elements.
- Activation: Navigate to an inactive unit using the keyboard and press Enter. Verify that the unit is selected and the content updates accordingly.
2025-12-01.11.28.48.mov