From 159d64b5745974295f188fbdf804f5313d4a91ed Mon Sep 17 00:00:00 2001 From: Pranay Kothapalli Date: Wed, 24 Jun 2026 10:44:46 +0530 Subject: [PATCH 1/2] test(HoverCard): lazy mount overlay content (#1847) --- .../tests/HoverCard.lazyMount.test.tsx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx diff --git a/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx b/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx new file mode 100644 index 000000000..5e20ed43a --- /dev/null +++ b/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import HoverCard from '../HoverCard'; + +describe('HoverCard lazy mount', () => { + test('does not mount content until opened', () => { + render( + + Trigger + + Hover body + + + ); + + expect(screen.queryByTestId('hover-content')).not.toBeInTheDocument(); + }); + + test('mounts content when open', () => { + render( + + Trigger + + Hover body + + + ); + + expect(screen.getByText('Hover body')).toBeInTheDocument(); + }); +}); From 5c9659c7f9b51dfb72a83ff5e5c26d5062adeefd Mon Sep 17 00:00:00 2001 From: Pranay Kothapalli Date: Wed, 24 Jun 2026 16:41:53 +0530 Subject: [PATCH 2/2] test(HoverCard): wrap lazy mount tests in Theme with mockMatchMedia --- .../tests/HoverCard.lazyMount.test.tsx | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx b/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx index 5e20ed43a..932ec74a1 100644 --- a/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx +++ b/src/components/ui/HoverCard/tests/HoverCard.lazyMount.test.tsx @@ -1,16 +1,33 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; +import Theme from '~/components/ui/Theme/Theme'; import HoverCard from '../HoverCard'; +const mockMatchMedia = () => { + if ('matchMedia' in window && typeof window.matchMedia === 'function') return; + Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation(() => ({ + matches: false, + addEventListener: jest.fn(), + removeEventListener: jest.fn() + })) + }); +}; + describe('HoverCard lazy mount', () => { + beforeEach(() => mockMatchMedia()); + test('does not mount content until opened', () => { render( - - Trigger - - Hover body - - + + + Trigger + + Hover body + + + ); expect(screen.queryByTestId('hover-content')).not.toBeInTheDocument(); @@ -18,12 +35,14 @@ describe('HoverCard lazy mount', () => { test('mounts content when open', () => { render( - - Trigger - - Hover body - - + + + Trigger + + Hover body + + + ); expect(screen.getByText('Hover body')).toBeInTheDocument();