@@ -91,19 +91,19 @@ describe("radio group", () => {
91
91
const item2 = getByTestId ( itemIds [ 2 ] as string ) ;
92
92
const item3 = getByTestId ( itemIds [ 3 ] as string ) ;
93
93
item0 . focus ( ) ;
94
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
94
+ expect ( item0 ) . toHaveFocus ( ) ;
95
95
await user . keyboard ( kbd . ARROW_DOWN ) ;
96
- await waitFor ( ( ) => expect ( item1 ) . toHaveFocus ( ) ) ;
96
+ expect ( item1 ) . toHaveFocus ( ) ;
97
97
await user . keyboard ( kbd . ARROW_DOWN ) ;
98
- await waitFor ( ( ) => expect ( item2 ) . toHaveFocus ( ) ) ;
98
+ expect ( item2 ) . toHaveFocus ( ) ;
99
99
await user . keyboard ( kbd . ARROW_DOWN ) ;
100
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
100
+ expect ( item3 ) . toHaveFocus ( ) ;
101
101
await user . keyboard ( kbd . ARROW_UP ) ;
102
- await waitFor ( ( ) => expect ( item2 ) . toHaveFocus ( ) ) ;
102
+ expect ( item2 ) . toHaveFocus ( ) ;
103
103
await user . keyboard ( kbd . ARROW_UP ) ;
104
- await waitFor ( ( ) => expect ( item1 ) . toHaveFocus ( ) ) ;
104
+ expect ( item1 ) . toHaveFocus ( ) ;
105
105
await user . keyboard ( kbd . ARROW_UP ) ;
106
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
106
+ expect ( item0 ) . toHaveFocus ( ) ;
107
107
} ) ;
108
108
109
109
it ( "should navigate through the items using the keyboard (left and right)" , async ( ) => {
@@ -114,19 +114,19 @@ describe("radio group", () => {
114
114
const item2 = getByTestId ( itemIds [ 2 ] as string ) ;
115
115
const item3 = getByTestId ( itemIds [ 3 ] as string ) ;
116
116
item0 . focus ( ) ;
117
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
117
+ expect ( item0 ) . toHaveFocus ( ) ;
118
118
await user . keyboard ( kbd . ARROW_RIGHT ) ;
119
- await waitFor ( ( ) => expect ( item1 ) . toHaveFocus ( ) ) ;
119
+ expect ( item1 ) . toHaveFocus ( ) ;
120
120
await user . keyboard ( kbd . ARROW_RIGHT ) ;
121
- await waitFor ( ( ) => expect ( item2 ) . toHaveFocus ( ) ) ;
121
+ expect ( item2 ) . toHaveFocus ( ) ;
122
122
await user . keyboard ( kbd . ARROW_RIGHT ) ;
123
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
123
+ expect ( item3 ) . toHaveFocus ( ) ;
124
124
await user . keyboard ( kbd . ARROW_LEFT ) ;
125
- await waitFor ( ( ) => expect ( item2 ) . toHaveFocus ( ) ) ;
125
+ expect ( item2 ) . toHaveFocus ( ) ;
126
126
await user . keyboard ( kbd . ARROW_LEFT ) ;
127
- await waitFor ( ( ) => expect ( item1 ) . toHaveFocus ( ) ) ;
127
+ expect ( item1 ) . toHaveFocus ( ) ;
128
128
await user . keyboard ( kbd . ARROW_LEFT ) ;
129
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
129
+ expect ( item0 ) . toHaveFocus ( ) ;
130
130
} ) ;
131
131
132
132
it ( "should respect the loop prop" , async ( ) => {
@@ -137,14 +137,14 @@ describe("radio group", () => {
137
137
const item0 = getByTestId ( itemIds [ 0 ] as string ) ;
138
138
const item3 = getByTestId ( itemIds [ 3 ] as string ) ;
139
139
item0 . focus ( ) ;
140
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
140
+ expect ( item0 ) . toHaveFocus ( ) ;
141
141
await user . keyboard ( kbd . ARROW_UP ) ;
142
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
142
+ expect ( item0 ) . toHaveFocus ( ) ;
143
143
144
144
item3 . focus ( ) ;
145
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
145
+ expect ( item3 ) . toHaveFocus ( ) ;
146
146
await user . keyboard ( kbd . ARROW_DOWN ) ;
147
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
147
+ expect ( item3 ) . toHaveFocus ( ) ;
148
148
} ) ;
149
149
150
150
it ( "should respect the value prop & binding" , async ( ) => {
@@ -170,14 +170,14 @@ describe("radio group", () => {
170
170
const item0 = getByTestId ( itemIds [ 0 ] as string ) ;
171
171
const item3 = getByTestId ( itemIds [ 3 ] as string ) ;
172
172
item0 . focus ( ) ;
173
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
173
+ expect ( item0 ) . toHaveFocus ( ) ;
174
174
await user . keyboard ( kbd . ARROW_LEFT ) ;
175
- await waitFor ( ( ) => expect ( item0 ) . toHaveFocus ( ) ) ;
175
+ expect ( item0 ) . toHaveFocus ( ) ;
176
176
177
177
item3 . focus ( ) ;
178
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
178
+ expect ( item3 ) . toHaveFocus ( ) ;
179
179
await user . keyboard ( kbd . ARROW_RIGHT ) ;
180
- await waitFor ( ( ) => expect ( item3 ) . toHaveFocus ( ) ) ;
180
+ expect ( item3 ) . toHaveFocus ( ) ;
181
181
} ) ;
182
182
183
183
it ( "should not render an input if the `name` prop isn't passed" , async ( ) => {
@@ -220,4 +220,21 @@ describe("radio group", () => {
220
220
221
221
expect ( input ) . toHaveAttribute ( "disabled" ) ;
222
222
} ) ;
223
+
224
+ it ( "should not automatically select the first item focused when the radio group does not have a value" , async ( ) => {
225
+ const { getByTestId, user, input } = setup ( { name : "radio-group" } ) ;
226
+
227
+ const aItem = getByTestId ( "a-item" ) ;
228
+ aItem . focus ( ) ;
229
+ expect ( input ) . toHaveValue ( "" ) ;
230
+ await user . keyboard ( kbd . ARROW_DOWN ) ;
231
+ expect ( input ) . toHaveValue ( "" ) ;
232
+ const bItem = getByTestId ( "b-item" ) ;
233
+ expect ( bItem ) . toHaveFocus ( ) ;
234
+ await user . keyboard ( kbd . SPACE ) ;
235
+ expect ( input ) . toHaveValue ( "b" ) ;
236
+ await user . keyboard ( kbd . ARROW_UP ) ;
237
+ expect ( aItem ) . toHaveFocus ( ) ;
238
+ expect ( input ) . toHaveValue ( "a" ) ;
239
+ } ) ;
223
240
} ) ;
0 commit comments