', () => {
div - pointerover
div - pointerenter
- div - mouseover: Left (0)
- div - mouseenter: Left (0)
+ div - mouseover
+ div - mouseenter
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
div - pointerdown
- div - mousedown: Left (0)
+ div - mousedown
div - pointerup
- div - mouseup: Left (0)
- div - click: Left (0)
+ div - mouseup
+ div - click
`)
})
@@ -184,18 +178,16 @@ test('should blur the previous element', () => {
Events fired on: div
input[name="b"][value=""] - pointerover
- div - pointerenter
- input[name="b"][value=""] - mouseover: Left (0)
- div - mouseenter: Left (0)
+ input[name="b"][value=""] - mouseover
input[name="b"][value=""] - pointermove
- input[name="b"][value=""] - mousemove: Left (0)
+ input[name="b"][value=""] - mousemove
input[name="b"][value=""] - pointerdown
- input[name="b"][value=""] - mousedown: Left (0)
+ input[name="b"][value=""] - mousedown
input[name="a"][value=""] - focusout
input[name="b"][value=""] - focusin
input[name="b"][value=""] - pointerup
- input[name="b"][value=""] - mouseup: Left (0)
- input[name="b"][value=""] - click: Left (0)
+ input[name="b"][value=""] - mouseup
+ input[name="b"][value=""] - click
`)
// focus/blur events don't bubble (but the focusout/focusin do!)
// we just want to make sure the blur was fired on a
@@ -224,16 +216,14 @@ test('should not blur the previous element when mousedown prevents default', ()
Events fired on: div
input[name="b"][value=""] - pointerover
- div - pointerenter
- input[name="b"][value=""] - mouseover: Left (0)
- div - mouseenter: Left (0)
+ input[name="b"][value=""] - mouseover
input[name="b"][value=""] - pointermove
- input[name="b"][value=""] - mousemove: Left (0)
+ input[name="b"][value=""] - mousemove
input[name="b"][value=""] - pointerdown
- input[name="b"][value=""] - mousedown: Left (0)
+ input[name="b"][value=""] - mousedown
input[name="b"][value=""] - pointerup
- input[name="b"][value=""] - mouseup: Left (0)
- input[name="b"][value=""] - click: Left (0)
+ input[name="b"][value=""] - mouseup
+ input[name="b"][value=""] - click
`)
// focus/blur events don't bubble (but the focusout do!)
// we just want to make sure the blur was fired on a
@@ -290,9 +280,21 @@ test('gives focus to the form control when clicking within a label', () => {
test('fires no events when clicking a label with a nested control that is disabled', () => {
const {element, getEventSnapshot} = setup(`
`)
userEvent.click(element)
- expect(getEventSnapshot()).toMatchInlineSnapshot(
- `No events were fired on: label`,
- )
+ expect(getEventSnapshot()).toMatchInlineSnapshot(`
+ Events fired on: label
+
+ label - pointerover
+ label - pointerenter
+ label - mouseover
+ label - mouseenter
+ label - pointermove
+ label - mousemove
+ label - pointerdown
+ label - mousedown
+ label - pointerup
+ label - mouseup
+ label - click
+ `)
})
test('does not crash if the label has no control', () => {
@@ -370,17 +372,17 @@ test('fires mouse events with the correct properties', () => {
const {element, getClickEventsSnapshot} = setup('
')
userEvent.click(element)
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
mousedown - button=0; buttons=1; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=0; buttons=1; detail=1
- click - button=0; buttons=1; detail=1
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
`)
})
@@ -391,17 +393,17 @@ test('fires mouse events with custom button property', () => {
altKey: true,
})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=1
- click - button=1; buttons=4; detail=1
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=1
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
`)
})
@@ -410,17 +412,17 @@ test('fires mouse events with custom buttons property', () => {
userEvent.click(element, {buttons: 4})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=1
- click - button=1; buttons=4; detail=1
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=1
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
`)
})
diff --git a/src/__tests__/dblclick.js b/src/__tests__/dblclick.js
index 9e5e7f0a..9fa248b6 100644
--- a/src/__tests__/dblclick.js
+++ b/src/__tests__/dblclick.js
@@ -9,23 +9,23 @@ test('fires the correct events on buttons', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
- button - dblclick: Left (0)
+ button - mouseup
+ button - click
+ button - dblclick
`)
})
@@ -56,29 +56,29 @@ test('fires the correct events on checkboxes', () => {
input[checked=false] - pointerover
input[checked=false] - pointerenter
- input[checked=false] - mouseover: Left (0)
- input[checked=false] - mouseenter: Left (0)
+ input[checked=false] - mouseover
+ input[checked=false] - mouseenter
input[checked=false] - pointermove
- input[checked=false] - mousemove: Left (0)
+ input[checked=false] - mousemove
input[checked=false] - pointerdown
- input[checked=false] - mousedown: Left (0)
+ input[checked=false] - mousedown
input[checked=false] - focus
input[checked=false] - focusin
input[checked=false] - pointerup
- input[checked=false] - mouseup: Left (0)
- input[checked=true] - click: Left (0)
+ input[checked=false] - mouseup
+ input[checked=true] - click
unchecked -> checked
input[checked=true] - input
input[checked=true] - change
input[checked=true] - pointerdown
- input[checked=true] - mousedown: Left (0)
+ input[checked=true] - mousedown
input[checked=true] - pointerup
- input[checked=true] - mouseup: Left (0)
- input[checked=false] - click: Left (0)
+ input[checked=true] - mouseup
+ input[checked=false] - click
checked -> unchecked
input[checked=false] - input
input[checked=false] - change
- input[checked=false] - dblclick: Left (0)
+ input[checked=false] - dblclick
`)
})
@@ -90,23 +90,23 @@ test('fires the correct events on regular inputs', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
- input[value=""] - dblclick: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
+ input[value=""] - dblclick
`)
})
@@ -118,21 +118,21 @@ test('fires the correct events on divs', () => {
div - pointerover
div - pointerenter
- div - mouseover: Left (0)
- div - mouseenter: Left (0)
+ div - mouseover
+ div - mouseenter
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
div - pointerdown
- div - mousedown: Left (0)
+ div - mousedown
div - pointerup
- div - mouseup: Left (0)
- div - click: Left (0)
+ div - mouseup
+ div - click
div - pointerdown
- div - mousedown: Left (0)
+ div - mousedown
div - pointerup
- div - mouseup: Left (0)
- div - click: Left (0)
- div - dblclick: Left (0)
+ div - mouseup
+ div - click
+ div - dblclick
`)
})
@@ -208,23 +208,23 @@ test('fires mouse events with the correct properties', () => {
const {element, getClickEventsSnapshot} = setup('
')
userEvent.dblClick(element)
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
mousedown - button=0; buttons=1; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=0; buttons=1; detail=1
- click - button=0; buttons=1; detail=1
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
mousedown - button=0; buttons=1; detail=2
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=0; buttons=1; detail=2
- click - button=0; buttons=1; detail=2
- dblclick - button=0; buttons=1; detail=2
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=2
+ click - button=0; buttons=0; detail=2
+ dblclick
`)
})
@@ -235,23 +235,23 @@ test('fires mouse events with custom button property', () => {
altKey: true,
})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=1
- click - button=1; buttons=4; detail=1
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=2
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=2
- click - button=1; buttons=4; detail=2
- dblclick - button=1; buttons=4; detail=2
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=1
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=2
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=2
+ click - button=0; buttons=0; detail=2
+ dblclick
`)
})
@@ -261,23 +261,23 @@ test('fires mouse events with custom buttons property', () => {
userEvent.dblClick(element, {buttons: 4})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
- pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointerover - pointerId=1; pointerType=mouse; isPrimary=undefined
+ pointerenter - pointerId=1; pointerType=mouse; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
- pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
+ pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=1
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=1
- click - button=1; buttons=4; detail=1
- pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mousedown - button=1; buttons=4; detail=2
- pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
- mouseup - button=1; buttons=4; detail=2
- click - button=1; buttons=4; detail=2
- dblclick - button=1; buttons=4; detail=2
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=1
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=1
+ click - button=0; buttons=0; detail=1
+ pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
+ mousedown - button=0; buttons=1; detail=2
+ pointerup - pointerId=1; pointerType=mouse; isPrimary=true
+ mouseup - button=0; buttons=0; detail=2
+ click - button=0; buttons=0; detail=2
+ dblclick
`)
})
diff --git a/src/__tests__/hover.js b/src/__tests__/hover.js
index 54cf0f12..a4166c08 100644
--- a/src/__tests__/hover.js
+++ b/src/__tests__/hover.js
@@ -10,10 +10,10 @@ test('hover', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
`)
})
@@ -34,9 +34,16 @@ test('no events fired on labels that contain disabled controls', () => {
const {element, getEventSnapshot} = setup('
')
userEvent.hover(element)
- expect(getEventSnapshot()).toMatchInlineSnapshot(
- `No events were fired on: label`,
- )
+ expect(getEventSnapshot()).toMatchInlineSnapshot(`
+ Events fired on: label
+
+ label - pointerover
+ label - pointerenter
+ label - mouseover
+ label - mouseenter
+ label - pointermove
+ label - mousemove
+ `)
})
test('fires non-bubbling events on parents for hover', () => {
@@ -70,15 +77,13 @@ test('fires non-bubbling events on parents for hover', () => {
userEvent.hover(button)
expect(calls.join('\n')).toMatchInlineSnapshot(`
-BUTTON: pointerover
-DIV: pointerover
-DIV: pointerenter
-BUTTON: pointerenter
-BUTTON: mouseover
-DIV: mouseover
-DIV: mouseenter
-BUTTON: mouseenter
-`)
+ BUTTON: pointerover
+ DIV: pointerover
+ BUTTON: pointerenter
+ BUTTON: mouseover
+ DIV: mouseover
+ BUTTON: mouseenter
+ `)
})
test('fires non-bubbling events on parents for unhover', () => {
@@ -112,15 +117,13 @@ test('fires non-bubbling events on parents for unhover', () => {
userEvent.unhover(button)
expect(calls.join('\n')).toMatchInlineSnapshot(`
-BUTTON: pointerout
-DIV: pointerout
-BUTTON: pointerleave
-DIV: pointerleave
-BUTTON: mouseout
-DIV: mouseout
-BUTTON: mouseleave
-DIV: mouseleave
-`)
+ BUTTON: pointerout
+ DIV: pointerout
+ BUTTON: pointerleave
+ BUTTON: mouseout
+ DIV: mouseout
+ BUTTON: mouseleave
+ `)
})
test('throws when hovering element with pointer-events set to none', () => {
@@ -138,9 +141,9 @@ test('does not throws when hover element with pointer-events set to none and ski
div - pointerover
div - pointerenter
- div - mouseover: Left (0)
- div - mouseenter: Left (0)
+ div - mouseover
+ div - mouseenter
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
`)
})
diff --git a/src/__tests__/keyboard/plugin/functional.ts b/src/__tests__/keyboard/plugin/functional.ts
index 68650e0b..69a11895 100644
--- a/src/__tests__/keyboard/plugin/functional.ts
+++ b/src/__tests__/keyboard/plugin/functional.ts
@@ -11,17 +11,17 @@ test('produce extra events for the Control key when AltGraph is pressed', () =>
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Control (17)
input[value=""] - keydown: AltGraph (0)
input[value=""] - keyup: AltGraph (0)
@@ -40,17 +40,17 @@ test('backspace to valid value', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 5 (53)
input[value=""] - keypress: 5 (53)
input[value="5"] - input
diff --git a/src/__tests__/pointer/index.ts b/src/__tests__/pointer/index.ts
index 214fcf78..a5e570bd 100644
--- a/src/__tests__/pointer/index.ts
+++ b/src/__tests__/pointer/index.ts
@@ -9,15 +9,16 @@ test('double click', () => {
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=2
+ mousedown - button=0; buttons=1; detail=2
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=2
click - button=0; buttons=0; detail=2
+ dblclick
`)
})
@@ -29,12 +30,12 @@ test('two clicks', () => {
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
@@ -52,7 +53,7 @@ test('drag sequence', () => {
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointermove - pointerId=1; pointerType=mouse; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
@@ -72,16 +73,16 @@ test('hover to other element', () => {
expect(getEventSnapshot()).toMatchInlineSnapshot(`
Events fired on: div
- div - pointerenter
- div - mouseenter
+ div - pointerover
+ div - mouseover
div - pointermove
div - mousemove
div - pointermove
div - mousemove
- div - pointerleave
- div - mouseleave
- div - pointerenter
- div - mouseenter
+ div - pointerout
+ div - mouseout
+ div - pointerover
+ div - mouseover
div - pointermove
div - mousemove
`)
@@ -108,22 +109,22 @@ test('hover inside element', () => {
div - mousemove
div - pointermove
div - mousemove
- a - pointerenter
- a - mouseenter
+ a - pointerover
+ a - mouseover
a - pointermove
a - mousemove
a - pointermove
a - mousemove
- a - pointerleave
- a - mouseleave
- p - pointerenter
- p - mouseenter
+ a - pointerout
+ a - mouseout
+ p - pointerover
+ p - mouseover
p - pointermove
p - mousemove
p - pointermove
p - mousemove
- p - pointerleave
- p - mouseleave
+ p - pointerout
+ p - mouseout
div - pointermove
div - mousemove
`)
@@ -137,12 +138,12 @@ test('continue previous target', () => {
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
@@ -159,19 +160,21 @@ test('other keys reset click counter, but keyup/click still uses the old count',
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=2
- mousedown - button=1; buttons=0; detail=1
- mouseup - button=1; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=2
+ mousedown - button=2; buttons=3; detail=1
+ mouseup - button=2; buttons=1; detail=1
+ contextmenu - button=0; buttons=0; detail=0
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=2
click - button=0; buttons=0; detail=2
+ dblclick
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
@@ -227,6 +230,7 @@ test('double click per touch device', () => {
mousedown - button=0; buttons=0; detail=2
mouseup - button=0; buttons=0; detail=2
click - button=0; buttons=0; detail=2
+ dblclick
`)
})
@@ -295,14 +299,14 @@ test('move touch over elements', () => {
div - pointerenter
div - pointerdown
div - pointermove
- a - pointerenter
+ a - pointerover
a - pointermove
a - pointermove
- a - pointerleave
- p - pointerenter
+ a - pointerout
+ p - pointerover
p - pointermove
p - pointermove
- p - pointerleave
+ p - pointerout
div - pointermove
div - pointerup
div - pointerout
@@ -379,7 +383,7 @@ test('asynchronous pointer', async () => {
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerdown - pointerId=1; pointerType=mouse; isPrimary=true
- mousedown - button=0; buttons=0; detail=1
+ mousedown - button=0; buttons=1; detail=1
pointerup - pointerId=1; pointerType=mouse; isPrimary=true
mouseup - button=0; buttons=0; detail=1
click - button=0; buttons=0; detail=1
diff --git a/src/__tests__/select-options.js b/src/__tests__/select-options.js
index 68ed21ca..accfa5d9 100644
--- a/src/__tests__/select-options.js
+++ b/src/__tests__/select-options.js
@@ -9,17 +9,17 @@ test('fires correct events', () => {
select[name="select"][value="1"] - pointerover
select[name="select"][value="1"] - pointerenter
- select[name="select"][value="1"] - mouseover: Left (0)
- select[name="select"][value="1"] - mouseenter: Left (0)
+ select[name="select"][value="1"] - mouseover
+ select[name="select"][value="1"] - mouseenter
select[name="select"][value="1"] - pointermove
- select[name="select"][value="1"] - mousemove: Left (0)
+ select[name="select"][value="1"] - mousemove
select[name="select"][value="1"] - pointerdown
- select[name="select"][value="1"] - mousedown: Left (0)
+ select[name="select"][value="1"] - mousedown
select[name="select"][value="1"] - focus
select[name="select"][value="1"] - focusin
select[name="select"][value="1"] - pointerup
- select[name="select"][value="1"] - mouseup: Left (0)
- select[name="select"][value="1"] - click: Left (0)
+ select[name="select"][value="1"] - mouseup
+ select[name="select"][value="1"] - click
select[name="select"][value="2"] - input
select[name="select"][value="2"] - change
select[name="select"][value="2"] - pointerover
@@ -43,28 +43,22 @@ test('fires correct events on listBox select', () => {
Events fired on: ul[value="2"]
li#2[value="2"][aria-selected=false] - pointerover
- ul - pointerenter
- li#2[value="2"][aria-selected=false] - mouseover: Left (0)
- ul - mouseenter: Left (0)
+ li#2[value="2"][aria-selected=false] - mouseover
li#2[value="2"][aria-selected=false] - pointermove
- li#2[value="2"][aria-selected=false] - mousemove: Left (0)
+ li#2[value="2"][aria-selected=false] - mousemove
li#2[value="2"][aria-selected=false] - pointerover
- ul - pointerenter
- li#2[value="2"][aria-selected=false] - mouseover: Left (0)
- ul - mouseenter: Left (0)
+ li#2[value="2"][aria-selected=false] - mouseover
li#2[value="2"][aria-selected=false] - pointermove
- li#2[value="2"][aria-selected=false] - mousemove: Left (0)
+ li#2[value="2"][aria-selected=false] - mousemove
li#2[value="2"][aria-selected=false] - pointerdown
- li#2[value="2"][aria-selected=false] - mousedown: Left (0)
+ li#2[value="2"][aria-selected=false] - mousedown
li#2[value="2"][aria-selected=false] - pointerup
- li#2[value="2"][aria-selected=false] - mouseup: Left (0)
- li#2[value="2"][aria-selected=true] - click: Left (0)
+ li#2[value="2"][aria-selected=false] - mouseup
+ li#2[value="2"][aria-selected=true] - click
li#2[value="2"][aria-selected=true] - pointermove
- li#2[value="2"][aria-selected=true] - mousemove: Left (0)
+ li#2[value="2"][aria-selected=true] - mousemove
li#2[value="2"][aria-selected=true] - pointerout
- ul[value="2"] - pointerleave
- li#2[value="2"][aria-selected=true] - mouseout: Left (0)
- ul[value="2"] - mouseleave: Left (0)
+ li#2[value="2"][aria-selected=true] - mouseout
`)
const [o1, o2, o3] = options
expect(o1).toHaveAttribute('aria-selected', 'false')
@@ -272,17 +266,17 @@ test('fires correct events when pointer events set to none but skipPointerEvents
select[name="select"][value="1"] - pointerover
select[name="select"][value="1"] - pointerenter
- select[name="select"][value="1"] - mouseover: Left (0)
- select[name="select"][value="1"] - mouseenter: Left (0)
+ select[name="select"][value="1"] - mouseover
+ select[name="select"][value="1"] - mouseenter
select[name="select"][value="1"] - pointermove
- select[name="select"][value="1"] - mousemove: Left (0)
+ select[name="select"][value="1"] - mousemove
select[name="select"][value="1"] - pointerdown
- select[name="select"][value="1"] - mousedown: Left (0)
+ select[name="select"][value="1"] - mousedown
select[name="select"][value="1"] - focus
select[name="select"][value="1"] - focusin
select[name="select"][value="1"] - pointerup
- select[name="select"][value="1"] - mouseup: Left (0)
- select[name="select"][value="1"] - click: Left (0)
+ select[name="select"][value="1"] - mouseup
+ select[name="select"][value="1"] - click
select[name="select"][value="2"] - input
select[name="select"][value="2"] - change
select[name="select"][value="2"] - pointerover
diff --git a/src/__tests__/type-modifiers.js b/src/__tests__/type-modifiers.js
index 0cbafebf..3dc62171 100644
--- a/src/__tests__/type-modifiers.js
+++ b/src/__tests__/type-modifiers.js
@@ -25,17 +25,17 @@ test('{esc} triggers typing the escape character', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Escape (27)
input[value=""] - keyup: Escape (27)
`)
@@ -49,17 +49,17 @@ test('a{backspace}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: a (97)
input[value=""] - keypress: a (97)
input[value="a"] - input
@@ -78,17 +78,17 @@ test('{backspace}a', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Backspace (8)
input[value=""] - keyup: Backspace (8)
input[value=""] - keydown: a (97)
@@ -110,17 +110,17 @@ test('{backspace} triggers typing the backspace character and deletes the charac
input[value="yo"] - select
input[value="yo"] - pointerover
input[value="yo"] - pointerenter
- input[value="yo"] - mouseover: Left (0)
- input[value="yo"] - mouseenter: Left (0)
+ input[value="yo"] - mouseover
+ input[value="yo"] - mouseenter
input[value="yo"] - pointermove
- input[value="yo"] - mousemove: Left (0)
+ input[value="yo"] - mousemove
input[value="yo"] - pointerdown
- input[value="yo"] - mousedown: Left (0)
+ input[value="yo"] - mousedown
input[value="yo"] - focus
input[value="yo"] - focusin
input[value="yo"] - pointerup
- input[value="yo"] - mouseup: Left (0)
- input[value="yo"] - click: Left (0)
+ input[value="yo"] - mouseup
+ input[value="yo"] - click
input[value="yo"] - keydown: Backspace (8)
input[value="o"] - select
input[value="o"] - input
@@ -140,17 +140,17 @@ test('{backspace} on a readOnly input', () => {
input[value="yo"] - select
input[value="yo"] - pointerover
input[value="yo"] - pointerenter
- input[value="yo"] - mouseover: Left (0)
- input[value="yo"] - mouseenter: Left (0)
+ input[value="yo"] - mouseover
+ input[value="yo"] - mouseenter
input[value="yo"] - pointermove
- input[value="yo"] - mousemove: Left (0)
+ input[value="yo"] - mousemove
input[value="yo"] - pointerdown
- input[value="yo"] - mousedown: Left (0)
+ input[value="yo"] - mousedown
input[value="yo"] - focus
input[value="yo"] - focusin
input[value="yo"] - pointerup
- input[value="yo"] - mouseup: Left (0)
- input[value="yo"] - click: Left (0)
+ input[value="yo"] - mouseup
+ input[value="yo"] - click
input[value="yo"] - keydown: Backspace (8)
input[value="yo"] - keyup: Backspace (8)
`)
@@ -170,17 +170,17 @@ test('{backspace} does not fire input if keydown prevents default', () => {
input[value="yo"] - select
input[value="yo"] - pointerover
input[value="yo"] - pointerenter
- input[value="yo"] - mouseover: Left (0)
- input[value="yo"] - mouseenter: Left (0)
+ input[value="yo"] - mouseover
+ input[value="yo"] - mouseenter
input[value="yo"] - pointermove
- input[value="yo"] - mousemove: Left (0)
+ input[value="yo"] - mousemove
input[value="yo"] - pointerdown
- input[value="yo"] - mousedown: Left (0)
+ input[value="yo"] - mousedown
input[value="yo"] - focus
input[value="yo"] - focusin
input[value="yo"] - pointerup
- input[value="yo"] - mouseup: Left (0)
- input[value="yo"] - click: Left (0)
+ input[value="yo"] - mouseup
+ input[value="yo"] - click
input[value="yo"] - keydown: Backspace (8)
input[value="yo"] - keyup: Backspace (8)
`)
@@ -198,17 +198,17 @@ test('{backspace} deletes the selected range', () => {
input[value="Hi there"] - select
input[value="Hi there"] - pointerover
input[value="Hi there"] - pointerenter
- input[value="Hi there"] - mouseover: Left (0)
- input[value="Hi there"] - mouseenter: Left (0)
+ input[value="Hi there"] - mouseover
+ input[value="Hi there"] - mouseenter
input[value="Hi there"] - pointermove
- input[value="Hi there"] - mousemove: Left (0)
+ input[value="Hi there"] - mousemove
input[value="Hi there"] - pointerdown
- input[value="Hi there"] - mousedown: Left (0)
+ input[value="Hi there"] - mousedown
input[value="Hi there"] - focus
input[value="Hi there"] - focusin
input[value="Hi there"] - pointerup
- input[value="Hi there"] - mouseup: Left (0)
- input[value="Hi there"] - click: Left (0)
+ input[value="Hi there"] - mouseup
+ input[value="Hi there"] - click
input[value="Hi there"] - keydown: Backspace (8)
input[value="Here"] - select
input[value="Here"] - input
@@ -234,17 +234,17 @@ test('{alt}a{/alt}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Alt (18) {alt}
input[value=""] - keydown: a (97) {alt}
input[value=""] - keyup: a (97) {alt}
@@ -262,17 +262,17 @@ test('{meta}a{/meta}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Meta (93) {meta}
input[value=""] - keydown: a (97) {meta}
input[value=""] - keypress: a (97) {meta}
@@ -292,17 +292,17 @@ test('{ctrl}a{/ctrl}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Control (17) {ctrl}
input[value=""] - keydown: a (97) {ctrl}
input[value=""] - keyup: a (97) {ctrl}
@@ -320,17 +320,17 @@ test('{shift}a{/shift}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Shift (16) {shift}
input[value=""] - keydown: a (97) {shift}
input[value=""] - keypress: a (97) {shift}
@@ -351,17 +351,17 @@ test('{capslock}a{capslock}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: CapsLock (20)
input[value=""] - keyup: CapsLock (20)
input[value=""] - keydown: a (97)
@@ -383,17 +383,17 @@ test('a{enter}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: a (97)
input[value=""] - keypress: a (97)
input[value="a"] - input
@@ -418,17 +418,17 @@ test('{enter} with preventDefault keydown', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Enter (13)
input[value=""] - keyup: Enter (13)
`)
@@ -444,17 +444,17 @@ test('{enter} on a button', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: Enter (13)
button - keypress: Enter (13)
button - click: Left (0)
@@ -476,17 +476,17 @@ test('{enter} on a button when keydown calls prevent default', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: Enter (13)
button - keyup: Enter (13)
`)
@@ -506,17 +506,17 @@ test('{enter} on a button when keypress calls prevent default', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: Enter (13)
button - keypress: Enter (13)
button - keyup: Enter (13)
@@ -533,17 +533,17 @@ test('{space} on a button', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: (32)
button - keypress: (32)
button - keyup: (32)
@@ -561,17 +561,17 @@ test(`' ' on a button is the same as '{space}'`, () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: (32)
button - keypress: (32)
button - keyup: (32)
@@ -593,17 +593,17 @@ test('{space} with preventDefault keydown on button', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: (32)
button - keyup: (32)
`)
@@ -623,17 +623,17 @@ test('{space} with preventDefault keyup on button', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: (32)
button - keypress: (32)
button - keyup: (32)
@@ -650,17 +650,17 @@ test('{space} on an input', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: (32)
input[value=""] - keypress: (32)
input[value=" "] - input
@@ -680,17 +680,17 @@ test('{enter} on an input type="color" fires same events as a button', () => {
input[value="#ffffff"] - pointerover
input[value="#ffffff"] - pointerenter
- input[value="#ffffff"] - mouseover: Left (0)
- input[value="#ffffff"] - mouseenter: Left (0)
+ input[value="#ffffff"] - mouseover
+ input[value="#ffffff"] - mouseenter
input[value="#ffffff"] - pointermove
- input[value="#ffffff"] - mousemove: Left (0)
+ input[value="#ffffff"] - mousemove
input[value="#ffffff"] - pointerdown
- input[value="#ffffff"] - mousedown: Left (0)
+ input[value="#ffffff"] - mousedown
input[value="#ffffff"] - focus
input[value="#ffffff"] - focusin
input[value="#ffffff"] - pointerup
- input[value="#ffffff"] - mouseup: Left (0)
- input[value="#ffffff"] - click: Left (0)
+ input[value="#ffffff"] - mouseup
+ input[value="#ffffff"] - click
input[value="#ffffff"] - keydown: Enter (13)
input[value="#ffffff"] - keypress: Enter (13)
input[value="#ffffff"] - click: Left (0)
@@ -710,17 +710,17 @@ test('{space} on an input type="color" fires same events as a button', () => {
input[value="#ffffff"] - pointerover
input[value="#ffffff"] - pointerenter
- input[value="#ffffff"] - mouseover: Left (0)
- input[value="#ffffff"] - mouseenter: Left (0)
+ input[value="#ffffff"] - mouseover
+ input[value="#ffffff"] - mouseenter
input[value="#ffffff"] - pointermove
- input[value="#ffffff"] - mousemove: Left (0)
+ input[value="#ffffff"] - mousemove
input[value="#ffffff"] - pointerdown
- input[value="#ffffff"] - mousedown: Left (0)
+ input[value="#ffffff"] - mousedown
input[value="#ffffff"] - focus
input[value="#ffffff"] - focusin
input[value="#ffffff"] - pointerup
- input[value="#ffffff"] - mouseup: Left (0)
- input[value="#ffffff"] - click: Left (0)
+ input[value="#ffffff"] - mouseup
+ input[value="#ffffff"] - click
input[value="#ffffff"] - keydown: (32)
input[value="#ffffff"] - keypress: (32)
input[value="#ffffff"] - keyup: (32)
@@ -740,17 +740,17 @@ test(`' ' on input type="color" is the same as '{space}'`, () => {
input[value="#ffffff"] - pointerover
input[value="#ffffff"] - pointerenter
- input[value="#ffffff"] - mouseover: Left (0)
- input[value="#ffffff"] - mouseenter: Left (0)
+ input[value="#ffffff"] - mouseover
+ input[value="#ffffff"] - mouseenter
input[value="#ffffff"] - pointermove
- input[value="#ffffff"] - mousemove: Left (0)
+ input[value="#ffffff"] - mousemove
input[value="#ffffff"] - pointerdown
- input[value="#ffffff"] - mousedown: Left (0)
+ input[value="#ffffff"] - mousedown
input[value="#ffffff"] - focus
input[value="#ffffff"] - focusin
input[value="#ffffff"] - pointerup
- input[value="#ffffff"] - mouseup: Left (0)
- input[value="#ffffff"] - click: Left (0)
+ input[value="#ffffff"] - mouseup
+ input[value="#ffffff"] - click
input[value="#ffffff"] - keydown: (32)
input[value="#ffffff"] - keypress: (32)
input[value="#ffffff"] - keyup: (32)
@@ -768,17 +768,17 @@ test('{enter} on a textarea', () => {
textarea[value=""] - pointerover
textarea[value=""] - pointerenter
- textarea[value=""] - mouseover: Left (0)
- textarea[value=""] - mouseenter: Left (0)
+ textarea[value=""] - mouseover
+ textarea[value=""] - mouseenter
textarea[value=""] - pointermove
- textarea[value=""] - mousemove: Left (0)
+ textarea[value=""] - mousemove
textarea[value=""] - pointerdown
- textarea[value=""] - mousedown: Left (0)
+ textarea[value=""] - mousedown
textarea[value=""] - focus
textarea[value=""] - focusin
textarea[value=""] - pointerup
- textarea[value=""] - mouseup: Left (0)
- textarea[value=""] - click: Left (0)
+ textarea[value=""] - mouseup
+ textarea[value=""] - click
textarea[value=""] - keydown: Enter (13)
textarea[value=""] - keypress: Enter (13)
textarea[value="\\n"] - input
@@ -798,17 +798,17 @@ test('{enter} on a textarea when keydown calls prevent default', () => {
textarea[value=""] - pointerover
textarea[value=""] - pointerenter
- textarea[value=""] - mouseover: Left (0)
- textarea[value=""] - mouseenter: Left (0)
+ textarea[value=""] - mouseover
+ textarea[value=""] - mouseenter
textarea[value=""] - pointermove
- textarea[value=""] - mousemove: Left (0)
+ textarea[value=""] - mousemove
textarea[value=""] - pointerdown
- textarea[value=""] - mousedown: Left (0)
+ textarea[value=""] - mousedown
textarea[value=""] - focus
textarea[value=""] - focusin
textarea[value=""] - pointerup
- textarea[value=""] - mouseup: Left (0)
- textarea[value=""] - click: Left (0)
+ textarea[value=""] - mouseup
+ textarea[value=""] - click
textarea[value=""] - keydown: Enter (13)
textarea[value=""] - keyup: Enter (13)
`)
@@ -826,17 +826,17 @@ test('{enter} on a textarea when keypress calls prevent default', () => {
textarea[value=""] - pointerover
textarea[value=""] - pointerenter
- textarea[value=""] - mouseover: Left (0)
- textarea[value=""] - mouseenter: Left (0)
+ textarea[value=""] - mouseover
+ textarea[value=""] - mouseenter
textarea[value=""] - pointermove
- textarea[value=""] - mousemove: Left (0)
+ textarea[value=""] - mousemove
textarea[value=""] - pointerdown
- textarea[value=""] - mousedown: Left (0)
+ textarea[value=""] - mousedown
textarea[value=""] - focus
textarea[value=""] - focusin
textarea[value=""] - pointerup
- textarea[value=""] - mouseup: Left (0)
- textarea[value=""] - click: Left (0)
+ textarea[value=""] - mouseup
+ textarea[value=""] - click
textarea[value=""] - keydown: Enter (13)
textarea[value=""] - keypress: Enter (13)
textarea[value=""] - keyup: Enter (13)
@@ -853,17 +853,17 @@ test('{meta}{enter}{/meta} on a button', () => {
button - pointerover
button - pointerenter
- button - mouseover: Left (0)
- button - mouseenter: Left (0)
+ button - mouseover
+ button - mouseenter
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerdown
- button - mousedown: Left (0)
+ button - mousedown
button - focus
button - focusin
button - pointerup
- button - mouseup: Left (0)
- button - click: Left (0)
+ button - mouseup
+ button - click
button - keydown: Meta (93) {meta}
button - keydown: Enter (13) {meta}
button - keypress: Enter (13) {meta}
@@ -883,17 +883,17 @@ test('{meta}{alt}{ctrl}a{/ctrl}{/alt}{/meta}', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Meta (93) {meta}
input[value=""] - keydown: Alt (18) {alt}{meta}
input[value=""] - keydown: Control (17) {alt}{meta}{ctrl}
@@ -923,17 +923,17 @@ test('{selectall} selects all the text', () => {
input[value="abcdefg"] - pointerover
input[value="abcdefg"] - pointerenter
- input[value="abcdefg"] - mouseover: Left (0)
- input[value="abcdefg"] - mouseenter: Left (0)
+ input[value="abcdefg"] - mouseover
+ input[value="abcdefg"] - mouseenter
input[value="abcdefg"] - pointermove
- input[value="abcdefg"] - mousemove: Left (0)
+ input[value="abcdefg"] - mousemove
input[value="abcdefg"] - pointerdown
- input[value="abcdefg"] - mousedown: Left (0)
+ input[value="abcdefg"] - mousedown
input[value="abcdefg"] - focus
input[value="abcdefg"] - focusin
input[value="abcdefg"] - pointerup
- input[value="abcdefg"] - mouseup: Left (0)
- input[value="abcdefg"] - click: Left (0)
+ input[value="abcdefg"] - mouseup
+ input[value="abcdefg"] - click
input[value="abcdefg"] - select
`)
})
@@ -953,17 +953,17 @@ test('{del} at the start of the input', () => {
input[value="hello"] - pointerover
input[value="hello"] - pointerenter
- input[value="hello"] - mouseover: Left (0)
- input[value="hello"] - mouseenter: Left (0)
+ input[value="hello"] - mouseover
+ input[value="hello"] - mouseenter
input[value="hello"] - pointermove
- input[value="hello"] - mousemove: Left (0)
+ input[value="hello"] - mousemove
input[value="hello"] - pointerdown
- input[value="hello"] - mousedown: Left (0)
+ input[value="hello"] - mousedown
input[value="hello"] - focus
input[value="hello"] - focusin
input[value="hello"] - pointerup
- input[value="hello"] - mouseup: Left (0)
- input[value="hello"] - click: Left (0)
+ input[value="hello"] - mouseup
+ input[value="hello"] - click
input[value="hello"] - keydown: Delete (46)
input[value="ello"] - select
input[value="ello"] - input
@@ -983,17 +983,17 @@ test('{del} at end of the input', () => {
input[value="hello"] - pointerover
input[value="hello"] - pointerenter
- input[value="hello"] - mouseover: Left (0)
- input[value="hello"] - mouseenter: Left (0)
+ input[value="hello"] - mouseover
+ input[value="hello"] - mouseenter
input[value="hello"] - pointermove
- input[value="hello"] - mousemove: Left (0)
+ input[value="hello"] - mousemove
input[value="hello"] - pointerdown
- input[value="hello"] - mousedown: Left (0)
+ input[value="hello"] - mousedown
input[value="hello"] - focus
input[value="hello"] - focusin
input[value="hello"] - pointerup
- input[value="hello"] - mouseup: Left (0)
- input[value="hello"] - click: Left (0)
+ input[value="hello"] - mouseup
+ input[value="hello"] - click
input[value="hello"] - select
input[value="hello"] - keydown: Delete (46)
input[value="hello"] - keyup: Delete (46)
@@ -1015,17 +1015,17 @@ test('{del} in the middle of the input', () => {
input[value="hello"] - pointerover
input[value="hello"] - pointerenter
- input[value="hello"] - mouseover: Left (0)
- input[value="hello"] - mouseenter: Left (0)
+ input[value="hello"] - mouseover
+ input[value="hello"] - mouseenter
input[value="hello"] - pointermove
- input[value="hello"] - mousemove: Left (0)
+ input[value="hello"] - mousemove
input[value="hello"] - pointerdown
- input[value="hello"] - mousedown: Left (0)
+ input[value="hello"] - mousedown
input[value="hello"] - focus
input[value="hello"] - focusin
input[value="hello"] - pointerup
- input[value="hello"] - mouseup: Left (0)
- input[value="hello"] - click: Left (0)
+ input[value="hello"] - mouseup
+ input[value="hello"] - click
input[value="hello"] - select
input[value="hello"] - keydown: Delete (46)
input[value="helo"] - select
@@ -1049,17 +1049,17 @@ test('{del} with a selection range', () => {
input[value="hello"] - pointerover
input[value="hello"] - pointerenter
- input[value="hello"] - mouseover: Left (0)
- input[value="hello"] - mouseenter: Left (0)
+ input[value="hello"] - mouseover
+ input[value="hello"] - mouseenter
input[value="hello"] - pointermove
- input[value="hello"] - mousemove: Left (0)
+ input[value="hello"] - mousemove
input[value="hello"] - pointerdown
- input[value="hello"] - mousedown: Left (0)
+ input[value="hello"] - mousedown
input[value="hello"] - focus
input[value="hello"] - focusin
input[value="hello"] - pointerup
- input[value="hello"] - mouseup: Left (0)
- input[value="hello"] - click: Left (0)
+ input[value="hello"] - mouseup
+ input[value="hello"] - click
input[value="hello"] - select
input[value="hello"] - keydown: Delete (46)
input[value="hlo"] - select
@@ -1104,17 +1104,17 @@ test('any remaining type modifiers are automatically released at the end', () =>
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Meta (93) {meta}
input[value=""] - keydown: Alt (18) {alt}{meta}
input[value=""] - keydown: Control (17) {alt}{meta}{ctrl}
@@ -1136,17 +1136,17 @@ test('modifiers will not be closed if skipAutoClose is enabled', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: Meta (93) {meta}
input[value=""] - keydown: a (97) {meta}
input[value=""] - keypress: a (97) {meta}
diff --git a/src/__tests__/type.js b/src/__tests__/type.js
index 882ec5df..11ccf665 100644
--- a/src/__tests__/type.js
+++ b/src/__tests__/type.js
@@ -11,17 +11,17 @@ test('types text in input', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: S (83)
input[value=""] - keypress: S (83)
input[value="S"] - input
@@ -72,17 +72,17 @@ test('types text inside custom element', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: S (83)
input[value=""] - keypress: S (83)
input[value="S"] - input
@@ -106,17 +106,17 @@ test('types text in textarea', () => {
textarea[value=""] - pointerover
textarea[value=""] - pointerenter
- textarea[value=""] - mouseover: Left (0)
- textarea[value=""] - mouseenter: Left (0)
+ textarea[value=""] - mouseover
+ textarea[value=""] - mouseenter
textarea[value=""] - pointermove
- textarea[value=""] - mousemove: Left (0)
+ textarea[value=""] - mousemove
textarea[value=""] - pointerdown
- textarea[value=""] - mousedown: Left (0)
+ textarea[value=""] - mousedown
textarea[value=""] - focus
textarea[value=""] - focusin
textarea[value=""] - pointerup
- textarea[value=""] - mouseup: Left (0)
- textarea[value=""] - click: Left (0)
+ textarea[value=""] - mouseup
+ textarea[value=""] - click
textarea[value=""] - keydown: S (83)
textarea[value=""] - keypress: S (83)
textarea[value="S"] - input
@@ -143,17 +143,17 @@ test('does not fire input event when keypress calls prevent default', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: a (97)
input[value=""] - keypress: a (97)
input[value=""] - keyup: a (97)
@@ -171,17 +171,17 @@ test('does not fire keypress or input events when keydown calls prevent default'
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: a (97)
input[value=""] - keyup: a (97)
`)
@@ -205,17 +205,17 @@ test('does not fire input when readonly', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: a (97)
input[value=""] - keypress: a (97)
input[value=""] - keyup: a (97)
@@ -315,17 +315,17 @@ test('typing into a controlled input works', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 2 (50)
input[value=""] - keypress: 2 (50)
input[value="2"] - input
@@ -351,17 +351,17 @@ test('typing in the middle of a controlled input works', () => {
input[value="$23"] - select
input[value="$23"] - pointerover
input[value="$23"] - pointerenter
- input[value="$23"] - mouseover: Left (0)
- input[value="$23"] - mouseenter: Left (0)
+ input[value="$23"] - mouseover
+ input[value="$23"] - mouseenter
input[value="$23"] - pointermove
- input[value="$23"] - mousemove: Left (0)
+ input[value="$23"] - mousemove
input[value="$23"] - pointerdown
- input[value="$23"] - mousedown: Left (0)
+ input[value="$23"] - mousedown
input[value="$23"] - focus
input[value="$23"] - focusin
input[value="$23"] - pointerup
- input[value="$23"] - mouseup: Left (0)
- input[value="$23"] - click: Left (0)
+ input[value="$23"] - mouseup
+ input[value="$23"] - click
input[value="$23"] - keydown: 1 (49)
input[value="$23"] - keypress: 1 (49)
input[value="$213"] - select
@@ -393,17 +393,17 @@ test('ignored {backspace} in controlled input', () => {
input[value="$23"] - select
input[value="$23"] - pointerover
input[value="$23"] - pointerenter
- input[value="$23"] - mouseover: Left (0)
- input[value="$23"] - mouseenter: Left (0)
+ input[value="$23"] - mouseover
+ input[value="$23"] - mouseenter
input[value="$23"] - pointermove
- input[value="$23"] - mousemove: Left (0)
+ input[value="$23"] - mousemove
input[value="$23"] - pointerdown
- input[value="$23"] - mousedown: Left (0)
+ input[value="$23"] - mousedown
input[value="$23"] - focus
input[value="$23"] - focusin
input[value="$23"] - pointerup
- input[value="$23"] - mouseup: Left (0)
- input[value="$23"] - click: Left (0)
+ input[value="$23"] - mouseup
+ input[value="$23"] - click
input[value="$23"] - keydown: Backspace (8)
input[value="23"] - select
input[value="23"] - input
@@ -411,15 +411,15 @@ test('ignored {backspace} in controlled input', () => {
input[value="$23"] - keyup: Backspace (8)
input[value="$23"] - pointerover
input[value="$23"] - pointerenter
- input[value="$23"] - mouseover: Left (0)
- input[value="$23"] - mouseenter: Left (0)
+ input[value="$23"] - mouseover
+ input[value="$23"] - mouseenter
input[value="$23"] - pointermove
- input[value="$23"] - mousemove: Left (0)
+ input[value="$23"] - mousemove
input[value="$23"] - pointerdown
- input[value="$23"] - mousedown: Left (0)
+ input[value="$23"] - mousedown
input[value="$23"] - pointerup
- input[value="$23"] - mouseup: Left (0)
- input[value="$23"] - click: Left (0)
+ input[value="$23"] - mouseup
+ input[value="$23"] - click
input[value="$23"] - keydown: 4 (52)
input[value="$23"] - keypress: 4 (52)
input[value="$234"] - input
@@ -445,17 +445,17 @@ test('typing in a textarea with existing text', () => {
textarea[value="Hello, "] - pointerover
textarea[value="Hello, "] - pointerenter
- textarea[value="Hello, "] - mouseover: Left (0)
- textarea[value="Hello, "] - mouseenter: Left (0)
+ textarea[value="Hello, "] - mouseover
+ textarea[value="Hello, "] - mouseenter
textarea[value="Hello, "] - pointermove
- textarea[value="Hello, "] - mousemove: Left (0)
+ textarea[value="Hello, "] - mousemove
textarea[value="Hello, "] - pointerdown
- textarea[value="Hello, "] - mousedown: Left (0)
+ textarea[value="Hello, "] - mousedown
textarea[value="Hello, "] - focus
textarea[value="Hello, "] - focusin
textarea[value="Hello, "] - pointerup
- textarea[value="Hello, "] - mouseup: Left (0)
- textarea[value="Hello, "] - click: Left (0)
+ textarea[value="Hello, "] - mouseup
+ textarea[value="Hello, "] - click
textarea[value="Hello, "] - select
textarea[value="Hello, "] - keydown: 1 (49)
textarea[value="Hello, "] - keypress: 1 (49)
@@ -484,17 +484,17 @@ test('accepts an initialSelectionStart and initialSelectionEnd', () => {
textarea[value="Hello, "] - select
textarea[value="Hello, "] - pointerover
textarea[value="Hello, "] - pointerenter
- textarea[value="Hello, "] - mouseover: Left (0)
- textarea[value="Hello, "] - mouseenter: Left (0)
+ textarea[value="Hello, "] - mouseover
+ textarea[value="Hello, "] - mouseenter
textarea[value="Hello, "] - pointermove
- textarea[value="Hello, "] - mousemove: Left (0)
+ textarea[value="Hello, "] - mousemove
textarea[value="Hello, "] - pointerdown
- textarea[value="Hello, "] - mousedown: Left (0)
+ textarea[value="Hello, "] - mousedown
textarea[value="Hello, "] - focus
textarea[value="Hello, "] - focusin
textarea[value="Hello, "] - pointerup
- textarea[value="Hello, "] - mouseup: Left (0)
- textarea[value="Hello, "] - click: Left (0)
+ textarea[value="Hello, "] - mouseup
+ textarea[value="Hello, "] - click
textarea[value="Hello, "] - keydown: 1 (49)
textarea[value="Hello, "] - keypress: 1 (49)
textarea[value="1Hello, "] - select
@@ -527,17 +527,17 @@ test('can type into an input with type `date`', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 2 (50)
input[value=""] - keypress: 2 (50)
input[value=""] - keyup: 2 (50)
@@ -588,17 +588,17 @@ test('can type "-" into number inputs', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: - (45)
input[value=""] - keypress: - (45)
input[value=""] - input
@@ -621,17 +621,17 @@ test('can type "." into number inputs', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 3 (51)
input[value=""] - keypress: 3 (51)
input[value="3"] - input
@@ -847,17 +847,17 @@ test('should type inside a contenteditable div', () => {
div - pointerover
div - pointerenter
- div - mouseover: Left (0)
- div - mouseenter: Left (0)
+ div - mouseover
+ div - mouseenter
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
div - pointerdown
- div - mousedown: Left (0)
+ div - mousedown
div - focus
div - focusin
div - pointerup
- div - mouseup: Left (0)
- div - click: Left (0)
+ div - mouseup
+ div - click
div - keydown: b (98)
div - keypress: b (98)
div - input
@@ -884,15 +884,15 @@ test('should not type inside a contenteditable=false div', () => {
div - pointerover
div - pointerenter
- div - mouseover: Left (0)
- div - mouseenter: Left (0)
+ div - mouseover
+ div - mouseenter
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
div - pointerdown
- div - mousedown: Left (0)
+ div - mousedown
div - pointerup
- div - mouseup: Left (0)
- div - click: Left (0)
+ div - mouseup
+ div - click
`)
})
@@ -904,17 +904,17 @@ test('navigation key: {arrowleft} and {arrowright} moves the cursor for
'
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: b (98)
input[value=""] - keypress: b (98)
input[value="b"] - input
@@ -945,17 +945,17 @@ test('navigation key: {arrowleft} and {arrowright} moves the cursor for
{
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: c (99)
input[value=""] - keypress: c (99)
input[value="c"] - input
@@ -1032,17 +1032,17 @@ test('navigation key: {pageUp} and {pageDown} moves the cursor for ', ()
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: c (99)
input[value=""] - keypress: c (99)
input[value="c"] - input
@@ -1078,17 +1078,17 @@ test('can type into an input with type `time`', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 0 (48)
input[value=""] - keypress: 0 (48)
input[value=""] - keyup: 0 (48)
@@ -1120,17 +1120,17 @@ test('can type into an input with type `time` without ":"', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 0 (48)
input[value=""] - keypress: 0 (48)
input[value=""] - keyup: 0 (48)
@@ -1160,17 +1160,17 @@ test('can type more a number higher than 60 minutes into an input `time` and the
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 2 (50)
input[value=""] - keypress: 2 (50)
input[value=""] - keyup: 2 (50)
@@ -1204,17 +1204,17 @@ test('can type letters into an input `time` and they are ignored', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 1 (49)
input[value=""] - keypress: 1 (49)
input[value=""] - keyup: 1 (49)
@@ -1263,17 +1263,17 @@ test('can type a digit bigger in the hours section, bigger than 2 and it shows t
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 9 (57)
input[value=""] - keypress: 9 (57)
input[value=""] - keyup: 9 (57)
@@ -1304,17 +1304,17 @@ test('can type two digits in the hours section, equals to 24 and it shows the ho
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 2 (50)
input[value=""] - keypress: 2 (50)
input[value=""] - keyup: 2 (50)
@@ -1348,17 +1348,17 @@ test('can type two digits in the hours section, bigger than 24 and less than 30,
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 2 (50)
input[value=""] - keypress: 2 (50)
input[value=""] - keyup: 2 (50)
@@ -1393,17 +1393,17 @@ test('{arrowdown} fires keyup/keydown events', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: ArrowDown (40)
input[value=""] - keyup: ArrowDown (40)
`)
@@ -1419,17 +1419,17 @@ test('{arrowup} fires keyup/keydown events', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: ArrowUp (38)
input[value=""] - keyup: ArrowUp (38)
`)
diff --git a/src/__tests__/unhover.js b/src/__tests__/unhover.js
index de761717..547f50e5 100644
--- a/src/__tests__/unhover.js
+++ b/src/__tests__/unhover.js
@@ -9,11 +9,11 @@ test('unhover', () => {
Events fired on: button
button - pointermove
- button - mousemove: Left (0)
+ button - mousemove
button - pointerout
button - pointerleave
- button - mouseout: Left (0)
- button - mouseleave: Left (0)
+ button - mouseout
+ button - mouseleave
`)
})
@@ -34,9 +34,16 @@ test('no events fired on labels that contain disabled controls', () => {
const {element, getEventSnapshot} = setup('')
userEvent.unhover(element)
- expect(getEventSnapshot()).toMatchInlineSnapshot(
- `No events were fired on: label`,
- )
+ expect(getEventSnapshot()).toMatchInlineSnapshot(`
+ Events fired on: label
+
+ label - pointermove
+ label - mousemove
+ label - pointerout
+ label - pointerleave
+ label - mouseout
+ label - mouseleave
+ `)
})
test('throws when unhover element with pointer-events set to none', () => {
@@ -53,10 +60,10 @@ test('does not throws when hover element with pointer-events set to none and ski
Events fired on: div
div - pointermove
- div - mousemove: Left (0)
+ div - mousemove
div - pointerout
div - pointerleave
- div - mouseout: Left (0)
- div - mouseleave: Left (0)
+ div - mouseout
+ div - mouseleave
`)
})
diff --git a/src/__tests__/upload.js b/src/__tests__/upload.js
index 801e6622..c1315d24 100644
--- a/src/__tests__/upload.js
+++ b/src/__tests__/upload.js
@@ -15,17 +15,17 @@ test('should fire the correct events for input', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - blur
input[value=""] - focusout
input[value=""] - focus
@@ -51,16 +51,14 @@ test('should fire the correct events with label', () => {
Events fired on: form
label[for="element"] - pointerover
- form - pointerenter
- label[for="element"] - mouseover: Left (0)
- form - mouseenter: Left (0)
+ label[for="element"] - mouseover
label[for="element"] - pointermove
- label[for="element"] - mousemove: Left (0)
+ label[for="element"] - mousemove
label[for="element"] - pointerdown
- label[for="element"] - mousedown: Left (0)
+ label[for="element"] - mousedown
label[for="element"] - pointerup
- label[for="element"] - mouseup: Left (0)
- label[for="element"] - click: Left (0)
+ label[for="element"] - mouseup
+ label[for="element"] - click
input#element[value=""] - click: Left (0)
input#element[value=""] - focusin
input#element[value=""] - input
@@ -260,6 +258,6 @@ test('apply init options', () => {
changeInit: {cancelable: true},
})
- expect(getEvents('click')[0]).toHaveProperty('shiftKey', true)
+ expect(getEvents('click')[0]).toHaveProperty('shiftKey', false)
expect(getEvents('change')[0]).toHaveProperty('cancelable', true)
})
diff --git a/src/__tests__/utils/edit/calculateNewValue.ts b/src/__tests__/utils/edit/calculateNewValue.ts
index 79eb4a6b..3ee94cb3 100644
--- a/src/__tests__/utils/edit/calculateNewValue.ts
+++ b/src/__tests__/utils/edit/calculateNewValue.ts
@@ -13,17 +13,17 @@ test('honors maxlength', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 1 (49)
input[value=""] - keypress: 1 (49)
input[value="1"] - input
@@ -47,17 +47,17 @@ test('honors maxlength="" as if there was no maxlength', () => {
input[value=""] - pointerover
input[value=""] - pointerenter
- input[value=""] - mouseover: Left (0)
- input[value=""] - mouseenter: Left (0)
+ input[value=""] - mouseover
+ input[value=""] - mouseenter
input[value=""] - pointermove
- input[value=""] - mousemove: Left (0)
+ input[value=""] - mousemove
input[value=""] - pointerdown
- input[value=""] - mousedown: Left (0)
+ input[value=""] - mousedown
input[value=""] - focus
input[value=""] - focusin
input[value=""] - pointerup
- input[value=""] - mouseup: Left (0)
- input[value=""] - click: Left (0)
+ input[value=""] - mouseup
+ input[value=""] - click
input[value=""] - keydown: 1 (49)
input[value=""] - keypress: 1 (49)
input[value="1"] - input
@@ -85,17 +85,17 @@ test('honors maxlength with existing text', () => {
input[value="12"] - pointerover
input[value="12"] - pointerenter
- input[value="12"] - mouseover: Left (0)
- input[value="12"] - mouseenter: Left (0)
+ input[value="12"] - mouseover
+ input[value="12"] - mouseenter
input[value="12"] - pointermove
- input[value="12"] - mousemove: Left (0)
+ input[value="12"] - mousemove
input[value="12"] - pointerdown
- input[value="12"] - mousedown: Left (0)
+ input[value="12"] - mousedown
input[value="12"] - focus
input[value="12"] - focusin
input[value="12"] - pointerup
- input[value="12"] - mouseup: Left (0)
- input[value="12"] - click: Left (0)
+ input[value="12"] - mouseup
+ input[value="12"] - click
input[value="12"] - select
input[value="12"] - keydown: 3 (51)
input[value="12"] - keypress: 3 (51)
@@ -115,17 +115,17 @@ test('honors maxlength on textarea', () => {
textarea[value="12"] - pointerover
textarea[value="12"] - pointerenter
- textarea[value="12"] - mouseover: Left (0)
- textarea[value="12"] - mouseenter: Left (0)
+ textarea[value="12"] - mouseover
+ textarea[value="12"] - mouseenter
textarea[value="12"] - pointermove
- textarea[value="12"] - mousemove: Left (0)
+ textarea[value="12"] - mousemove
textarea[value="12"] - pointerdown
- textarea[value="12"] - mousedown: Left (0)
+ textarea[value="12"] - mousedown
textarea[value="12"] - focus
textarea[value="12"] - focusin
textarea[value="12"] - pointerup
- textarea[value="12"] - mouseup: Left (0)
- textarea[value="12"] - click: Left (0)
+ textarea[value="12"] - mouseup
+ textarea[value="12"] - click
textarea[value="12"] - select
textarea[value="12"] - keydown: 3 (51)
textarea[value="12"] - keypress: 3 (51)
diff --git a/src/clear.ts b/src/clear.ts
index 30f6c529..75759b20 100644
--- a/src/clear.ts
+++ b/src/clear.ts
@@ -1,7 +1,8 @@
import {isDisabled, isElementType} from './utils'
import {type} from './type'
+import type {UserEvent} from './setup'
-function clear(element: Element) {
+export function clear(this: UserEvent, element: Element) {
if (!isElementType(element, ['input', 'textarea'])) {
// TODO: support contenteditable
throw new Error(
@@ -23,7 +24,7 @@ function clear(element: Element) {
;(element as HTMLInputElement).type = 'text'
}
- type(element, '{selectall}{del}', {
+ void type.call(this, element, '{selectall}{del}', {
delay: 0,
initialSelectionStart:
element.selectionStart ?? /* istanbul ignore next */ undefined,
@@ -35,5 +36,3 @@ function clear(element: Element) {
;(element as HTMLInputElement).type = elementType
}
}
-
-export {clear}
diff --git a/src/click.ts b/src/click.ts
index 69fde860..e95eff6c 100644
--- a/src/click.ts
+++ b/src/click.ts
@@ -1,125 +1,18 @@
-import {fireEvent} from '@testing-library/dom'
-import {
- getMouseEventOptions,
- isLabelWithInternallyDisabledControl,
- isFocusable,
- isDisabled,
- isElementType,
- hasPointerEvents,
- PointerOptions,
-} from './utils'
+import {hasPointerEvents, PointerOptions} from './utils'
import {hover} from './hover'
-import {blur} from './blur'
-import {focus} from './focus'
-
-function getPreviouslyFocusedElement(element: Element) {
- const focusedElement = element.ownerDocument.activeElement
- const wasAnotherElementFocused =
- focusedElement &&
- focusedElement !== element.ownerDocument.body &&
- focusedElement !== element
- return wasAnotherElementFocused ? focusedElement : null
-}
+import type {UserEvent} from './setup'
export declare interface clickOptions {
skipHover?: boolean
clickCount?: number
}
-function clickLabel(
- label: HTMLLabelElement,
- init: MouseEventInit | undefined,
- {clickCount}: clickOptions & PointerOptions,
-) {
- if (isLabelWithInternallyDisabledControl(label)) return
-
- fireEvent.pointerDown(label, init)
- fireEvent.mouseDown(
- label,
- getMouseEventOptions('mousedown', init, clickCount),
- )
- fireEvent.pointerUp(label, init)
- fireEvent.mouseUp(label, getMouseEventOptions('mouseup', init, clickCount))
- fireClick(label, getMouseEventOptions('click', init, clickCount))
- // clicking the label will trigger a click of the label.control
- // however, it will not focus the label.control so we have to do it
- // ourselves.
- if (label.control) focus(label.control)
-}
-
-function clickBooleanElement(
- element: HTMLInputElement,
- init: MouseEventInit | undefined,
- {clickCount}: clickOptions & PointerOptions,
-) {
- fireEvent.pointerDown(element, init)
- if (!element.disabled) {
- fireEvent.mouseDown(
- element,
- getMouseEventOptions('mousedown', init, clickCount),
- )
- }
- focus(element)
- fireEvent.pointerUp(element, init)
- if (!element.disabled) {
- fireEvent.mouseUp(
- element,
- getMouseEventOptions('mouseup', init, clickCount),
- )
- fireClick(element, getMouseEventOptions('click', init, clickCount))
- }
-}
-
-function clickElement(
- element: Element,
- init: MouseEventInit | undefined,
- {clickCount}: clickOptions & PointerOptions,
-) {
- const previousElement = getPreviouslyFocusedElement(element)
- fireEvent.pointerDown(element, init)
- if (!isDisabled(element)) {
- const continueDefaultHandling = fireEvent.mouseDown(
- element,
- getMouseEventOptions('mousedown', init, clickCount),
- )
- if (continueDefaultHandling) {
- const closestFocusable = findClosest(element, isFocusable)
- if (previousElement && !closestFocusable) {
- blur(previousElement)
- } else if (closestFocusable) {
- focus(closestFocusable)
- }
- }
- }
- fireEvent.pointerUp(element, init)
- if (!isDisabled(element)) {
- fireEvent.mouseUp(
- element,
- getMouseEventOptions('mouseup', init, clickCount),
- )
- fireClick(element, getMouseEventOptions('click', init, clickCount))
- const parentLabel = element.closest('label')
- if (parentLabel?.control) focus(parentLabel.control)
- }
-}
-
-function findClosest(element: Element, callback: (e: Element) => boolean) {
- let el: Element | null = element
- do {
- if (callback(el)) {
- return el
- }
- el = el.parentElement
- } while (el && el !== element.ownerDocument.body)
- return undefined
-}
-
-function click(
+export function click(
+ this: UserEvent,
element: Element,
init?: MouseEventInit,
{
skipHover = false,
- clickCount = 0,
skipPointerEventsCheck = false,
}: clickOptions & PointerOptions = {},
) {
@@ -128,31 +21,18 @@ function click(
'unable to click element as it has or inherits pointer-events set to "none".',
)
}
- // We just checked for `pointerEvents`. We can always skip this one in `hover`.
- if (!skipHover) hover(element, init, {skipPointerEventsCheck: true})
+ // istanbul ignore else
+ if (!skipHover)
+ // We just checked for `pointerEvents`. We can always skip this one in `hover`.
+ hover.call(this, element, init, {skipPointerEventsCheck: true})
- if (isElementType(element, 'label')) {
- clickLabel(element, init, {clickCount})
- } else if (isElementType(element, 'input')) {
- if (element.type === 'checkbox' || element.type === 'radio') {
- clickBooleanElement(element, init, {clickCount})
- } else {
- clickElement(element, init, {clickCount})
- }
- } else {
- clickElement(element, init, {clickCount})
- }
+ const keys =
+ init?.button === 2 || init?.buttons === 2 ? '[MouseRight]' : '[MouseLeft]'
+ this.pointer({keys, target: element})
}
-function fireClick(element: Element, mouseEventOptions: MouseEventInit) {
- if (mouseEventOptions.button === 2) {
- fireEvent.contextMenu(element, mouseEventOptions)
- } else {
- fireEvent.click(element, mouseEventOptions)
- }
-}
-
-function dblClick(
+export function dblClick(
+ this: UserEvent,
element: Element,
init?: MouseEventInit,
{skipPointerEventsCheck = false}: clickOptions & PointerOptions = {},
@@ -162,10 +42,7 @@ function dblClick(
'unable to double-click element as it has or inherits pointer-events set to "none".',
)
}
- hover(element, init, {skipPointerEventsCheck})
- click(element, init, {skipHover: true, clickCount: 0, skipPointerEventsCheck})
- click(element, init, {skipHover: true, clickCount: 1, skipPointerEventsCheck})
- fireEvent.dblClick(element, getMouseEventOptions('dblclick', init, 2))
-}
+ hover.call(this, element, init, {skipPointerEventsCheck})
-export {click, dblClick}
+ this.pointer({keys: '[MouseLeft][MouseLeft]', target: element})
+}
diff --git a/src/hover.ts b/src/hover.ts
index 0a45bf08..a158457c 100644
--- a/src/hover.ts
+++ b/src/hover.ts
@@ -1,23 +1,9 @@
-import {fireEvent} from '@testing-library/dom'
-import {
- isLabelWithInternallyDisabledControl,
- getMouseEventOptions,
- isDisabled,
- hasPointerEvents,
- PointerOptions,
-} from './utils'
+import {createPointerState} from 'pointer'
+import type {UserEvent} from './setup'
+import {hasPointerEvents, PointerOptions} from './utils'
-// includes `element`
-function getParentElements(element: Element) {
- const parentElements = [element]
- let currentElement: Element | null = element
- while ((currentElement = currentElement.parentElement) != null) {
- parentElements.push(currentElement)
- }
- return parentElements
-}
-
-function hover(
+export function hover(
+ this: UserEvent,
element: Element,
init?: MouseEventInit,
{skipPointerEventsCheck = false}: PointerOptions = {},
@@ -27,27 +13,15 @@ function hover(
'unable to hover element as it has or inherits pointer-events set to "none".',
)
}
- if (isLabelWithInternallyDisabledControl(element)) return
- const parentElements = getParentElements(element).reverse()
+ const pointerState = createPointerState()
+ pointerState.position.mouse.target = element.ownerDocument.body
- fireEvent.pointerOver(element, init)
- for (const el of parentElements) {
- fireEvent.pointerEnter(el, init)
- }
- if (!isDisabled(element)) {
- fireEvent.mouseOver(element, getMouseEventOptions('mouseover', init))
- for (const el of parentElements) {
- fireEvent.mouseEnter(el, getMouseEventOptions('mouseenter', init))
- }
- }
- fireEvent.pointerMove(element, init)
- if (!isDisabled(element)) {
- fireEvent.mouseMove(element, getMouseEventOptions('mousemove', init))
- }
+ this.pointer({target: element}, {pointerState})
}
-function unhover(
+export function unhover(
+ this: UserEvent,
element: Element,
init?: MouseEventInit,
{skipPointerEventsCheck = false}: PointerOptions = {},
@@ -57,24 +31,9 @@ function unhover(
'unable to unhover element as it has or inherits pointer-events set to "none".',
)
}
- if (isLabelWithInternallyDisabledControl(element)) return
- const parentElements = getParentElements(element)
+ const pointerState = createPointerState()
+ pointerState.position.mouse.target = element
- fireEvent.pointerMove(element, init)
- if (!isDisabled(element)) {
- fireEvent.mouseMove(element, getMouseEventOptions('mousemove', init))
- }
- fireEvent.pointerOut(element, init)
- for (const el of parentElements) {
- fireEvent.pointerLeave(el, init)
- }
- if (!isDisabled(element)) {
- fireEvent.mouseOut(element, getMouseEventOptions('mouseout', init))
- for (const el of parentElements) {
- fireEvent.mouseLeave(el, getMouseEventOptions('mouseleave', init))
- }
- }
+ this.pointer({target: element.ownerDocument.body}, {pointerState})
}
-
-export {hover, unhover}
diff --git a/src/index.ts b/src/index.ts
index 6b4c0820..a0c3e4c8 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,10 +1,19 @@
import {specialCharMap} from './keyboard'
-import {userEventApis, UserEventApis, setup} from './setup'
+import {userEventApis, UserEventApis, setup, UserEvent} from './setup'
const userEvent: UserEventApis & {
setup: typeof setup
} = {
- ...userEventApis,
+ ...(Object.fromEntries(
+ Object.entries(userEventApis).map(([k, f]) => [
+ k,
+ (...a: unknown[]) =>
+ (f as (this: UserEvent, ...b: unknown[]) => unknown).apply(
+ userEvent,
+ a,
+ ),
+ ]),
+ ) as UserEventApis),
setup,
}
diff --git a/src/paste.ts b/src/paste.ts
index 2945662f..d306ba66 100644
--- a/src/paste.ts
+++ b/src/paste.ts
@@ -1,4 +1,5 @@
import {fireEvent} from '@testing-library/dom'
+import type {UserEvent} from './setup'
import {
getSpaceUntilMaxLength,
setSelectionRange,
@@ -26,7 +27,8 @@ function isSupportedElement(
)
}
-function paste(
+export function paste(
+ this: UserEvent,
element: HTMLElement,
text: string,
init?: ClipboardEventInit,
@@ -79,12 +81,10 @@ function paste(
element,
// TODO: investigate why the selection caused by invalid parameters was expected
- ({
+ {
newSelectionStart,
selectionEnd: newSelectionStart,
- } as unknown) as number,
- ({} as unknown) as number,
+ } as unknown as number,
+ {} as unknown as number,
)
}
-
-export {paste}
diff --git a/src/pointer/pointerMove.ts b/src/pointer/pointerMove.ts
index 8a27539e..c3ac7d9c 100644
--- a/src/pointer/pointerMove.ts
+++ b/src/pointer/pointerMove.ts
@@ -1,4 +1,9 @@
-import {Coords, firePointerEvent, isDescendantOrSelf} from '../utils'
+import {
+ Coords,
+ firePointerEvent,
+ isDescendantOrSelf,
+ isDisabled,
+} from '../utils'
import {inputDeviceState, PointerTarget} from './types'
export interface PointerMoveAction extends PointerTarget {
@@ -31,6 +36,8 @@ export async function pointerMove(
}
}
+ pointerState.position[pointerName] = {pointerId, pointerType, target, coords}
+
if (prevTarget !== target) {
if (!prevTarget || !isDescendantOrSelf(prevTarget, target)) {
fireEnter(target, coords)
@@ -42,11 +49,9 @@ export async function pointerMove(
// Here we could probably calculate a few coords leading up to the final position
fireMove(target, coords)
- pointerState.position[pointerName] = {pointerId, pointerType, target, coords}
-
function fireMove(eventTarget: Element, eventCoords: Coords) {
fire(eventTarget, 'pointermove', eventCoords)
- if (pointerType === 'mouse') {
+ if (pointerType === 'mouse' && !isDisabled(eventTarget)) {
fire(eventTarget, 'mousemove', eventCoords)
}
}
@@ -54,7 +59,7 @@ export async function pointerMove(
function fireLeave(eventTarget: Element, eventCoords: Coords) {
fire(eventTarget, 'pointerout', eventCoords)
fire(eventTarget, 'pointerleave', eventCoords)
- if (pointerType === 'mouse') {
+ if (pointerType === 'mouse' && !isDisabled(eventTarget)) {
fire(eventTarget, 'mouseout', eventCoords)
fire(eventTarget, 'mouseleave', eventCoords)
}
@@ -63,7 +68,7 @@ export async function pointerMove(
function fireEnter(eventTarget: Element, eventCoords: Coords) {
fire(eventTarget, 'pointerover', eventCoords)
fire(eventTarget, 'pointerenter', eventCoords)
- if (pointerType === 'mouse') {
+ if (pointerType === 'mouse' && !isDisabled(eventTarget)) {
fire(eventTarget, 'mouseover', eventCoords)
fire(eventTarget, 'mouseenter', eventCoords)
}
diff --git a/src/pointer/pointerPress.ts b/src/pointer/pointerPress.ts
index 5237522a..76fdaa69 100644
--- a/src/pointer/pointerPress.ts
+++ b/src/pointer/pointerPress.ts
@@ -1,4 +1,14 @@
-import {Coords, firePointerEvent} from '../utils'
+/* eslint-disable complexity */
+
+import {fireEvent} from '@testing-library/dom'
+import {focus} from '../focus'
+import {
+ Coords,
+ findClosest,
+ firePointerEvent,
+ isDisabled,
+ isFocusable,
+} from '../utils'
import type {
inputDeviceState,
pointerKey,
@@ -21,15 +31,24 @@ export async function pointerPress(
const pointerName =
keyDef.pointerType === 'touch' ? keyDef.name : keyDef.pointerType
+ const targetIsDisabled = isDisabled(target)
+
if (previous) {
- up(pointerName, keyDef, target, coords, state, previous)
+ up(state, pointerName, keyDef, targetIsDisabled, target, coords, previous)
}
if (!releasePrevious) {
- const press = down(pointerName, keyDef, target, coords, state)
+ const press = down(
+ state,
+ pointerName,
+ keyDef,
+ targetIsDisabled,
+ target,
+ coords,
+ )
if (releaseSelf) {
- up(pointerName, keyDef, target, coords, state, press)
+ up(state, pointerName, keyDef, targetIsDisabled, target, coords, press)
}
}
}
@@ -40,11 +59,12 @@ function getNextPointerId(state: pointerState) {
}
function down(
+ {pointerState, keyboardState}: inputDeviceState,
pointerName: string,
keyDef: pointerKey,
+ targetIsDisabled: boolean,
target: Element,
coords: Coords,
- {pointerState, keyboardState}: inputDeviceState,
) {
const {name, pointerType, button} = keyDef
const pointerId = pointerType === 'mouse' ? 1 : getNextPointerId(pointerState)
@@ -87,23 +107,29 @@ function down(
}
pointerState.pressed.push(pressObj)
- if (pointerType !== 'mouse') {
- fire('pointerover')
- fire('pointerenter')
- }
- if (
- pointerType !== 'mouse' ||
- !pointerState.pressed.some(
- p => p.keyDef !== keyDef && p.keyDef.pointerType === pointerType,
- )
- ) {
- fire('pointerdown')
- }
- if (pointerType === 'mouse') {
- pressObj.unpreventedDefault = fire('mousedown')
+ if (!targetIsDisabled) {
+ if (pointerType !== 'mouse') {
+ fire('pointerover')
+ fire('pointerenter')
+ }
+ if (
+ pointerType !== 'mouse' ||
+ !pointerState.pressed.some(
+ p => p.keyDef !== keyDef && p.keyDef.pointerType === pointerType,
+ )
+ ) {
+ fire('pointerdown')
+ }
+ if (pointerType === 'mouse') {
+ pressObj.unpreventedDefault = fire('mousedown')
+ }
+
+ // TODO: touch...
}
- // TODO: touch...
+ if (pointerType === 'mouse' && pressObj.unpreventedDefault) {
+ focus(findClosest(target, isFocusable) ?? target.ownerDocument.body)
+ }
return pressObj
@@ -122,11 +148,12 @@ function down(
}
function up(
+ {pointerState, keyboardState}: inputDeviceState,
pointerName: string,
{pointerType, button}: pointerKey,
+ targetIsDisabled: boolean,
target: Element,
coords: Coords,
- {pointerState, keyboardState}: inputDeviceState,
pressed: pointerState['pressed'][number],
) {
pointerState.pressed = pointerState.pressed.filter(p => p !== pressed)
@@ -143,32 +170,59 @@ function up(
// TODO: pointerleave for touch device
- if (
- pointerType !== 'mouse' ||
- !pointerState.pressed.filter(p => p.keyDef.pointerType === pointerType)
- .length
- ) {
- fire('pointerup')
- }
- if (pointerType !== 'mouse') {
- fire('pointerout')
- fire('pointerleave')
- }
- if (pointerType !== 'mouse' && !isMultiTouch) {
- if (clickCount === 1) {
- fire('mouseover')
- fire('mouseenter')
+ if (!targetIsDisabled) {
+ if (
+ pointerType !== 'mouse' ||
+ !pointerState.pressed.filter(p => p.keyDef.pointerType === pointerType)
+ .length
+ ) {
+ fire('pointerup')
+ }
+ if (pointerType !== 'mouse') {
+ fire('pointerout')
+ fire('pointerleave')
+ }
+ if (pointerType !== 'mouse' && !isMultiTouch) {
+ if (clickCount === 1) {
+ fire('mouseover')
+ fire('mouseenter')
+ }
+ fire('mousemove')
+ unpreventedDefault = fire('mousedown') && unpreventedDefault
}
- fire('mousemove')
- unpreventedDefault = fire('mousedown') && unpreventedDefault
}
- if (pointerType === 'mouse' || !isMultiTouch) {
- unpreventedDefault = fire('mouseup') && unpreventedDefault
+ if (unpreventedDefault && pointerType !== 'mouse' && !isMultiTouch) {
+ // The closest focusable element is focused when a `mousedown` would have been fired.
+ // Even if there was no `mousedown` because the element was disabled.
+ // A `mousedown` that preventsDefault cancels this though.
+ focus(findClosest(target, isFocusable) ?? target.ownerDocument.body)
+ }
+
+ if (!targetIsDisabled) {
+ if (pointerType === 'mouse' || !isMultiTouch) {
+ unpreventedDefault = fire('mouseup') && unpreventedDefault
+
+ const canClick = pointerType !== 'mouse' || button === 'primary'
+ if (canClick && target === pressed.downTarget) {
+ fire('click')
+ if (clickCount === 2) {
+ fire('dblclick')
+ }
+
+ // If the click happens inside a `label` with a control, the control (or closes focusable) is focused.
+ const label = target.closest('label')
+ if (label?.control) {
+ focus(
+ findClosest(label.control, isFocusable) ??
+ target.ownerDocument.body,
+ )
+ }
+ }
- const canClick = pointerType !== 'mouse' || button === 'primary'
- if (canClick && unpreventedDefault && target === pressed.downTarget) {
- fire('click')
+ if (pointerType === 'mouse' && button === 'secondary') {
+ fireEvent.contextMenu(target)
+ }
}
}
diff --git a/src/select-options.ts b/src/select-options.ts
index 2781e21b..98c99ae2 100644
--- a/src/select-options.ts
+++ b/src/select-options.ts
@@ -8,13 +8,35 @@ import {
import {click} from './click'
import {focus} from './focus'
import {hover, unhover} from './hover'
+import type {UserEvent} from './setup'
+
+export function selectOptions(
+ this: UserEvent,
+ select: Element,
+ values: HTMLElement | HTMLElement[] | string[] | string,
+ init?: MouseEventInit,
+ options: PointerOptions = {},
+) {
+ return selectOptionsBase.call(this, true, select, values, init, options)
+}
+
+export function deselectOptions(
+ this: UserEvent,
+ select: Element,
+ values: HTMLElement | HTMLElement[] | string[] | string,
+ init?: MouseEventInit,
+ options: PointerOptions = {},
+) {
+ return selectOptionsBase.call(this, false, select, values, init, options)
+}
function selectOptionsBase(
+ this: UserEvent,
newValue: boolean,
select: Element,
values: HTMLElement | HTMLElement[] | string[] | string,
- init?: MouseEventInit,
- {skipPointerEventsCheck = false}: PointerOptions = {},
+ init: MouseEventInit | undefined,
+ {skipPointerEventsCheck}: PointerOptions,
) {
if (!newValue && !(select as HTMLSelectElement).multiple) {
throw getConfig().getElementError(
@@ -88,7 +110,7 @@ function selectOptionsBase(
: hasPointerEvents(select)
// the click to open the select options
if (withPointerEvents) {
- click(select, init, {skipPointerEventsCheck})
+ click.call(this, select, init, {skipPointerEventsCheck: true})
} else {
focus(select)
}
@@ -114,9 +136,9 @@ function selectOptionsBase(
}
} else if (select.getAttribute('role') === 'listbox') {
selectedOptions.forEach(option => {
- hover(option, init, {skipPointerEventsCheck})
- click(option, init, {skipPointerEventsCheck})
- unhover(option, init, {skipPointerEventsCheck})
+ hover.call(this, option, init, {skipPointerEventsCheck})
+ click.call(this, option, init, {skipPointerEventsCheck})
+ unhover.call(this, option, init, {skipPointerEventsCheck})
})
} else {
throw getConfig().getElementError(
@@ -139,8 +161,3 @@ function selectOptionsBase(
fireEvent.change(select, init)
}
}
-
-const selectOptions = selectOptionsBase.bind(null, true)
-const deselectOptions = selectOptionsBase.bind(null, false)
-
-export {selectOptions, deselectOptions}
diff --git a/src/setup.ts b/src/setup.ts
index 77b558f1..5b92f03c 100644
--- a/src/setup.ts
+++ b/src/setup.ts
@@ -30,6 +30,10 @@ export const userEventApis = {
upload,
}
export type UserEventApis = typeof userEventApis
+type setup = ReturnType['setup']
+export type UserEvent = UserEventApis & {
+ setup: setup
+}
type ClickOptions = Omit
@@ -123,27 +127,29 @@ function _setup(
applyAccept,
}
- return {
- clear,
+ const userEvent: UserEvent = {
+ clear: (...args: Parameters) => {
+ return clear.call(userEvent, ...args)
+ },
click: (...args: Parameters) => {
args[2] = {...pointerDefaults, ...clickDefaults, ...args[2]}
- return click(...args)
+ return click.call(userEvent, ...args)
},
dblClick: (...args: Parameters) => {
args[2] = {...pointerDefaults, ...clickDefaults, ...args[2]}
- return dblClick(...args)
+ return dblClick.call(userEvent, ...args)
},
deselectOptions: (...args: Parameters) => {
args[3] = {...pointerDefaults, ...args[3]}
- return deselectOptions(...args)
+ return deselectOptions.call(userEvent, ...args)
},
hover: (...args: Parameters) => {
args[2] = {...pointerDefaults, ...args[2]}
- return hover(...args)
+ return hover.call(userEvent, ...args)
},
// keyboard needs typecasting because of the overloading
@@ -156,7 +162,7 @@ function _setup(
}) as typeof keyboard,
paste: (...args: Parameters) => {
- return paste(...args)
+ return paste.call(userEvent, ...args)
},
// pointer needs typecasting because of the overloading
@@ -170,7 +176,7 @@ function _setup(
selectOptions: (...args: Parameters) => {
args[3] = {...pointerDefaults, ...args[3]}
- return selectOptions(...args)
+ return selectOptions.call(userEvent, ...args)
},
setup: (options: SetupOptions) => {
@@ -190,23 +196,25 @@ function _setup(
tab: (...args: Parameters) => {
args[0] = {...tabDefaults, ...args[0]}
- return tab(...args)
+ return tab.call(userEvent, ...args)
},
// type needs typecasting because of the overloading
type: ((...args: Parameters) => {
args[2] = {...typeDefaults, ...args[2]}
- return type(...args)
+ return type.call(userEvent, ...args)
}) as typeof type,
unhover: (...args: Parameters) => {
args[2] = {...pointerDefaults, ...args[2]}
- return unhover(...args)
+ return unhover.call(userEvent, ...args)
},
upload: (...args: Parameters) => {
args[3] = {...uploadDefaults, ...args[3]}
- return upload(...args)
+ return upload.call(userEvent, ...args)
},
}
+
+ return userEvent
}
diff --git a/src/tab.ts b/src/tab.ts
index 41c18061..bca298a7 100644
--- a/src/tab.ts
+++ b/src/tab.ts
@@ -8,6 +8,7 @@ import {
} from './utils'
import {focus} from './focus'
import {blur} from './blur'
+import type {UserEvent} from './setup'
function getNextElement(
currentIndex: number,
@@ -33,7 +34,10 @@ export interface tabOptions {
focusTrap?: Document | Element
}
-function tab({shift = false, focusTrap}: tabOptions = {}) {
+export function tab(
+ this: UserEvent,
+ {shift = false, focusTrap}: tabOptions = {},
+) {
const doc = focusTrap?.ownerDocument ?? document
const previousElement = getActiveElement(doc)
@@ -159,8 +163,6 @@ function tab({shift = false, focusTrap}: tabOptions = {}) {
}
}
-export {tab}
-
/*
eslint
complexity: "off",
diff --git a/src/type/index.ts b/src/type/index.ts
index b628b99c..54950aaf 100644
--- a/src/type/index.ts
+++ b/src/type/index.ts
@@ -1,13 +1,16 @@
import {getConfig as getDOMTestingLibraryConfig} from '@testing-library/dom'
import {prepareDocument} from '../document'
+import type {UserEvent} from '../setup'
import {typeImplementation, typeOptions} from './typeImplementation'
export function type(
+ this: UserEvent,
element: Element,
text: string,
options?: typeOptions & {delay?: 0},
): void
export function type(
+ this: UserEvent,
element: Element,
text: string,
options: typeOptions & {delay: number},
@@ -15,6 +18,7 @@ export function type(
// this needs to be wrapped in the event/asyncWrapper for React's act and angular's change detection
// depending on whether it will be async.
export function type(
+ this: UserEvent,
element: Element,
text: string,
{delay = 0, ...options}: typeOptions = {},
@@ -27,10 +31,11 @@ export function type(
if (delay > 0) {
return getDOMTestingLibraryConfig().asyncWrapper(() =>
- typeImplementation(element, text, {delay, ...options}),
+ typeImplementation.call(this, element, text, {delay, ...options}),
)
} else {
- return void typeImplementation(element, text, {delay, ...options})
+ return void typeImplementation
+ .call(this, element, text, {delay, ...options})
// prevents users from dealing with UnhandledPromiseRejectionWarning
.catch(console.error)
}
diff --git a/src/type/typeImplementation.ts b/src/type/typeImplementation.ts
index 2d4e1d3b..d58e2a28 100644
--- a/src/type/typeImplementation.ts
+++ b/src/type/typeImplementation.ts
@@ -6,6 +6,7 @@ import {
} from '../utils'
import {click} from '../click'
import {keyboardImplementationWrapper} from '../keyboard'
+import {UserEvent} from '../setup'
export interface typeOptions {
delay?: number
@@ -16,6 +17,7 @@ export interface typeOptions {
}
export async function typeImplementation(
+ this: UserEvent,
element: Element,
text: string,
{
@@ -30,7 +32,7 @@ export async function typeImplementation(
// we use this workaround for now to prevent changing behavior
if ((element as {disabled?: boolean}).disabled) return
- if (!skipClick) click(element)
+ if (!skipClick) click.call(this, element)
// The focused element could change between each event, so get the currently active element each time
const currentElement = () => getActiveElement(element.ownerDocument)
diff --git a/src/upload.ts b/src/upload.ts
index b4350ebd..32342f67 100644
--- a/src/upload.ts
+++ b/src/upload.ts
@@ -3,6 +3,7 @@ import {click} from './click'
import {blur} from './blur'
import {focus} from './focus'
import {isDisabled, isElementType} from './utils'
+import type {UserEvent} from './setup'
interface uploadInit {
clickInit?: MouseEventInit
@@ -13,7 +14,8 @@ export interface uploadOptions {
applyAccept?: boolean
}
-function upload(
+export function upload(
+ this: UserEvent,
element: HTMLElement,
fileOrFiles: File | File[],
init?: uploadInit,
@@ -30,7 +32,7 @@ function upload(
}
if (isDisabled(element)) return
- click(element, init?.clickInit)
+ click.call(this, element, init?.clickInit)
const files = (Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles])
.filter(file => !applyAccept || isAcceptableFile(file, input.accept))
@@ -100,5 +102,3 @@ function isAcceptableFile(file: File, accept: string) {
return file.type === acceptToken
})
}
-
-export {upload}
diff --git a/src/utils/click/getMouseEventOptions.ts b/src/utils/click/getMouseEventOptions.ts
deleted file mode 100644
index d798a151..00000000
--- a/src/utils/click/getMouseEventOptions.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-function isMousePressEvent(event: string) {
- return (
- event === 'mousedown' ||
- event === 'mouseup' ||
- event === 'click' ||
- event === 'dblclick'
- )
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
-const BUTTONS_NAMES = {
- none: 0,
- primary: 1,
- secondary: 2,
- auxiliary: 4,
-} as const
-
-// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button
-const BUTTON_NAMES = {
- primary: 0,
- auxiliary: 1,
- secondary: 2,
-} as const
-
-function translateButtonNumber(value: number, from: 'button' | 'buttons') {
- const [mapIn, mapOut] =
- from === 'button'
- ? [BUTTON_NAMES, BUTTONS_NAMES]
- : [BUTTONS_NAMES, BUTTON_NAMES]
-
- const name = Object.entries(mapIn).find(([, i]) => i === value)?.[0]
-
- // istanbul ignore next
- return name && Object.prototype.hasOwnProperty.call(mapOut, name)
- ? mapOut[name as keyof typeof mapOut]
- : 0
-}
-
-function convertMouseButtons(
- event: string,
- init: MouseEventInit,
- property: 'button' | 'buttons',
-): number {
- if (!isMousePressEvent(event)) {
- return 0
- }
-
- if (typeof init[property] === 'number') {
- return init[property] as number
- } else if (property === 'button' && typeof init.buttons === 'number') {
- return translateButtonNumber(init.buttons, 'buttons')
- } else if (property === 'buttons' && typeof init.button === 'number') {
- return translateButtonNumber(init.button, 'button')
- }
-
- return property != 'button' && isMousePressEvent(event) ? 1 : 0
-}
-
-export function getMouseEventOptions(
- event: string,
- init?: MouseEventInit,
- clickCount = 0,
-) {
- init = init ?? {}
- return {
- ...init,
- // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
- detail:
- event === 'mousedown' || event === 'mouseup' || event === 'click'
- ? 1 + clickCount
- : clickCount,
- buttons: convertMouseButtons(event, init, 'buttons'),
- button: convertMouseButtons(event, init, 'button'),
- }
-}
diff --git a/src/utils/focus/isFocusable.ts b/src/utils/focus/isFocusable.ts
index b07e1f52..ba1ce040 100644
--- a/src/utils/focus/isFocusable.ts
+++ b/src/utils/focus/isFocusable.ts
@@ -1,9 +1,5 @@
-import {isLabelWithInternallyDisabledControl} from '../misc/isLabelWithInternallyDisabledControl'
import {FOCUSABLE_SELECTOR} from './selector'
export function isFocusable(element: Element): element is HTMLElement {
- return (
- !isLabelWithInternallyDisabledControl(element) &&
- element.matches(FOCUSABLE_SELECTOR)
- )
+ return element.matches(FOCUSABLE_SELECTOR)
}
diff --git a/src/utils/index.ts b/src/utils/index.ts
index d552ba2c..027689d8 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -1,4 +1,3 @@
-export * from './click/getMouseEventOptions'
export * from './click/isClickableInput'
export * from './edit/buildTimeValue'
@@ -20,9 +19,9 @@ export * from './focus/selector'
export * from './keyDef/readNextDescriptor'
export * from './misc/eventWrapper'
+export * from './misc/findClosest'
export * from './misc/isDescendantOrSelf'
export * from './misc/isElementType'
-export * from './misc/isLabelWithInternallyDisabledControl'
export * from './misc/isVisible'
export * from './misc/isDisabled'
export * from './misc/isDocument'
diff --git a/src/utils/misc/findClosest.ts b/src/utils/misc/findClosest.ts
new file mode 100644
index 00000000..db05e44b
--- /dev/null
+++ b/src/utils/misc/findClosest.ts
@@ -0,0 +1,13 @@
+export function findClosest(
+ element: Element,
+ callback: (e: Element) => boolean,
+) {
+ let el: Element | null = element
+ do {
+ if (callback(el)) {
+ return el
+ }
+ el = el.parentElement
+ } while (el && el !== element.ownerDocument.body)
+ return undefined
+}
diff --git a/src/utils/misc/isLabelWithInternallyDisabledControl.ts b/src/utils/misc/isLabelWithInternallyDisabledControl.ts
deleted file mode 100644
index b34d4f0b..00000000
--- a/src/utils/misc/isLabelWithInternallyDisabledControl.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// Absolutely NO events fire on label elements that contain their control
-// if that control is disabled. NUTS!
-
-import {isDisabled} from './isDisabled'
-import {isElementType} from './isElementType'
-
-// no joke. There are NO events for: