Skip to content

Commit da2fcec

Browse files
feat: improved accessibility for Show/Hide Accordions
1 parent 3cbbb02 commit da2fcec

File tree

5 files changed

+27
-2
lines changed

5 files changed

+27
-2
lines changed

src/course-home/outline-tab/OutlineTab.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ const OutlineTab = () => {
172172
</Button>
173173
</div>
174174
</div>
175-
<ol id="courseHome-outline" className="list-unstyled">
175+
<ol id="courseHome-outline" className="list-unstyled" role="presentation">
176176
{courses[rootCourseId].sectionIds.map((sectionId) => (
177177
<Section
178178
key={sectionId}

src/course-home/outline-tab/OutlineTab.test.jsx

+18
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,24 @@ describe('Outline Tab', () => {
132132
expect(expandedSectionNode).toHaveAttribute('aria-expanded', 'true');
133133
});
134134

135+
it('displays correct heading for expanded section', async () => {
136+
const { courseBlocks } = await buildMinimalCourseBlocks(courseId, 'Title', { resumeBlock: true });
137+
setTabData({ course_blocks: { blocks: courseBlocks.blocks } });
138+
await fetchAndRender();
139+
const headingContent = screen.getByText('Title of Section');
140+
const { parentElement } = headingContent;
141+
expect(parentElement.tagName).toBe('H2');
142+
});
143+
144+
it('checks that the expanded section is within the correct list', async () => {
145+
const { courseBlocks } = await buildMinimalCourseBlocks(courseId, 'Title', { resumeBlock: true });
146+
setTabData({ course_blocks: { blocks: courseBlocks.blocks } });
147+
await fetchAndRender();
148+
const listElement = screen.getByRole('presentation', { id: 'courseHome-outline' });
149+
expect(listElement).toBeInTheDocument();
150+
expect(listElement.tagName).toBe('OL');
151+
});
152+
135153
it('includes outline_tab_notifications_slot', async () => {
136154
const { courseBlocks } = await buildMinimalCourseBlocks(courseId, 'Title', { resumeBlock: true });
137155
setTabData({

src/course-home/outline-tab/Section.jsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ const Section = ({
6565
)}
6666
</div>
6767
<div className="col-7 ml-3 p-0 font-weight-bold text-dark-500">
68-
<span className="align-middle col-6">{title}</span>
68+
<h2 className="course-outline-tab-section-title text-dark-500 mb-0">
69+
<span className="align-middle col-6">{title}</span>
70+
</h2>
6971
<span className="sr-only">
7072
, {intl.formatMessage(complete ? messages.completedSection : messages.incompleteSection)}
7173
</span>
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.course-outline-tab-section-title {
2+
font-size: $font-size-base;
3+
line-height: $line-height-base;
4+
}

src/index.scss

+1
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@
469469
@import "courseware/course/content-tools/calculator/calculator.scss";
470470
@import "courseware/course/content-tools/contentTools.scss";
471471
@import "course-home/dates-tab/timeline/Day.scss";
472+
@import "course-home/outline-tab/Section.scss";
472473
@import "generic/upgrade-notification/UpgradeNotification.scss";
473474
@import "generic/upsell-bullets/UpsellBullets.scss";
474475
@import "course-home/outline-tab/widgets/ProctoringInfoPanel.scss";

0 commit comments

Comments
 (0)