11/* @vitest -environment jsdom */
22
3- import { fireEvent , render , screen , within } from "@testing-library/react" ;
3+ import { fireEvent , render , screen , waitFor , within } from "@testing-library/react" ;
44import type { ReactNode } from "react" ;
5- import { describe , expect , it , vi } from "vitest" ;
5+ import { afterEach , describe , expect , it , vi } from "vitest" ;
66
77vi . mock ( "@tanstack/react-router" , ( ) => ( {
88 Link : ( props : { children : ReactNode ; to ?: string } ) => (
@@ -13,6 +13,21 @@ vi.mock("@tanstack/react-router", () => ({
1313import { Footer } from "./Footer" ;
1414
1515describe ( "Footer" , ( ) => {
16+ afterEach ( ( ) => {
17+ vi . unstubAllGlobals ( ) ;
18+ } ) ;
19+
20+ function mockMatchMedia ( matches : boolean ) {
21+ vi . stubGlobal (
22+ "matchMedia" ,
23+ vi . fn ( ) . mockImplementation ( ( ) => ( {
24+ matches,
25+ addEventListener : vi . fn ( ) ,
26+ removeEventListener : vi . fn ( ) ,
27+ } ) ) ,
28+ ) ;
29+ }
30+
1631 it ( "renders the restored four-column public footer" , ( ) => {
1732 const { container } = render ( < Footer /> ) ;
1833
@@ -72,7 +87,8 @@ describe("Footer", () => {
7287 ) . toBe ( "https://www.convex.dev" ) ;
7388 } ) ;
7489
75- it ( "collapses footer sections by heading until toggled open" , ( ) => {
90+ it ( "collapses footer sections by heading until toggled open" , async ( ) => {
91+ mockMatchMedia ( true ) ;
7692 render ( < Footer /> ) ;
7793
7894 const browseToggle = screen . getByRole ( "button" , { name : "Browse" } ) ;
@@ -82,7 +98,7 @@ describe("Footer", () => {
8298
8399 expect ( browseLinks ) . not . toBeNull ( ) ;
84100 expect ( platformLinks ) . not . toBeNull ( ) ;
85- expect ( browseToggle . getAttribute ( "aria-expanded" ) ) . toBe ( "false" ) ;
101+ await waitFor ( ( ) => expect ( browseToggle . getAttribute ( "aria-expanded" ) ) . toBe ( "false" ) ) ;
86102 expect ( browseLinks ?. getAttribute ( "data-open" ) ) . toBe ( "false" ) ;
87103 expect ( platformToggle . getAttribute ( "aria-expanded" ) ) . toBe ( "false" ) ;
88104 expect ( platformLinks ?. getAttribute ( "data-open" ) ) . toBe ( "false" ) ;
0 commit comments