-
Notifications
You must be signed in to change notification settings - Fork 255
Closed
Description
@testing-library/user-eventversion: a5ca2e4- Testing Framework and version: NA
- DOM Environment: NA
Problem description
Adding the following test to src/keyboard/keyboardAction.ts
test('trigger Synthetic `keydown` event for printable characters', async () => {
const onKeyDown = jest.fn<unknown, [React.KeyboardEvent]>()
render(<input onKeyDown={onKeyDown} />)
screen.getByRole('textbox').focus()
await userEvent.keyboard('a')
expect(onKeyDown).toHaveBeenCalledTimes(1)
expect(onKeyDown.mock.calls[0][0]).toHaveProperty('charCode', 65)
await userEvent.keyboard('[Enter]')
expect(onKeyDown).toHaveBeenCalledTimes(2)
expect(onKeyDown.mock.calls[1][0]).toHaveProperty('charCode', 13)
})yields the error
trigger Synthetic `keydown` event for printable characters
expect(received).toHaveProperty(path, value)
Expected path: "charCode"
Expected value: 65
Received value: 0
43 | await userEvent.keyboard('a')
44 | expect(onKeyDown).toHaveBeenCalledTimes(1)
> 45 | expect(onKeyDown.mock.calls[0][0]).toHaveProperty('charCode', 65)
| ^
46 |
47 | await userEvent.keyboard('[Enter]')
48 | expect(onKeyDown).toHaveBeenCalledTimes(2)
at Object.<anonymous> (tests/react/keyboard.tsx:45:38)
Testing only [Enter] yields the same error. Found this while having trouble with my tests because UI relies on the charCode of keydown events. Expected?
The MDN docs on keyDown hint at the fact that codes should be present, but I do not know the specs. Missing implementation? I can help with providing a fix.
Suggested solution
Some patch was made to keypress to fix a similar issue (see 55e194a).
Similar patch should probably be made to keyup and keydown too, although the key mapping is not the same.
Metadata
Metadata
Assignees
Labels
No labels