diff --git a/tests/__utils__/mocks.ts b/tests/__utils__/mocks.ts index 00f5efaca..b3f7271d4 100644 --- a/tests/__utils__/mocks.ts +++ b/tests/__utils__/mocks.ts @@ -63,4 +63,19 @@ export function mockAnswersHooks({ mockedUtils && mockAnswersUtils(mockedUtils); mockedState && mockAnswersState(mockedState); mockedActions && mockSearchActions(mockedActions); -} \ No newline at end of file +} + +const originalConsoleError = console.error.bind(console.error); + +export function ignoreLinkClickErrors() { + jest.spyOn(global.console, 'error') + .mockImplementation((msg, ...params) => { + /** + * Suppress errors about 'navigation' not being defined in jsdom when + * clicking on links. + */ + if (!msg.toString().match(/Error: Not implemented: navigation/)) { + originalConsoleError(msg, ...params); + } + }); +}; diff --git a/tests/components/DirectAnswer.test.tsx b/tests/components/DirectAnswer.test.tsx index 0d40e95aa..dc35ff9d5 100644 --- a/tests/components/DirectAnswer.test.tsx +++ b/tests/components/DirectAnswer.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { DirectAnswerState } from '@yext/search-headless-react'; import { useAnalytics } from '../../src/hooks/useAnalytics'; import { DirectAnswer } from '../../src/components/DirectAnswer'; -import { RecursivePartial, mockAnswersState } from '../__utils__/mocks'; +import { RecursivePartial, ignoreLinkClickErrors, mockAnswersState } from '../__utils__/mocks'; import { fieldValueDAState, featuredSnippetDAState } from '../__fixtures__/data/directanswers'; import userEvent from '@testing-library/user-event'; import React from 'react'; @@ -35,6 +35,7 @@ describe('Featured snippet direct answer analytics', () => { async function runAnalyticsTestSuite() { it('reports link click analytics', async () => { render(); + ignoreLinkClickErrors(); const link = screen.getByRole('link'); await userEvent.click(link); expect(useAnalytics()?.report).toHaveBeenCalledTimes(1); diff --git a/tests/components/FeaturedSnippetDirectAnswer.test.tsx b/tests/components/FeaturedSnippetDirectAnswer.test.tsx index b7240f239..bee24acf4 100644 --- a/tests/components/FeaturedSnippetDirectAnswer.test.tsx +++ b/tests/components/FeaturedSnippetDirectAnswer.test.tsx @@ -4,6 +4,7 @@ import { FeaturedSnippetDirectAnswer } from '../../src/components/FeaturedSnippe import { featuredSnippetDAState } from '../__fixtures__/data/directanswers'; import userEvent from '@testing-library/user-event'; import React from 'react'; +import { ignoreLinkClickErrors } from '../__utils__/mocks'; const featuredSnippetDAResult = featuredSnippetDAState.result as FeaturedSnippetDirectAnswerType; @@ -39,6 +40,7 @@ describe('FeaturedSnippet direct answer', () => { result={featuredSnippetDAResult} readMoreClickHandler={readMoreClickHandler} />); + ignoreLinkClickErrors(); await userEvent.click(screen.getByRole('link', { name: '[relatedResult.name]' })); expect(readMoreClickHandler).toHaveBeenCalledTimes(1); }); diff --git a/tests/components/FieldValueDirectAnswer.test.tsx b/tests/components/FieldValueDirectAnswer.test.tsx index 940689a74..b7327c399 100644 --- a/tests/components/FieldValueDirectAnswer.test.tsx +++ b/tests/components/FieldValueDirectAnswer.test.tsx @@ -10,17 +10,18 @@ import userEvent from '@testing-library/user-event'; import { fieldValueDAState } from '../__fixtures__/data/directanswers'; import { UnknownFieldTypeDisplayComponent } from '../../src/components/DirectAnswer'; import React from 'react'; +import { ignoreLinkClickErrors } from '../__utils__/mocks'; const fieldValueDAResult = fieldValueDAState.result as FieldValueDirectAnswerType; describe('FieldValue direct answer', () => { - it('executes viewDetailsClickHandler when click on "View Details" link', async () => { const viewDetailsClickHandler = jest.fn(); render( ); + ignoreLinkClickErrors(); const viewDetailsLink = screen.getByRole('link', { name: 'View Details' }); await userEvent.click(viewDetailsLink);