1- import  { render  as  HTMLRender ,  fireEvent ,  waitFor ,   screen }  from  '@testing-library/react' 
1+ import  { render  as  HTMLRender ,  fireEvent ,  screen ,   waitFor }  from  '@testing-library/react' 
22import  userEvent  from  '@testing-library/user-event' 
33import  React  from  'react' 
44import  type  { AutocompleteInputProps }  from  '../Autocomplete' 
@@ -130,14 +130,15 @@ describe('Autocomplete', () => {
130130      expect ( onKeyPressMock ) . toHaveBeenCalled ( ) 
131131    } ) 
132132
133-     it ( 'opens the menu when the input is focused' ,  ( )  =>  { 
133+     it ( 'opens the menu when the input is focused and arrow key is pressed ' ,  ( )  =>  { 
134134      const  { getByLabelText}  =  HTMLRender ( 
135135        < LabelledAutocomplete  menuProps = { { items : [ ] ,  selectedItemIds : [ ] ,  [ 'aria-labelledby' ] : 'autocompleteLabel' } }  /> , 
136136      ) 
137137      const  inputNode  =  getByLabelText ( AUTOCOMPLETE_LABEL ) 
138138
139139      expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
140-       fireEvent . focus ( inputNode ) 
140+       fireEvent . click ( inputNode ) 
141+       fireEvent . keyDown ( inputNode ,  { key : 'ArrowDown' } ) 
141142      expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) 
142143    } ) 
143144
@@ -148,13 +149,14 @@ describe('Autocomplete', () => {
148149      const  inputNode  =  getByLabelText ( AUTOCOMPLETE_LABEL ) 
149150
150151      expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
151-       fireEvent . focus ( inputNode ) 
152+       fireEvent . click ( inputNode ) 
153+       fireEvent . keyDown ( inputNode ,  { key : 'ArrowDown' } ) 
154+ 
152155      expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) 
153-       // eslint-disable-next-line github/no-blur 
154-       fireEvent . blur ( inputNode ) 
155156
156-       // wait a tick for blur to finish 
157-       await  waitFor ( ( )  =>  expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) ) 
157+       await  userEvent . tab ( ) 
158+ 
159+       expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
158160    } ) 
159161
160162    it ( 'sets the input value to the suggested item text and highlights the untyped part of the word' ,  async  ( )  =>  { 
@@ -306,7 +308,7 @@ describe('Autocomplete', () => {
306308      expect ( onSelectedChangeMock ) . not . toHaveBeenCalled ( ) 
307309      if  ( inputNode )  { 
308310        fireEvent . focus ( inputNode ) 
309-         await  user . type ( inputNode ,  '{enter}' ) 
311+         await  user . type ( inputNode ,  '{arrowdown}{ enter}' ) 
310312      } 
311313
312314      expect ( onSelectedChangeMock ) . toHaveBeenCalledWith ( [ mockItems [ 0 ] ] ) 
@@ -329,6 +331,8 @@ describe('Autocomplete', () => {
329331      if  ( inputNode )  { 
330332        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
331333        await  user . click ( inputNode ) 
334+ 
335+         fireEvent . keyDown ( inputNode ,  { key : 'ArrowDown' } ) 
332336        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) 
333337        await  user . click ( getByText ( mockItems [ 1 ] . text ) ) 
334338        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) 
@@ -352,6 +356,7 @@ describe('Autocomplete', () => {
352356      if  ( inputNode )  { 
353357        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
354358        await  user . click ( inputNode ) 
359+         fireEvent . keyDown ( inputNode ,  { key : 'ArrowDown' } ) 
355360        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) 
356361        await  user . click ( getByText ( mockItems [ 1 ] . text ) ) 
357362        expect ( inputNode . getAttribute ( 'aria-expanded' ) ) . not . toBe ( 'true' ) 
0 commit comments