diff --git a/tests/assets/input/keyboard.html b/tests/assets/input/keyboard.html index fd962c7518..049ed439be 100644 --- a/tests/assets/input/keyboard.html +++ b/tests/assets/input/keyboard.html @@ -10,13 +10,13 @@ let textarea = document.querySelector('textarea'); textarea.focus(); textarea.addEventListener('keydown', event => { - log('Keydown:', event.key, event.code, event.which, modifiers(event)); + log('Keydown:', event.key, event.code, getLocation(event), modifiers(event)); }); textarea.addEventListener('keypress', event => { - log('Keypress:', event.key, event.code, event.which, event.charCode, modifiers(event)); + log('Keypress:', event.key, event.code, getLocation(event), event.charCode, modifiers(event)); }); textarea.addEventListener('keyup', event => { - log('Keyup:', event.key, event.code, event.which, modifiers(event)); + log('Keyup:', event.key, event.code, getLocation(event), modifiers(event)); }); function modifiers(event) { let m = []; @@ -28,6 +28,15 @@ m.push('Shift') return '[' + m.join(' ') + ']'; } + function getLocation(event) { + switch (event.location) { + case KeyboardEvent.DOM_KEY_LOCATION_STANDARD: return 'STANDARD'; + case KeyboardEvent.DOM_KEY_LOCATION_LEFT: return 'LEFT'; + case KeyboardEvent.DOM_KEY_LOCATION_RIGHT: return 'RIGHT'; + case KeyboardEvent.DOM_KEY_LOCATION_NUMPAD: return 'NUMPAD'; + default: return 'Unknown: ' + event.location; + }; + } function log(...args) { console.log.apply(console, args); result += args.join(' ') + '\n'; diff --git a/tests/page/page-keyboard.spec.ts b/tests/page/page-keyboard.spec.ts index 0d922584f4..86ff5508b6 100644 --- a/tests/page/page-keyboard.spec.ts +++ b/tests/page/page-keyboard.spec.ts @@ -93,18 +93,18 @@ it('should report shiftKey', async ({ page, server, browserName, platform }) => const codeForKey = { 'Shift': 16, 'Alt': 18, 'Control': 17 }; for (const modifierKey in codeForKey) { await keyboard.down(modifierKey); - expect(await page.evaluate('getResult()')).toBe('Keydown: ' + modifierKey + ' ' + modifierKey + 'Left ' + codeForKey[modifierKey] + ' [' + modifierKey + ']'); + expect(await page.evaluate('getResult()')).toBe('Keydown: ' + modifierKey + ' ' + modifierKey + 'Left LEFT [' + modifierKey + ']'); await keyboard.down('!'); // Shift+! will generate a keypress if (modifierKey === 'Shift') - expect(await page.evaluate('getResult()')).toBe('Keydown: ! Digit1 49 [' + modifierKey + ']\nKeypress: ! Digit1 33 33 [' + modifierKey + ']'); + expect(await page.evaluate('getResult()')).toBe('Keydown: ! Digit1 STANDARD [' + modifierKey + ']\nKeypress: ! Digit1 STANDARD 33 [' + modifierKey + ']'); else - expect(await page.evaluate('getResult()')).toBe('Keydown: ! Digit1 49 [' + modifierKey + ']'); + expect(await page.evaluate('getResult()')).toBe('Keydown: ! Digit1 STANDARD [' + modifierKey + ']'); await keyboard.up('!'); - expect(await page.evaluate('getResult()')).toBe('Keyup: ! Digit1 49 [' + modifierKey + ']'); + expect(await page.evaluate('getResult()')).toBe('Keyup: ! Digit1 STANDARD [' + modifierKey + ']'); await keyboard.up(modifierKey); - expect(await page.evaluate('getResult()')).toBe('Keyup: ' + modifierKey + ' ' + modifierKey + 'Left ' + codeForKey[modifierKey] + ' []'); + expect(await page.evaluate('getResult()')).toBe('Keyup: ' + modifierKey + ' ' + modifierKey + 'Left LEFT []'); } }); @@ -112,31 +112,31 @@ it('should report multiple modifiers', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); const keyboard = page.keyboard; await keyboard.down('Control'); - expect(await page.evaluate('getResult()')).toBe('Keydown: Control ControlLeft 17 [Control]'); + expect(await page.evaluate('getResult()')).toBe('Keydown: Control ControlLeft LEFT [Control]'); await keyboard.down('Alt'); - expect(await page.evaluate('getResult()')).toBe('Keydown: Alt AltLeft 18 [Alt Control]'); + expect(await page.evaluate('getResult()')).toBe('Keydown: Alt AltLeft LEFT [Alt Control]'); await keyboard.down(';'); - expect(await page.evaluate('getResult()')).toBe('Keydown: ; Semicolon 186 [Alt Control]'); + expect(await page.evaluate('getResult()')).toBe('Keydown: ; Semicolon STANDARD [Alt Control]'); await keyboard.up(';'); - expect(await page.evaluate('getResult()')).toBe('Keyup: ; Semicolon 186 [Alt Control]'); + expect(await page.evaluate('getResult()')).toBe('Keyup: ; Semicolon STANDARD [Alt Control]'); await keyboard.up('Control'); - expect(await page.evaluate('getResult()')).toBe('Keyup: Control ControlLeft 17 [Alt]'); + expect(await page.evaluate('getResult()')).toBe('Keyup: Control ControlLeft LEFT [Alt]'); await keyboard.up('Alt'); - expect(await page.evaluate('getResult()')).toBe('Keyup: Alt AltLeft 18 []'); + expect(await page.evaluate('getResult()')).toBe('Keyup: Alt AltLeft LEFT []'); }); it('should send proper codes while typing', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.type('!'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: ! Digit1 49 []', - 'Keypress: ! Digit1 33 33 []', - 'Keyup: ! Digit1 49 []'].join('\n')); + ['Keydown: ! Digit1 STANDARD []', + 'Keypress: ! Digit1 STANDARD 33 []', + 'Keyup: ! Digit1 STANDARD []'].join('\n')); await page.keyboard.type('^'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: ^ Digit6 54 []', - 'Keypress: ^ Digit6 94 94 []', - 'Keyup: ^ Digit6 54 []'].join('\n')); + ['Keydown: ^ Digit6 STANDARD []', + 'Keypress: ^ Digit6 STANDARD 94 []', + 'Keyup: ^ Digit6 STANDARD []'].join('\n')); }); it('should send proper codes while typing with shift', async ({ page, server }) => { @@ -145,10 +145,10 @@ it('should send proper codes while typing with shift', async ({ page, server }) await keyboard.down('Shift'); await page.keyboard.type('~'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: Shift ShiftLeft 16 [Shift]', - 'Keydown: ~ Backquote 192 [Shift]', // 192 is ` keyCode - 'Keypress: ~ Backquote 126 126 [Shift]', // 126 is ~ charCode - 'Keyup: ~ Backquote 192 [Shift]'].join('\n')); + ['Keydown: Shift ShiftLeft LEFT [Shift]', + 'Keydown: ~ Backquote STANDARD [Shift]', + 'Keypress: ~ Backquote STANDARD 126 [Shift]', + 'Keyup: ~ Backquote STANDARD [Shift]'].join('\n')); await keyboard.up('Shift'); }); @@ -173,54 +173,54 @@ it('should press plus', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('+'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: + Equal 187 []', // 192 is ` keyCode - 'Keypress: + Equal 43 43 []', // 126 is ~ charCode - 'Keyup: + Equal 187 []'].join('\n')); + ['Keydown: + Equal STANDARD []', + 'Keypress: + Equal STANDARD 43 []', + 'Keyup: + Equal STANDARD []'].join('\n')); }); it('should press shift plus', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('Shift++'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: Shift ShiftLeft 16 [Shift]', - 'Keydown: + Equal 187 [Shift]', // 192 is ` keyCode - 'Keypress: + Equal 43 43 [Shift]', // 126 is ~ charCode - 'Keyup: + Equal 187 [Shift]', - 'Keyup: Shift ShiftLeft 16 []'].join('\n')); + ['Keydown: Shift ShiftLeft LEFT [Shift]', + 'Keydown: + Equal STANDARD [Shift]', + 'Keypress: + Equal STANDARD 43 [Shift]', + 'Keyup: + Equal STANDARD [Shift]', + 'Keyup: Shift ShiftLeft LEFT []'].join('\n')); }); it('should support plus-separated modifiers', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('Shift+~'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: Shift ShiftLeft 16 [Shift]', - 'Keydown: ~ Backquote 192 [Shift]', // 192 is ` keyCode - 'Keypress: ~ Backquote 126 126 [Shift]', // 126 is ~ charCode - 'Keyup: ~ Backquote 192 [Shift]', - 'Keyup: Shift ShiftLeft 16 []'].join('\n')); + ['Keydown: Shift ShiftLeft LEFT [Shift]', + 'Keydown: ~ Backquote STANDARD [Shift]', + 'Keypress: ~ Backquote STANDARD 126 [Shift]', + 'Keyup: ~ Backquote STANDARD [Shift]', + 'Keyup: Shift ShiftLeft LEFT []'].join('\n')); }); it('should support multiple plus-separated modifiers', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('Control+Shift+~'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: Control ControlLeft 17 [Control]', - 'Keydown: Shift ShiftLeft 16 [Control Shift]', - 'Keydown: ~ Backquote 192 [Control Shift]', // 192 is ` keyCode - 'Keyup: ~ Backquote 192 [Control Shift]', - 'Keyup: Shift ShiftLeft 16 [Control]', - 'Keyup: Control ControlLeft 17 []'].join('\n')); + ['Keydown: Control ControlLeft LEFT [Control]', + 'Keydown: Shift ShiftLeft LEFT [Control Shift]', + 'Keydown: ~ Backquote STANDARD [Control Shift]', + 'Keyup: ~ Backquote STANDARD [Control Shift]', + 'Keyup: Shift ShiftLeft LEFT [Control]', + 'Keyup: Control ControlLeft LEFT []'].join('\n')); }); it('should shift raw codes', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('Shift+Digit3'); expect(await page.evaluate('getResult()')).toBe( - ['Keydown: Shift ShiftLeft 16 [Shift]', - 'Keydown: # Digit3 51 [Shift]', // 51 is # keyCode - 'Keypress: # Digit3 35 35 [Shift]', // 35 is # charCode - 'Keyup: # Digit3 51 [Shift]', - 'Keyup: Shift ShiftLeft 16 []'].join('\n')); + ['Keydown: Shift ShiftLeft LEFT [Shift]', + 'Keydown: # Digit3 STANDARD [Shift]', + 'Keypress: # Digit3 STANDARD 35 [Shift]', + 'Keyup: # Digit3 STANDARD [Shift]', + 'Keyup: Shift ShiftLeft LEFT []'].join('\n')); }); it('should specify repeat property', async ({ page, server }) => { @@ -710,7 +710,7 @@ it('should have correct Keydown/Keyup order when pressing Escape key', async ({ await page.goto(server.PREFIX + '/input/keyboard.html'); await page.keyboard.press('Escape'); expect(await page.evaluate('getResult()')).toBe(` -Keydown: Escape Escape 27 [] -Keyup: Escape Escape 27 [] +Keydown: Escape Escape STANDARD [] +Keyup: Escape Escape STANDARD [] `.trim()); });