From 58fac77b3786e9ac522a85d6f058fc10ef8064bf Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 10 Jul 2024 17:43:46 +0200 Subject: [PATCH] fix(browser): don't release keyboard automatically (#6083) --- packages/browser/src/node/commands/keyboard.ts | 2 +- test/browser/test/userEvent.test.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/browser/src/node/commands/keyboard.ts b/packages/browser/src/node/commands/keyboard.ts index ff8687854481..08fd74292e28 100644 --- a/packages/browser/src/node/commands/keyboard.ts +++ b/packages/browser/src/node/commands/keyboard.ts @@ -50,7 +50,7 @@ export const keyboard: UserEventCommand = async ( throw new TypeError(`Provider "${context.provider.name}" does not support selecting all text`) } }, - false, + true, ) } diff --git a/test/browser/test/userEvent.test.ts b/test/browser/test/userEvent.test.ts index d71fd29b78d4..77363addd2e3 100644 --- a/test/browser/test/userEvent.test.ts +++ b/test/browser/test/userEvent.test.ts @@ -557,6 +557,22 @@ describe('userEvent.keyboard', async () => { ]) }) + test('should not auto release', async () => { + const spyKeydown = vi.fn() + const spyKeyup = vi.fn() + const button = document.createElement('button') + document.body.appendChild(button) + button.addEventListener('keydown', spyKeydown) + button.addEventListener('keyup', spyKeyup) + button.focus() + await userEvent.keyboard('{Enter>}') + expect(spyKeydown).toHaveBeenCalledOnce() + expect(spyKeyup).not.toHaveBeenCalled() + await userEvent.keyboard('{/Enter}') + // userEvent doesn't fire any event here, but should we? + expect(spyKeyup).not.toHaveBeenCalled() + }) + test('standalone keyboard works correctly with active input', async () => { const documentKeydown: string[] = [] const inputKeydown: string[] = []