@@ -19,14 +19,29 @@ import * as React from 'react'
1919import TopBar from '../../components/TopBar/TopBar'
2020import { render , screen } from '@testing-library/react'
2121import userEvent from '@testing-library/user-event'
22+ import { CustomThemeProvider } from '../../contexts/ThemeContext'
2223
2324const user = userEvent . setup ( )
2425
26+ beforeEach ( ( ) => {
27+ Object . defineProperty ( window , 'matchMedia' , {
28+ writable : true ,
29+ value : jest . fn ( ) . mockImplementation ( ( ) => ( {
30+ matches : false ,
31+ addEventListener : jest . fn ( ) ,
32+ removeEventListener : jest . fn ( )
33+ } ) )
34+ } )
35+ } )
36+
2537it ( 'renders basic information' , ( ) => {
2638 const subheaderText = 'Hello, world!'
2739 const handleClick = jest . fn ( )
28- render ( < TopBar subheader = { subheaderText } drawerOpen
29- toggleDrawer = { handleClick } /> )
40+ render (
41+ < CustomThemeProvider >
42+ < TopBar subheader = { subheaderText } drawerOpen toggleDrawer = { handleClick } />
43+ </ CustomThemeProvider >
44+ )
3045 expect ( screen . getByText ( 'Selenium Grid' ) ) . toBeInTheDocument ( )
3146 expect ( screen . getByRole ( 'img' ) ) . toHaveAttribute ( 'alt' , 'Selenium Grid Logo' )
3247 expect ( screen . getByText ( subheaderText ) ) . toBeInTheDocument ( )
@@ -35,27 +50,40 @@ it('renders basic information', () => {
3550it ( 'can toggle drawer if error flag is not set and the drawer is open' ,
3651 async ( ) => {
3752 const handleClick = jest . fn ( )
38- render ( < TopBar subheader = "4.0.0" drawerOpen toggleDrawer = { handleClick } /> )
39- const button = screen . getByRole ( 'button' )
40- expect ( button . getAttribute ( 'aria-label' ) ) . toBe ( 'close drawer' )
41- await user . click ( button )
53+ render (
54+ < CustomThemeProvider >
55+ < TopBar subheader = "4.0.0" drawerOpen toggleDrawer = { handleClick } />
56+ </ CustomThemeProvider >
57+ )
58+ const drawerButton = screen . getByLabelText ( 'close drawer' )
59+ expect ( drawerButton . getAttribute ( 'aria-label' ) ) . toBe ( 'close drawer' )
60+ await user . click ( drawerButton )
4261 expect ( handleClick ) . toHaveBeenCalledTimes ( 1 )
4362 } )
4463
4564it ( 'can toggle drawer if error flag is not set and the drawer is closed' ,
4665 async ( ) => {
4766 const handleClick = jest . fn ( )
48- render ( < TopBar subheader = "4.0.0" toggleDrawer = { handleClick } /> )
49- const button = screen . getByRole ( 'button' )
50- expect ( button . getAttribute ( 'aria-label' ) ) . toBe ( 'open drawer' )
51- await user . click ( button )
67+ render (
68+ < CustomThemeProvider >
69+ < TopBar subheader = "4.0.0" toggleDrawer = { handleClick } />
70+ </ CustomThemeProvider >
71+ )
72+ const drawerButton = screen . getByLabelText ( 'open drawer' )
73+ expect ( drawerButton . getAttribute ( 'aria-label' ) ) . toBe ( 'open drawer' )
74+ await user . click ( drawerButton )
5275 expect ( handleClick ) . toHaveBeenCalledTimes ( 1 )
5376 } )
5477
5578it ( 'should not toggle drawer if error flag is set' , async ( ) => {
5679 const handleClick = jest . fn ( )
57- render ( < TopBar subheader = "4.0.0" error toggleDrawer = { handleClick } /> )
58- expect ( screen . queryByRole ( 'button' ) ) . not . toBeInTheDocument ( )
80+ render (
81+ < CustomThemeProvider >
82+ < TopBar subheader = "4.0.0" error toggleDrawer = { handleClick } />
83+ </ CustomThemeProvider >
84+ )
85+ expect ( screen . queryByLabelText ( 'close drawer' ) ) . not . toBeInTheDocument ( )
86+ expect ( screen . queryByLabelText ( 'open drawer' ) ) . not . toBeInTheDocument ( )
5987 const link = screen . getByRole ( 'link' )
6088 expect ( link . getAttribute ( 'href' ) ) . toBe ( '#help' )
6189 await user . click ( link )
0 commit comments