@@ -133,11 +133,46 @@ describe('<Tabs />', () => {
133
133
} ) ;
134
134
135
135
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
+
136
171
test ( 'should update selectedIndex when arrow right key pressed' , async ( ) => {
137
172
render ( createTabs ( ) ) ;
138
173
const element = screen . getByTestId ( 'tab1' ) ;
139
174
await userEvent . click ( element ) ;
140
- await userEvent . type ( element , '{ ArrowRight} ' ) ;
175
+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
141
176
142
177
assertTabSelected ( 2 ) ;
143
178
} ) ;
@@ -146,7 +181,7 @@ describe('<Tabs />', () => {
146
181
render ( createTabs ( ) ) ;
147
182
const element = screen . getByTestId ( 'tab3' ) ;
148
183
await userEvent . click ( element ) ;
149
- await userEvent . type ( element , '{ ArrowRight} ' ) ;
184
+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
150
185
151
186
assertTabSelected ( 1 ) ;
152
187
} ) ;
@@ -166,7 +201,7 @@ describe('<Tabs />', () => {
166
201
) ;
167
202
const element = screen . getByTestId ( 'tab1' ) ;
168
203
await userEvent . click ( element ) ;
169
- await userEvent . keyboard ( '{ ArrowRight} ' ) ;
204
+ await userEvent . keyboard ( '[ ArrowRight] ' ) ;
170
205
171
206
assertTabSelected ( 1 ) ;
172
207
} ) ;
@@ -175,7 +210,7 @@ describe('<Tabs />', () => {
175
210
render ( createTabs ( ) ) ;
176
211
const element = screen . getByTestId ( 'tab1' ) ;
177
212
await userEvent . click ( element ) ;
178
- await userEvent . keyboard ( '{ ArrowLeft} ' ) ;
213
+ await userEvent . keyboard ( '[ ArrowLeft] ' ) ;
179
214
180
215
assertTabSelected ( 3 ) ;
181
216
} ) ;
@@ -195,7 +230,7 @@ describe('<Tabs />', () => {
195
230
) ;
196
231
const element = screen . getByTestId ( 'tab2' ) ;
197
232
await userEvent . click ( element ) ;
198
- await userEvent . keyboard ( '{ ArrowLeft} ' ) ;
233
+ await userEvent . keyboard ( '[ ArrowLeft] ' ) ;
199
234
200
235
assertTabSelected ( 2 ) ;
201
236
} ) ;
@@ -204,7 +239,7 @@ describe('<Tabs />', () => {
204
239
render ( createTabs ( ) ) ;
205
240
const element = screen . getByTestId ( 'tab3' ) ;
206
241
await userEvent . click ( element ) ;
207
- await userEvent . type ( element , '{ Home} ' ) ;
242
+ await userEvent . type ( element , '[ Home] ' ) ;
208
243
209
244
assertTabSelected ( 1 ) ;
210
245
} ) ;
@@ -213,7 +248,7 @@ describe('<Tabs />', () => {
213
248
render ( createTabs ( ) ) ;
214
249
const element = screen . getByTestId ( 'tab1' ) ;
215
250
await userEvent . click ( element ) ;
216
- await userEvent . type ( element , '{ End} ' ) ;
251
+ await userEvent . type ( element , '[ End] ' ) ;
217
252
218
253
assertTabSelected ( 3 ) ;
219
254
} ) ;
@@ -222,7 +257,7 @@ describe('<Tabs />', () => {
222
257
render ( createTabs ( { direction : 'rtl' } ) ) ;
223
258
const element = screen . getByTestId ( 'tab1' ) ;
224
259
await userEvent . click ( element ) ;
225
- await userEvent . type ( element , '{ ArrowLeft} ' ) ;
260
+ await userEvent . type ( element , '[ ArrowLeft] ' ) ;
226
261
227
262
assertTabSelected ( 2 ) ;
228
263
} ) ;
@@ -231,7 +266,7 @@ describe('<Tabs />', () => {
231
266
render ( createTabs ( { direction : 'rtl' } ) ) ;
232
267
const element = screen . getByTestId ( 'tab2' ) ;
233
268
await userEvent . click ( element ) ;
234
- await userEvent . type ( element , '{ ArrowRight} ' ) ;
269
+ await userEvent . type ( element , '[ ArrowRight] ' ) ;
235
270
236
271
assertTabSelected ( 1 ) ;
237
272
} ) ;
@@ -240,7 +275,7 @@ describe('<Tabs />', () => {
240
275
render ( createTabs ( ) ) ;
241
276
const element = screen . getByTestId ( 'tab4' ) ;
242
277
await userEvent . click ( element ) ;
243
- await userEvent . type ( element , '{ ArrowLeft} ' ) ;
278
+ await userEvent . type ( element , '[ ArrowLeft] ' ) ;
244
279
245
280
assertTabSelected ( 1 ) ;
246
281
} ) ;
@@ -498,11 +533,11 @@ describe('<Tabs />', () => {
498
533
expect ( firstTab ) . toHaveFocus ( ) ;
499
534
assertTabSelected ( 1 ) ;
500
535
501
- await userEvent . type ( firstTab , '{ ArrowDown} ' ) ;
536
+ await userEvent . type ( firstTab , '[ ArrowDown] ' ) ;
502
537
expect ( secondTab ) . toHaveFocus ( ) ;
503
538
assertTabSelected ( 2 ) ;
504
539
505
- await userEvent . type ( secondTab , '{ ArrowUp} ' ) ;
540
+ await userEvent . type ( secondTab , '[ ArrowUp] ' ) ;
506
541
expect ( firstTab ) . toHaveFocus ( ) ;
507
542
assertTabSelected ( 1 ) ;
508
543
} ) ;
@@ -568,11 +603,11 @@ describe('<Tabs />', () => {
568
603
expect ( firstTab ) . toHaveFocus ( ) ;
569
604
assertTabSelected ( 1 ) ;
570
605
571
- await userEvent . type ( firstTab , '{ ArrowDown} ' ) ;
606
+ await userEvent . type ( firstTab , '[ ArrowDown] ' ) ;
572
607
expect ( firstTab ) . toHaveFocus ( ) ;
573
608
assertTabSelected ( 1 ) ;
574
609
575
- await userEvent . type ( firstTab , '{ ArrowUp} ' ) ;
610
+ await userEvent . type ( firstTab , '[ ArrowUp] ' ) ;
576
611
expect ( firstTab ) . toHaveFocus ( ) ;
577
612
assertTabSelected ( 1 ) ;
578
613
} ) ;
0 commit comments