testing-library / dom-testing-library

🐙 Simple and complete DOM testing utilities that encourage good testing practices.
https://testing-library.com/dom
MIT License
3.27k stars 467 forks source link

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

Open JoshTumath opened 1 week ago

JoshTumath commented 1 week ago

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.

MatanBobi commented 2 days ago

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?