Skip to content

Commit a8ad3df

Browse files
committed
userEvent(click): improve correctness for clicks
1 parent 5907385 commit a8ad3df

File tree

5 files changed

+108
-123
lines changed

5 files changed

+108
-123
lines changed

src/user-event/__tests__/dblclick.js

Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,6 @@
11
import {userEvent} from '../../'
22
import {setup, addEventListener, addListeners} from './helpers/utils'
33

4-
/*
5-
button#button[value=""] pointerover
6-
button#button[value=""] pointerenter
7-
button#button[value=""] mouseover
8-
button#button[value=""] mouseenter
9-
button#button[value=""] pointermove
10-
button#button[value=""] mousemove
11-
12-
button#button[value=""] pointerdown
13-
button#button[value=""] mousedown
14-
button#button[value=""] focus
15-
button#button[value=""] focusin
16-
button#button[value=""] pointerup
17-
button#button[value=""] mouseup
18-
button#button[value=""] click
19-
20-
button#button[value=""] pointerdown
21-
button#button[value=""] mousedown
22-
button#button[value=""] pointerup
23-
button#button[value=""] mouseup
24-
button#button[value=""] click
25-
button#button[value=""] dblclick
26-
27-
*/
284
test('fires the correct events on buttons', async () => {
295
const {element, getEventSnapshot} = setup('<button />')
306
await userEvent.dblClick(element)
@@ -37,18 +13,41 @@ test('fires the correct events on buttons', async () => {
3713
button - mouseenter: Left (0)
3814
button - pointermove
3915
button - mousemove: Left (0)
16+
button - pointerdown
4017
button - mousedown: Left (0)
4118
button - focus
4219
button - focusin
20+
button - pointerup
4321
button - mouseup: Left (0)
4422
button - click: Left (0)
23+
button - pointerdown
4524
button - mousedown: Left (0)
25+
button - pointerup
4626
button - mouseup: Left (0)
4727
button - click: Left (0)
4828
button - dblclick: Left (0)
4929
`)
5030
})
5131

32+
/*
33+
input[checked=false] - pointerdown
34+
input[checked=false] - mousedown
35+
input[checked=false] - focus
36+
input[checked=false] - focusin
37+
input[checked=false] - pointerup
38+
input[checked=false] - mouseup
39+
input[checked=true] - click
40+
input[checked=true] - input
41+
input[checked=true] - change
42+
input[checked=true] - pointerdown
43+
input[checked=true] - mousedown
44+
input[checked=true] - pointerup
45+
input[checked=true] - mouseup
46+
input[checked=false] - click
47+
input[checked=false] - input
48+
input[checked=false] - change
49+
input[checked=false] - dblclick
50+
*/
5251
test('fires the correct events on checkboxes', async () => {
5352
const {element, getEventSnapshot} = setup('<input type="checkbox" />')
5453
await userEvent.dblClick(element)
@@ -61,22 +60,25 @@ test('fires the correct events on checkboxes', async () => {
6160
input[checked=false] - mouseenter: Left (0)
6261
input[checked=false] - pointermove
6362
input[checked=false] - mousemove: Left (0)
64-
input[checked=false] - mouseover: Left (0)
65-
input[checked=false] - mousemove: Left (0)
63+
input[checked=false] - pointerdown
6664
input[checked=false] - mousedown: Left (0)
6765
input[checked=false] - focus
6866
input[checked=false] - focusin
67+
input[checked=false] - pointerup
6968
input[checked=false] - mouseup: Left (0)
7069
input[checked=true] - click: Left (0)
7170
unchecked -> checked
7271
input[checked=true] - input
7372
input[checked=true] - change
73+
input[checked=true] - pointerdown
7474
input[checked=true] - mousedown: Left (0)
75+
input[checked=true] - pointerup
7576
input[checked=true] - mouseup: Left (0)
7677
input[checked=false] - click: Left (0)
7778
checked -> unchecked
7879
input[checked=false] - input
7980
input[checked=false] - change
81+
input[checked=false] - dblclick: Left (0)
8082
`)
8183
})
8284

@@ -92,12 +94,16 @@ test('fires the correct events on regular inputs', async () => {
9294
input[value=""] - mouseenter: Left (0)
9395
input[value=""] - pointermove
9496
input[value=""] - mousemove: Left (0)
97+
input[value=""] - pointerdown
9598
input[value=""] - mousedown: Left (0)
9699
input[value=""] - focus
97100
input[value=""] - focusin
101+
input[value=""] - pointerup
98102
input[value=""] - mouseup: Left (0)
99103
input[value=""] - click: Left (0)
104+
input[value=""] - pointerdown
100105
input[value=""] - mousedown: Left (0)
106+
input[value=""] - pointerup
101107
input[value=""] - mouseup: Left (0)
102108
input[value=""] - click: Left (0)
103109
input[value=""] - dblclick: Left (0)
@@ -116,10 +122,14 @@ test('fires the correct events on divs', async () => {
116122
div - mouseenter: Left (0)
117123
div - pointermove
118124
div - mousemove: Left (0)
125+
div - pointerdown
119126
div - mousedown: Left (0)
127+
div - pointerup
120128
div - mouseup: Left (0)
121129
div - click: Left (0)
130+
div - pointerdown
122131
div - mousedown: Left (0)
132+
div - pointerup
123133
div - mouseup: Left (0)
124134
div - click: Left (0)
125135
div - dblclick: Left (0)
@@ -159,7 +169,7 @@ test('does not fire focus event if the element is already focused', async () =>
159169
})
160170

161171
test('clicking an element in a label gives the control focus', async () => {
162-
const {element, getEventSnapshot} = setup(`
172+
const {element} = setup(`
163173
<div>
164174
<label for="nested-input">
165175
<span>nested</span>
@@ -168,23 +178,7 @@ test('clicking an element in a label gives the control focus', async () => {
168178
</div>
169179
`)
170180
await userEvent.dblClick(element.querySelector('span'))
171-
expect(getEventSnapshot()).toMatchInlineSnapshot(`
172-
Events fired on: div
173-
174-
span - pointerover
175-
span - mouseover: Left (0)
176-
span - pointermove
177-
span - mousemove: Left (0)
178-
span - mousedown: Left (0)
179-
span - mouseup: Left (0)
180-
span - click: Left (0)
181-
input#nested-input[value=""] - click: Left (0)
182-
span - mousedown: Left (0)
183-
span - mouseup: Left (0)
184-
span - click: Left (0)
185-
input#nested-input[value=""] - click: Left (0)
186-
span - dblclick: Left (0)
187-
`)
181+
expect(element.querySelector('input')).toHaveFocus()
188182
})
189183

190184
test('does not blur the previous element when mousedown prevents default', async () => {
@@ -220,10 +214,14 @@ test('fires mouse events with the correct properties', async () => {
220214
mouseenter - button=0; buttons=0; detail=0
221215
pointermove
222216
mousemove - button=0; buttons=0; detail=0
217+
pointerdown
223218
mousedown - button=0; buttons=1; detail=1
219+
pointerup
224220
mouseup - button=0; buttons=1; detail=1
225221
click - button=0; buttons=1; detail=1
222+
pointerdown
226223
mousedown - button=0; buttons=1; detail=2
224+
pointerup
227225
mouseup - button=0; buttons=1; detail=2
228226
click - button=0; buttons=1; detail=2
229227
dblclick - button=0; buttons=1; detail=2
@@ -243,10 +241,14 @@ test('fires mouse events with custom button property', async () => {
243241
mouseenter - button=0; buttons=0; detail=0
244242
pointermove
245243
mousemove - button=0; buttons=0; detail=0
244+
pointerdown
246245
mousedown - button=1; buttons=4; detail=1
246+
pointerup
247247
mouseup - button=1; buttons=4; detail=1
248248
click - button=1; buttons=4; detail=1
249+
pointerdown
249250
mousedown - button=1; buttons=4; detail=2
251+
pointerup
250252
mouseup - button=1; buttons=4; detail=2
251253
click - button=1; buttons=4; detail=2
252254
dblclick - button=1; buttons=4; detail=2
@@ -265,10 +267,14 @@ test('fires mouse events with custom buttons property', async () => {
265267
mouseenter - button=0; buttons=0; detail=0
266268
pointermove
267269
mousemove - button=0; buttons=0; detail=0
270+
pointerdown
268271
mousedown - button=1; buttons=4; detail=1
272+
pointerup
269273
mouseup - button=1; buttons=4; detail=1
270274
click - button=1; buttons=4; detail=1
275+
pointerdown
271276
mousedown - button=1; buttons=4; detail=2
277+
pointerup
272278
mouseup - button=1; buttons=4; detail=2
273279
click - button=1; buttons=4; detail=2
274280
dblclick - button=1; buttons=4; detail=2

src/user-event/__tests__/upload.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ test('should fire the correct events for input', async () => {
1010
expect(getEventSnapshot()).toMatchInlineSnapshot(`
1111
Events fired on: input[value=""]
1212
13+
input[value=""] - pointerover
14+
input[value=""] - pointerenter
15+
input[value=""] - mouseover: Left (0)
16+
input[value=""] - mouseenter: Left (0)
17+
input[value=""] - pointermove
18+
input[value=""] - mousemove: Left (0)
1319
input[value=""] - pointerdown
1420
input[value=""] - mousedown: Left (0)
1521
input[value=""] - focus
@@ -40,6 +46,12 @@ test('should fire the correct events with label', async () => {
4046
expect(getLabelEventCalls()).toMatchInlineSnapshot(`
4147
Events fired on: label[for="element"]
4248
49+
label[for="element"] - pointerover
50+
label[for="element"] - pointerenter
51+
label[for="element"] - mouseover: Left (0)
52+
label[for="element"] - mouseenter: Left (0)
53+
label[for="element"] - pointermove
54+
label[for="element"] - mousemove: Left (0)
4355
label[for="element"] - pointerdown
4456
label[for="element"] - mousedown: Left (0)
4557
label[for="element"] - pointerup

0 commit comments

Comments
 (0)