From 8c6f68eaeef4bbc15c62ca7830e830b47a8411ac Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Thu, 18 Aug 2022 19:38:01 +0000 Subject: [PATCH] fix(event): assign pointer coords to MouseEvent --- src/event/createEvent.ts | 13 ++++++++++++- tests/pointer/move.ts | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/event/createEvent.ts b/src/event/createEvent.ts index dc38aaa6..eeb38072 100644 --- a/src/event/createEvent.ts +++ b/src/event/createEvent.ts @@ -211,7 +211,14 @@ function initMouseEvent( button, buttons, relatedTarget, - }: MouseEventInit & {x?: number; y?: number}, + offsetX, + offsetY, + pageX, + pageY, + }: MouseEventInit & + Partial< + Pick + >, ) { assignProps(event, { screenX: sanitizeNumber(screenX), @@ -223,6 +230,10 @@ function initMouseEvent( button: sanitizeNumber(button), buttons: sanitizeNumber(buttons), relatedTarget, + offsetX: sanitizeNumber(offsetX), + offsetY: sanitizeNumber(offsetY), + pageX: sanitizeNumber(pageX), + pageY: sanitizeNumber(pageY), }) } diff --git a/tests/pointer/move.ts b/tests/pointer/move.ts index c423f537..3b89dd6a 100644 --- a/tests/pointer/move.ts +++ b/tests/pointer/move.ts @@ -103,3 +103,25 @@ test('move touch over elements', async () => { div - click: primary `) }) + +test('declare pointer coordinates', async () => { + const {element, getEvents, user} = setup(`
`) + + const coords: Partial = { + x: 1, + y: 2, + offsetX: 3, + offsetY: 4, + pageX: 5, + pageY: 6, + screenX: 7, + screenY: 8, + } + + await user.pointer({target: element, coords}) + + // .toEqual(expect.objectContaining) yields a misleading diff + Object.entries(coords).forEach(([prop, value]) => { + expect(getEvents('mouseover')[0]).toHaveProperty(prop, value) + }) +})