From 2e3ed087d1aff45ec1fdeb3592a6fa11faba2477 Mon Sep 17 00:00:00 2001 From: Marcos Rigoli Date: Thu, 6 Mar 2025 15:24:35 -0300 Subject: [PATCH] fix: Updated a11y on Courseware Search results. (#1620) --- .../courseware-search/CoursewareSearch.jsx | 52 +++++++++---------- .../CoursewareSearch.test.jsx | 8 ++- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/course-home/courseware-search/CoursewareSearch.jsx b/src/course-home/courseware-search/CoursewareSearch.jsx index 15a227c0..d6308cee 100644 --- a/src/course-home/courseware-search/CoursewareSearch.jsx +++ b/src/course-home/courseware-search/CoursewareSearch.jsx @@ -141,32 +141,32 @@ const CoursewareSearch = ({ ...sectionProps }) => { - - {status === 'loading' ? ( -
- -
- ) : null} - {status === 'error' && ( - - {formatMessage(messages.searchResultsError)} - - )} - {status === 'results' ? ( - <> - {total > 0 ? ( -
{formatMessage(messages.searchResultsLabel, { total, keyword: lastSearchKeyword })} -
- ) : null} - - - ) : null} +
+ {status === 'loading' ? ( +
+ +
+ ) : null} + {status === 'error' && ( + + {formatMessage(messages.searchResultsError)} + + )} + {status === 'results' ? ( + <> + {total > 0 ? ( +
{formatMessage(messages.searchResultsLabel, { total, keyword: lastSearchKeyword })} +
+ ) : null} + + + ) : null} +
diff --git a/src/course-home/courseware-search/CoursewareSearch.test.jsx b/src/course-home/courseware-search/CoursewareSearch.test.jsx index 5a0bebd4..69bcf00c 100644 --- a/src/course-home/courseware-search/CoursewareSearch.test.jsx +++ b/src/course-home/courseware-search/CoursewareSearch.test.jsx @@ -9,6 +9,7 @@ import { screen, waitFor, fireEvent, + within, } from '../../setupTest'; import { CoursewareSearch } from './index'; import { useElementBoundingBox, useLockScroll, useCoursewareSearchParams } from './hooks'; @@ -243,14 +244,17 @@ describe('CoursewareSearch', () => { expect(screen.queryByTestId('courseware-search-summary')).not.toBeInTheDocument(); }); - it('should show a summary for the results', () => { + it('should show a summary for the results within a container with aria-live="polite"', () => { mockModels({ searchKeyword: 'fubar', total: 1, }); renderComponent(); - expect(screen.queryByTestId('courseware-search-summary').textContent).toBe('Results for "fubar":'); + const results = screen.queryByTestId('courseware-search-results'); + + expect(results).toHaveAttribute('aria-live', 'polite'); + expect(within(results).queryByTestId('courseware-search-summary').textContent).toBe('Results for "fubar":'); }); });