diff --git a/packages/playwright-core/src/server/bidi/bidiInput.ts b/packages/playwright-core/src/server/bidi/bidiInput.ts index 3550051a6a..5266fef023 100644 --- a/packages/playwright-core/src/server/bidi/bidiInput.ts +++ b/packages/playwright-core/src/server/bidi/bidiInput.ts @@ -33,7 +33,7 @@ export class RawKeyboardImpl implements input.RawKeyboard { async keydown(modifiers: Set, code: string, keyCode: number, keyCodeWithoutLocation: number, key: string, location: number, autoRepeat: boolean, text: string | undefined): Promise { const actions: bidi.Input.KeySourceAction[] = []; - actions.push({ type: 'keyDown', value: getBidiKeyValue(key) }); + actions.push({ type: 'keyDown', value: getBidiKeyValue(code) }); // TODO: add modifiers? await this._performActions(actions); } diff --git a/tests/page/page-keyboard.spec.ts b/tests/page/page-keyboard.spec.ts index 027648f48e..0d922584f4 100644 --- a/tests/page/page-keyboard.spec.ts +++ b/tests/page/page-keyboard.spec.ts @@ -256,16 +256,24 @@ it('should specify location', async ({ page, server }) => { const textarea = await page.$('textarea'); await textarea.press('Digit5'); - expect(await lastEvent.evaluate(e => e.location)).toBe(0); + expect.soft(await lastEvent.evaluate(e => e.location)).toBe(0); + expect.soft(await lastEvent.evaluate(e => e.key)).toBe('5'); + expect.soft(await lastEvent.evaluate(e => e.code)).toBe('Digit5'); await textarea.press('ControlLeft'); - expect(await lastEvent.evaluate(e => e.location)).toBe(1); + expect.soft(await lastEvent.evaluate(e => e.location)).toBe(1); + expect.soft(await lastEvent.evaluate(e => e.key)).toBe('Control'); + expect.soft(await lastEvent.evaluate(e => e.code)).toBe('ControlLeft'); await textarea.press('ControlRight'); - expect(await lastEvent.evaluate(e => e.location)).toBe(2); + expect.soft(await lastEvent.evaluate(e => e.location)).toBe(2); + expect.soft(await lastEvent.evaluate(e => e.key)).toBe('Control'); + expect.soft(await lastEvent.evaluate(e => e.code)).toBe('ControlRight'); await textarea.press('NumpadSubtract'); - expect(await lastEvent.evaluate(e => e.location)).toBe(3); + expect.soft(await lastEvent.evaluate(e => e.location)).toBe(3); + expect.soft(await lastEvent.evaluate(e => e.key)).toBe('-'); + expect.soft(await lastEvent.evaluate(e => e.code)).toBe('NumpadSubtract'); }); it('should press Enter', async ({ page, server }) => {