diff --git a/packages/playwright-core/src/server/chromium/crInput.ts b/packages/playwright-core/src/server/chromium/crInput.ts index 5e8843244e73a..e8598f34329b9 100644 --- a/packages/playwright-core/src/server/chromium/crInput.ts +++ b/packages/playwright-core/src/server/chromium/crInput.ts @@ -81,7 +81,8 @@ export class RawKeyboardImpl implements input.RawKeyboard { key, windowsVirtualKeyCode: description.keyCodeWithoutLocation, code, - location + location, + isKeypad: location === input.keypadLocation })); } diff --git a/tests/page/page-keyboard.spec.ts b/tests/page/page-keyboard.spec.ts index 5c18214b26e40..98e7e32a939ef 100644 --- a/tests/page/page-keyboard.spec.ts +++ b/tests/page/page-keyboard.spec.ts @@ -306,6 +306,15 @@ it('should specify location', async ({ page, server }) => { expect.soft(await lastEvent.evaluate(e => e.code)).toBe('NumpadSubtract'); }); +it('should specify numpad location on keyup', async ({ page, server }) => { + await page.goto(server.PREFIX + '/input/keyboard.html'); + await page.keyboard.press('NumpadSubtract'); + expect(await page.evaluate('getResult()')).toBe( + ['Keydown: - NumpadSubtract NUMPAD []', + 'Keypress: - NumpadSubtract NUMPAD 45 []', + 'Keyup: - NumpadSubtract NUMPAD []'].join('\n')); +}); + it('should press Enter', async ({ page, server }) => { await page.setContent(''); await page.focus('textarea');