11import { createElement } from "react" ;
2- import { render , screen } from "@testing-library/react" ;
2+ import { act , render , screen } from "@testing-library/react" ;
33import userEvent from "@testing-library/user-event" ;
44import "@testing-library/jest-dom" ;
55import { ColumnSelector , ColumnSelectorProps } from "../ColumnSelector" ;
@@ -20,7 +20,9 @@ describe("Column Selector", () => {
2020 expect ( document . body ) . toHaveFocus ( ) ;
2121
2222 const user = userEvent . setup ( { advanceTimers : jest . advanceTimersByTime } ) ;
23- await user . click ( screen . getByRole ( "button" ) ) ;
23+ await act ( async ( ) => {
24+ await user . click ( screen . getByRole ( "button" ) ) ;
25+ } ) ;
2426
2527 const element = document . querySelector ( ".column-selectors" ) ;
2628 expect ( element ?. classList . contains ( "overflow" ) ) . toBe ( false ) ;
@@ -31,9 +33,11 @@ describe("Column Selector", () => {
3133 expect ( document . body ) . toHaveFocus ( ) ;
3234
3335 const user = userEvent . setup ( { advanceTimers : jest . advanceTimersByTime } ) ;
34- await user . click ( screen . getByRole ( "button" ) ) ;
36+ await act ( async ( ) => {
37+ await user . click ( screen . getByRole ( "button" ) ) ;
38+ } ) ;
3539
36- jest . runOnlyPendingTimers ( ) ;
40+ jest . advanceTimersByTime ( 100 ) ;
3741
3842 const items = screen . getAllByRole ( "menuitem" ) ;
3943 expect ( items [ 0 ] ) . toHaveFocus ( ) ;
@@ -44,16 +48,20 @@ describe("Column Selector", () => {
4448 expect ( document . body ) . toHaveFocus ( ) ;
4549
4650 const user = userEvent . setup ( { advanceTimers : jest . advanceTimersByTime } ) ;
47- await user . click ( screen . getByRole ( "button" ) ) ;
51+ await act ( async ( ) => {
52+ await user . click ( screen . getByRole ( "button" ) ) ;
53+ } ) ;
4854
49- jest . runOnlyPendingTimers ( ) ;
55+ jest . advanceTimersByTime ( 100 ) ;
5056
5157 const items = screen . getAllByRole ( "menuitem" ) ;
5258 expect ( items [ 0 ] ) . toHaveFocus ( ) ;
5359
54- await user . tab ( { shift : true } ) ;
60+ await act ( async ( ) => {
61+ await user . tab ( { shift : true } ) ;
62+ } ) ;
5563
56- jest . runOnlyPendingTimers ( ) ;
64+ jest . advanceTimersByTime ( 100 ) ;
5765
5866 expect ( screen . getByRole ( "button" ) ) . toHaveFocus ( ) ;
5967 } ) ;
@@ -81,17 +89,24 @@ describe("Column Selector", () => {
8189 expect ( document . body ) . toHaveFocus ( ) ;
8290
8391 const user = userEvent . setup ( { advanceTimers : jest . advanceTimersByTime } ) ;
84- await user . click ( screen . getByRole ( "button" ) ) ;
85-
86- jest . runOnlyPendingTimers ( ) ;
92+ await act ( async ( ) => {
93+ await user . click ( screen . getByRole ( "button" ) ) ;
94+ } ) ;
95+ jest . advanceTimersByTime ( 100 ) ;
8796
8897 const items = screen . getAllByRole ( "menuitem" ) ;
8998 expect ( items [ 0 ] ) . toHaveFocus ( ) ;
90- await user . tab ( ) ;
91- expect ( items [ 1 ] ) . toHaveFocus ( ) ;
92- await user . tab ( ) ;
9399
94- jest . runOnlyPendingTimers ( ) ;
100+ await act ( async ( ) => {
101+ await user . tab ( ) ;
102+ } ) ;
103+ jest . advanceTimersByTime ( 100 ) ;
104+
105+ expect ( items [ 1 ] ) . toHaveFocus ( ) ;
106+ await act ( async ( ) => {
107+ await user . tab ( ) ;
108+ } ) ;
109+ jest . advanceTimersByTime ( 100 ) ;
95110
96111 expect ( screen . getByRole ( "button" ) ) . toHaveFocus ( ) ;
97112 } ) ;
@@ -130,19 +145,26 @@ describe("Column Selector", () => {
130145 expect ( document . body ) . toHaveFocus ( ) ;
131146
132147 const user = userEvent . setup ( { advanceTimers : jest . advanceTimersByTime } ) ;
133- await user . click ( screen . getByRole ( "button" ) ) ;
134148
135- jest . runOnlyPendingTimers ( ) ;
149+ await act ( async ( ) => {
150+ await user . click ( screen . getByRole ( "button" ) ) ;
151+ } ) ;
152+ jest . advanceTimersByTime ( 100 ) ;
136153
137154 const items = screen . getAllByRole ( "menuitem" ) ;
138155 expect ( items ) . toHaveLength ( 3 ) ;
139156 expect ( items [ 0 ] ) . toHaveFocus ( ) ;
140157
141- await user . tab ( ) ;
142- expect ( items [ 1 ] ) . toHaveFocus ( ) ;
143- await user . keyboard ( "{Escape}" ) ;
158+ await act ( async ( ) => {
159+ await user . tab ( ) ;
160+ } ) ;
161+ jest . advanceTimersByTime ( 100 ) ;
144162
145- jest . runOnlyPendingTimers ( ) ;
163+ expect ( items [ 1 ] ) . toHaveFocus ( ) ;
164+ await act ( async ( ) => {
165+ await user . keyboard ( "{Escape}" ) ;
166+ } ) ;
167+ jest . advanceTimersByTime ( 100 ) ;
146168
147169 expect ( screen . getByRole ( "button" ) ) . toHaveFocus ( ) ;
148170 } ) ;
0 commit comments