dom-testing-library icon indicating copy to clipboard operation
dom-testing-library copied to clipboard

`click`, `auxclick` and `contextmenu` events don't support `PointerEvent` properties

Open JoshTumath opened this issue 1 year ago • 1 comments

  • @testing-library/dom version: 9.3.4
  • Testing Framework and version: Jest 29.7.0
  • DOM Environment: jsdom 24.0.0

Relevant code or config:

To simulate a pointer click, I might want to provide properties from the PointerEvent interface, such as:

// When simulating a mouse pointer input
fireEvent.click(button, {
  pointerId: 123,
  pointerType: 'mouse'
});

// When simulating a keyboard input
fireEvent.click(button, {
  pointerId: -1,
  pointerType: ''
});

What you did:

I tried to simulate a pointerId property in a click event.

What happened:

The Jest code coverage reported that the if statement in my event handler

Reproduction:

I haven't done one in case the problem is obvious, but I am happy to create one if asked.

Problem description:

All browsers now treat a click event as a type of PointerEvent, not a MouseEvent. However, the @testing-library still treats them as MouseEvent types, so when I want to use properties like pointerId in tests, they get ignored.

Suggested solution:

Change auxclick, click and contextmenu events to PointerEvent types.

JoshTumath avatar Nov 15 '24 15:11 JoshTumath

Thanks for opening this @JoshTumath. fireEvent is a lower level API and should be used sparingly. AFAIR, user-event uses PointerEvents for clicks. Have you tried that?

MatanBobi avatar Nov 23 '24 19:11 MatanBobi