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());
});