From e70baf55ace610f98af0d972fc083119d3292fd5 Mon Sep 17 00:00:00 2001 From: Avinash Dwarapu Date: Fri, 18 Oct 2024 16:03:24 +0200 Subject: [PATCH] Use real timers for live region tests. --- .../__tests__/live-region.test.tsx | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/internal/components/live-region/__tests__/live-region.test.tsx b/src/internal/components/live-region/__tests__/live-region.test.tsx index 4dac4d2ebe..e49be28460 100644 --- a/src/internal/components/live-region/__tests__/live-region.test.tsx +++ b/src/internal/components/live-region/__tests__/live-region.test.tsx @@ -7,15 +7,18 @@ import InternalLiveRegion, { assertive, polite, } from '../../../../../lib/components/internal/components/live-region/internal'; -import { mockInnerText } from '../../../../internal/analytics/__tests__/mocks'; import styles from '../../../../../lib/components/internal/components/live-region/styles.css.js'; -mockInnerText(); +jest.mock('../../../is-development', () => ({ + ...jest.requireActual('../../../is-development'), + isTest: false, +})); const renderLiveRegion = async (jsx: React.ReactElement) => { const { container } = render(jsx); await waitFor(() => expect(document.querySelector('[aria-live=polite]'))); + jest.runAllTimers(); return { source: container.querySelector(`.${styles.root}`), @@ -24,9 +27,14 @@ const renderLiveRegion = async (jsx: React.ReactElement) => { }; }; +beforeEach(() => { + jest.useFakeTimers(); +}); + // The announcers persist throughout the lifecycle of the application. // We need to reset them after each test. afterEach(() => { + jest.clearAllTimers(); polite.reset(); assertive.reset(); }); @@ -43,6 +51,14 @@ describe('LiveRegion', () => { expect(politeRegion).toHaveTextContent('Announcement'); }); + it('does nothing when no message or children are provided', async () => { + const { source, politeRegion, assertiveRegion } = await renderLiveRegion(); + + expect(source).toHaveTextContent(''); + expect(politeRegion).toHaveTextContent(''); + expect(assertiveRegion).toHaveTextContent(''); + }); + it('renders with a div by default', async () => { const { source, politeRegion } = await renderLiveRegion( Announcement