import { h } from 'preact'; import { axe } from 'jest-axe'; import '@testing-library/jest-dom'; import { render, waitFor } from '@testing-library/preact'; import userEvent from '@testing-library/user-event'; import { MobileDrawer } from '../MobileDrawer'; describe('', () => { let user; beforeEach(() => { user = userEvent.setup(); }); it('should have no a11y violations', async () => { const { container } = render( , ); const results = await axe(container); expect(results).toHaveNoViolations(); }); it('should render correctly', () => { const { container } = render( , ); expect(container.innerHTML).toMatchSnapshot(); }); it('should trap focus inside the drawer by default', async () => { const { getByRole } = render(
, ); const innerDrawerButton = getByRole('button', { name: 'Inside drawer button', }); await waitFor(() => expect(innerDrawerButton).toHaveFocus()); await user.keyboard('{Tab}'); expect( getByRole('button', { name: 'Inside drawer button 2' }), ).toHaveFocus(); await user.keyboard('{Tab}'); expect(innerDrawerButton).toHaveFocus(); }); it('should close when Escape is pressed', async () => { const onClose = jest.fn(); render( , ); await user.keyboard('{Escape}'); expect(onClose).toHaveBeenCalled(); }); it('should close on click outside', async () => { const onClose = jest.fn(); const { getByText } = render(

Outside content

,
, ); await user.click(getByText('Outside content')); expect(onClose).toHaveBeenCalled(); }); });