@@ -193,7 +193,8 @@ describe('Autocomplete', () => {
193193 } )
194194
195195 describe ( 'Autocomplete.Input' , ( ) => {
196- it ( 'calls onChange' , ( ) => {
196+ it ( 'calls onChange' , async ( ) => {
197+ const user = userEvent . setup ( )
197198 const onChangeMock = jest . fn ( )
198199 const { container} = HTMLRender (
199200 < LabelledAutocomplete
@@ -204,7 +205,7 @@ describe('Autocomplete', () => {
204205 const inputNode = container . querySelector ( '#autocompleteInput' )
205206
206207 expect ( onChangeMock ) . not . toHaveBeenCalled ( )
207- inputNode && userEvent . type ( inputNode , 'z' )
208+ inputNode && ( await user . type ( inputNode , 'z' ) )
208209 expect ( onChangeMock ) . toHaveBeenCalled ( )
209210 } )
210211
@@ -244,15 +245,16 @@ describe('Autocomplete', () => {
244245 expect ( onKeyUpMock ) . toHaveBeenCalled ( )
245246 } )
246247
247- it ( 'calls onKeyPress' , ( ) => {
248+ it ( 'calls onKeyPress' , async ( ) => {
249+ const user = userEvent . setup ( )
248250 const onKeyPressMock = jest . fn ( )
249251 const { getByLabelText} = HTMLRender (
250252 < LabelledAutocomplete inputProps = { { onKeyPress : onKeyPressMock } } menuProps = { { items : [ ] , selectedItemIds : [ ] } } />
251253 )
252254 const inputNode = getByLabelText ( AUTOCOMPLETE_LABEL )
253255
254256 expect ( onKeyPressMock ) . not . toHaveBeenCalled ( )
255- userEvent . type ( inputNode , '{enter}' )
257+ await user . type ( inputNode , '{enter}' )
256258 expect ( onKeyPressMock ) . toHaveBeenCalled ( )
257259 } )
258260
@@ -281,44 +283,47 @@ describe('Autocomplete', () => {
281283 } , 0 )
282284 } )
283285
284- it ( 'sets the input value to the suggested item text and highlights the untyped part of the word' , ( ) => {
286+ it ( 'sets the input value to the suggested item text and highlights the untyped part of the word' , async ( ) => {
287+ const user = userEvent . setup ( )
285288 const { container, getByDisplayValue} = HTMLRender (
286289 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] } } />
287290 )
288291 const inputNode = container . querySelector ( '#autocompleteInput' )
289292
290- inputNode && userEvent . type ( inputNode , 'ze' )
293+ inputNode && ( await user . type ( inputNode , 'ze' ) )
291294 expect ( getByDisplayValue ( 'zero' ) ) . toBeDefined ( )
292295 } )
293296
294- it ( 'does not show or highlight suggestion text after the user hits Backspace until they hit another key' , ( ) => {
297+ it ( 'does not show or highlight suggestion text after the user hits Backspace until they hit another key' , async ( ) => {
298+ const user = userEvent . setup ( )
295299 const { container, getByDisplayValue} = HTMLRender (
296300 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] } } />
297301 )
298302 const inputNode = container . querySelector ( '#autocompleteInput' )
299303
300304 expect ( ( inputNode as HTMLInputElement ) . selectionStart ) . toBe ( 0 )
301- inputNode && userEvent . type ( inputNode , 'ze' )
305+ inputNode && ( await user . type ( inputNode , 'ze' ) )
302306 expect ( getByDisplayValue ( 'zero' ) ) . toBeDefined ( )
303307 expect ( ( inputNode as HTMLInputElement ) . selectionStart ) . toBe ( 2 )
304308 expect ( ( inputNode as HTMLInputElement ) . selectionEnd ) . toBe ( 4 )
305- inputNode && userEvent . type ( inputNode , '{backspace}' )
309+ inputNode && ( await user . type ( inputNode , '{backspace}' ) )
306310 expect ( ( inputNode as HTMLInputElement ) . selectionStart ) . toBe ( 2 )
307311 expect ( getByDisplayValue ( 'ze' ) ) . toBeDefined ( )
308- inputNode && userEvent . type ( inputNode , 'r' )
312+ inputNode && ( await user . type ( inputNode , 'r' ) )
309313 expect ( ( inputNode as HTMLInputElement ) . selectionStart ) . toBe ( 3 )
310314 expect ( ( inputNode as HTMLInputElement ) . selectionEnd ) . toBe ( 4 )
311315 expect ( getByDisplayValue ( 'zero' ) ) . toBeDefined ( )
312316 } )
313317
314- it ( 'clears the input value when the user hits Escape' , ( ) => {
318+ it ( 'clears the input value when the user hits Escape' , async ( ) => {
319+ const user = userEvent . setup ( )
315320 const { container} = HTMLRender ( < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] } } /> )
316321 const inputNode = container . querySelector ( '#autocompleteInput' )
317322
318323 expect ( inputNode ?. getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' )
319- inputNode && userEvent . type ( inputNode , 'ze' )
324+ inputNode && ( await user . type ( inputNode , 'ze' ) )
320325 expect ( inputNode ?. getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' )
321- inputNode && userEvent . type ( inputNode , '{esc}' )
326+ inputNode && ( await user . type ( inputNode , '{esc}' ) )
322327 expect ( inputNode ?. getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' )
323328 } )
324329
@@ -332,18 +337,20 @@ describe('Autocomplete', () => {
332337 } )
333338
334339 describe ( 'Autocomplete.Menu' , ( ) => {
335- it ( 'calls a custom filter function' , ( ) => {
340+ it ( 'calls a custom filter function' , async ( ) => {
341+ const user = userEvent . setup ( )
336342 const filterFnMock = jest . fn ( )
337343 const { container} = HTMLRender (
338344 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] , filterFn : filterFnMock } } />
339345 )
340346 const inputNode = container . querySelector ( '#autocompleteInput' )
341347
342- inputNode && userEvent . type ( inputNode , 'ze' )
348+ inputNode && ( await user . type ( inputNode , 'ze' ) )
343349 expect ( filterFnMock ) . toHaveBeenCalled ( )
344350 } )
345351
346- it ( 'calls a custom sort function when the menu closes' , ( ) => {
352+ it ( 'calls a custom sort function when the menu closes' , async ( ) => {
353+ const user = userEvent . setup ( )
347354 const sortOnCloseFnMock = jest . fn ( )
348355 const { container} = HTMLRender (
349356 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] , sortOnCloseFn : sortOnCloseFnMock } } />
@@ -354,7 +361,7 @@ describe('Autocomplete', () => {
354361 // current sort order matches the result of `sortOnCloseFnMock`
355362 expect ( sortOnCloseFnMock ) . toHaveBeenCalledTimes ( mockItems . length - 1 )
356363 if ( inputNode ) {
357- userEvent . type ( inputNode , 'ze' )
364+ await user . type ( inputNode , 'ze' )
358365 // eslint-disable-next-line github/no-blur
359366 fireEvent . blur ( inputNode )
360367 }
@@ -365,18 +372,20 @@ describe('Autocomplete', () => {
365372 } , 0 )
366373 } )
367374
368- it ( "calls onOpenChange with the menu's open state" , ( ) => {
375+ it ( "calls onOpenChange with the menu's open state" , async ( ) => {
376+ const user = userEvent . setup ( )
369377 const onOpenChangeMock = jest . fn ( )
370378 const { container} = HTMLRender (
371379 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] , onOpenChange : onOpenChangeMock } } />
372380 )
373381 const inputNode = container . querySelector ( '#autocompleteInput' )
374382
375- inputNode && userEvent . type ( inputNode , 'ze' )
383+ inputNode && ( await user . type ( inputNode , 'ze' ) )
376384 expect ( onOpenChangeMock ) . toHaveBeenCalled ( )
377385 } )
378386
379- it ( 'calls onSelectedChange with the data for the selected items' , ( ) => {
387+ it ( 'calls onSelectedChange with the data for the selected items' , async ( ) => {
388+ const user = userEvent . setup ( )
380389 const onSelectedChangeMock = jest . fn ( )
381390 const { container} = HTMLRender (
382391 < LabelledAutocomplete
@@ -388,7 +397,7 @@ describe('Autocomplete', () => {
388397 expect ( onSelectedChangeMock ) . not . toHaveBeenCalled ( )
389398 if ( inputNode ) {
390399 fireEvent . focus ( inputNode )
391- userEvent . type ( inputNode , '{enter}' )
400+ await user . type ( inputNode , '{enter}' )
392401 }
393402
394403 // wait a tick for the keyboard event to be dispatched to the menu item
@@ -397,7 +406,8 @@ describe('Autocomplete', () => {
397406 } , 0 )
398407 } )
399408
400- it ( 'does not close the menu when clicking an item in the menu if selectionVariant=multiple' , ( ) => {
409+ it ( 'does not close the menu when clicking an item in the menu if selectionVariant=multiple' , async ( ) => {
410+ const user = userEvent . setup ( )
401411 const { getByText, container} = HTMLRender (
402412 < LabelledAutocomplete menuProps = { { items : mockItems , selectedItemIds : [ ] , selectionVariant : 'multiple' } } />
403413 )
@@ -408,7 +418,7 @@ describe('Autocomplete', () => {
408418 inputNode && fireEvent . focus ( inputNode )
409419 expect ( inputNode ?. getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' )
410420 fireEvent . click ( itemToClickNode )
411- inputNode && userEvent . type ( inputNode , '{enter}' )
421+ inputNode && ( await user . type ( inputNode , '{enter}' ) )
412422 expect ( inputNode ?. getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' )
413423 } )
414424
0 commit comments