@@ -133,11 +133,46 @@ describe('<Tabs />', () => {
133133 } ) ;
134134
135135 describe ( 'keyboard' , ( ) => {
136+ test ( 'should change focus on tab and tabindex set' , async ( ) => {
137+ render (
138+ < Tabs >
139+ < TabList >
140+ < Tab data-testid = "tab1" tabIndex = "0" >
141+ Tab1
142+ </ Tab >
143+ < Tab data-testid = "tab2" tabIndex = "0" >
144+ Tab2
145+ </ Tab >
146+ < Tab data-testid = "tab3" tabIndex = "0" >
147+ Tab3
148+ </ Tab >
149+ </ TabList >
150+ < TabPanel data-testid = "panel1" > Hello Tab1</ TabPanel >
151+ < TabPanel data-testid = "panel2" > Hello Tab2</ TabPanel >
152+ < TabPanel data-testid = "panel3" > Hello Tab3</ TabPanel >
153+ </ Tabs > ,
154+ ) ;
155+ const element = screen . getByTestId ( 'tab1' ) ;
156+ await userEvent . click ( element ) ;
157+
158+ assertTabSelected ( 1 ) ;
159+
160+ await userEvent . keyboard ( '[Tab]' ) ;
161+ await userEvent . keyboard ( '[Enter]' ) ;
162+
163+ assertTabSelected ( 2 ) ;
164+
165+ await userEvent . keyboard ( '[Tab]' ) ;
166+ await userEvent . keyboard ( '[Space]' ) ;
167+
168+ assertTabSelected ( 3 ) ;
169+ } ) ;
170+
136171 test ( 'should update selectedIndex when arrow right key pressed' , async ( ) => {
137172 render ( createTabs ( ) ) ;
138173 const element = screen . getByTestId ( 'tab1' ) ;
139174 await userEvent . click ( element ) ;
140- await userEvent . type ( element , '{ ArrowRight} ' ) ;
175+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
141176
142177 assertTabSelected ( 2 ) ;
143178 } ) ;
@@ -146,7 +181,7 @@ describe('<Tabs />', () => {
146181 render ( createTabs ( ) ) ;
147182 const element = screen . getByTestId ( 'tab3' ) ;
148183 await userEvent . click ( element ) ;
149- await userEvent . type ( element , '{ ArrowRight} ' ) ;
184+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
150185
151186 assertTabSelected ( 1 ) ;
152187 } ) ;
@@ -166,7 +201,7 @@ describe('<Tabs />', () => {
166201 ) ;
167202 const element = screen . getByTestId ( 'tab1' ) ;
168203 await userEvent . click ( element ) ;
169- await userEvent . keyboard ( '{ ArrowRight} ' ) ;
204+ await userEvent . keyboard ( '[ ArrowRight] ' ) ;
170205
171206 assertTabSelected ( 1 ) ;
172207 } ) ;
@@ -175,7 +210,7 @@ describe('<Tabs />', () => {
175210 render ( createTabs ( ) ) ;
176211 const element = screen . getByTestId ( 'tab1' ) ;
177212 await userEvent . click ( element ) ;
178- await userEvent . keyboard ( '{ ArrowLeft} ' ) ;
213+ await userEvent . keyboard ( '[ ArrowLeft] ' ) ;
179214
180215 assertTabSelected ( 3 ) ;
181216 } ) ;
@@ -195,7 +230,7 @@ describe('<Tabs />', () => {
195230 ) ;
196231 const element = screen . getByTestId ( 'tab2' ) ;
197232 await userEvent . click ( element ) ;
198- await userEvent . keyboard ( '{ ArrowLeft} ' ) ;
233+ await userEvent . keyboard ( '[ ArrowLeft] ' ) ;
199234
200235 assertTabSelected ( 2 ) ;
201236 } ) ;
@@ -204,7 +239,7 @@ describe('<Tabs />', () => {
204239 render ( createTabs ( ) ) ;
205240 const element = screen . getByTestId ( 'tab3' ) ;
206241 await userEvent . click ( element ) ;
207- await userEvent . type ( element , '{ Home} ' ) ;
242+ await userEvent . type ( element , '[ Home] ' ) ;
208243
209244 assertTabSelected ( 1 ) ;
210245 } ) ;
@@ -213,7 +248,7 @@ describe('<Tabs />', () => {
213248 render ( createTabs ( ) ) ;
214249 const element = screen . getByTestId ( 'tab1' ) ;
215250 await userEvent . click ( element ) ;
216- await userEvent . type ( element , '{ End} ' ) ;
251+ await userEvent . type ( element , '[ End] ' ) ;
217252
218253 assertTabSelected ( 3 ) ;
219254 } ) ;
@@ -222,7 +257,7 @@ describe('<Tabs />', () => {
222257 render ( createTabs ( { direction : 'rtl' } ) ) ;
223258 const element = screen . getByTestId ( 'tab1' ) ;
224259 await userEvent . click ( element ) ;
225- await userEvent . type ( element , '{ ArrowLeft} ' ) ;
260+ await userEvent . type ( element , '[ ArrowLeft] ' ) ;
226261
227262 assertTabSelected ( 2 ) ;
228263 } ) ;
@@ -231,7 +266,7 @@ describe('<Tabs />', () => {
231266 render ( createTabs ( { direction : 'rtl' } ) ) ;
232267 const element = screen . getByTestId ( 'tab2' ) ;
233268 await userEvent . click ( element ) ;
234- await userEvent . type ( element , '{ ArrowRight} ' ) ;
269+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
235270
236271 assertTabSelected ( 1 ) ;
237272 } ) ;
@@ -240,7 +275,7 @@ describe('<Tabs />', () => {
240275 render ( createTabs ( ) ) ;
241276 const element = screen . getByTestId ( 'tab4' ) ;
242277 await userEvent . click ( element ) ;
243- await userEvent . type ( element , '{ ArrowLeft} ' ) ;
278+ await userEvent . type ( element , '[ ArrowLeft] ' ) ;
244279
245280 assertTabSelected ( 1 ) ;
246281 } ) ;
@@ -498,11 +533,11 @@ describe('<Tabs />', () => {
498533 expect ( firstTab ) . toHaveFocus ( ) ;
499534 assertTabSelected ( 1 ) ;
500535
501- await userEvent . type ( firstTab , '{ ArrowDown} ' ) ;
536+ await userEvent . type ( firstTab , '[ ArrowDown] ' ) ;
502537 expect ( secondTab ) . toHaveFocus ( ) ;
503538 assertTabSelected ( 2 ) ;
504539
505- await userEvent . type ( secondTab , '{ ArrowUp} ' ) ;
540+ await userEvent . type ( secondTab , '[ ArrowUp] ' ) ;
506541 expect ( firstTab ) . toHaveFocus ( ) ;
507542 assertTabSelected ( 1 ) ;
508543 } ) ;
@@ -568,11 +603,11 @@ describe('<Tabs />', () => {
568603 expect ( firstTab ) . toHaveFocus ( ) ;
569604 assertTabSelected ( 1 ) ;
570605
571- await userEvent . type ( firstTab , '{ ArrowDown} ' ) ;
606+ await userEvent . type ( firstTab , '[ ArrowDown] ' ) ;
572607 expect ( firstTab ) . toHaveFocus ( ) ;
573608 assertTabSelected ( 1 ) ;
574609
575- await userEvent . type ( firstTab , '{ ArrowUp} ' ) ;
610+ await userEvent . type ( firstTab , '[ ArrowUp] ' ) ;
576611 expect ( firstTab ) . toHaveFocus ( ) ;
577612 assertTabSelected ( 1 ) ;
578613 } ) ;
0 commit comments