fix(firefox): keyboard tests (#4082)
This commit is contained in:
parent
e8a49633d9
commit
a6d8ecce6f
@ -114,9 +114,6 @@ class Keyboard {
|
|||||||
if (this._modifiers & ~8)
|
if (this._modifiers & ~8)
|
||||||
description.text = '';
|
description.text = '';
|
||||||
|
|
||||||
// Firefox calls the 'Meta' key 'OS' on everything but mac
|
|
||||||
if (os.platform() !== 'darwin' && description.key === 'Meta')
|
|
||||||
description.key = 'OS';
|
|
||||||
if (description.code === 'MetaLeft')
|
if (description.code === 'MetaLeft')
|
||||||
description.code = 'OSLeft';
|
description.code = 'OSLeft';
|
||||||
if (description.code === 'MetaRight')
|
if (description.code === 'MetaRight')
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"node": ">=8.9.4"
|
"node": ">=8.9.4"
|
||||||
},
|
},
|
||||||
"puppeteer": {
|
"puppeteer": {
|
||||||
"firefox_revision": "fd63770c54de8a6e4ac28bd9f010405c12105d63"
|
"firefox_revision": "2f959d575a3d61f5dda12e4e2dca1f46a92ab569"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"install": "node install.js",
|
"install": "node install.js",
|
||||||
|
@ -24,8 +24,6 @@
|
|||||||
m.push('Alt')
|
m.push('Alt')
|
||||||
if (event.ctrlKey)
|
if (event.ctrlKey)
|
||||||
m.push('Control');
|
m.push('Control');
|
||||||
if (event.metaKey)
|
|
||||||
m.push('Meta')
|
|
||||||
if (event.shiftKey)
|
if (event.shiftKey)
|
||||||
m.push('Shift')
|
m.push('Shift')
|
||||||
return '[' + m.join(' ') + ']';
|
return '[' + m.join(' ') + ']';
|
||||||
|
@ -81,10 +81,10 @@ module.exports.addTests = function({testRunner, expect, FFOX}) {
|
|||||||
await page.keyboard.sendCharacter('a');
|
await page.keyboard.sendCharacter('a');
|
||||||
expect(await page.evaluate(() => document.querySelector('textarea').value)).toBe('嗨a');
|
expect(await page.evaluate(() => document.querySelector('textarea').value)).toBe('嗨a');
|
||||||
});
|
});
|
||||||
it_fails_ffox('should report shiftKey', async({page, server}) => {
|
it('should report shiftKey', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/keyboard.html');
|
await page.goto(server.PREFIX + '/input/keyboard.html');
|
||||||
const keyboard = page.keyboard;
|
const keyboard = page.keyboard;
|
||||||
const codeForKey = {'Shift': 16, 'Alt': 18, 'Meta': 91, 'Control': 17};
|
const codeForKey = {'Shift': 16, 'Alt': 18, 'Control': 17};
|
||||||
for (const modifierKey in codeForKey) {
|
for (const modifierKey in codeForKey) {
|
||||||
await keyboard.down(modifierKey);
|
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 ' + codeForKey[modifierKey] + ' [' + modifierKey + ']');
|
||||||
@ -101,21 +101,21 @@ module.exports.addTests = function({testRunner, expect, FFOX}) {
|
|||||||
expect(await page.evaluate(() => getResult())).toBe('Keyup: ' + modifierKey + ' ' + modifierKey + 'Left ' + codeForKey[modifierKey] + ' []');
|
expect(await page.evaluate(() => getResult())).toBe('Keyup: ' + modifierKey + ' ' + modifierKey + 'Left ' + codeForKey[modifierKey] + ' []');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
it_fails_ffox('should report multiple modifiers', async({page, server}) => {
|
it('should report multiple modifiers', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/keyboard.html');
|
await page.goto(server.PREFIX + '/input/keyboard.html');
|
||||||
const keyboard = page.keyboard;
|
const keyboard = page.keyboard;
|
||||||
await keyboard.down('Control');
|
await keyboard.down('Control');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keydown: Control ControlLeft 17 [Control]');
|
expect(await page.evaluate(() => getResult())).toBe('Keydown: Control ControlLeft 17 [Control]');
|
||||||
await keyboard.down('Meta');
|
await keyboard.down('Alt');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keydown: Meta MetaLeft 91 [Control Meta]');
|
expect(await page.evaluate(() => getResult())).toBe('Keydown: Alt AltLeft 18 [Alt Control]');
|
||||||
await keyboard.down(';');
|
await keyboard.down(';');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keydown: ; Semicolon 186 [Control Meta]');
|
expect(await page.evaluate(() => getResult())).toBe('Keydown: ; Semicolon 186 [Alt Control]');
|
||||||
await keyboard.up(';');
|
await keyboard.up(';');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keyup: ; Semicolon 186 [Control Meta]');
|
expect(await page.evaluate(() => getResult())).toBe('Keyup: ; Semicolon 186 [Alt Control]');
|
||||||
await keyboard.up('Control');
|
await keyboard.up('Control');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keyup: Control ControlLeft 17 [Meta]');
|
expect(await page.evaluate(() => getResult())).toBe('Keyup: Control ControlLeft 17 [Alt]');
|
||||||
await keyboard.up('Meta');
|
await keyboard.up('Alt');
|
||||||
expect(await page.evaluate(() => getResult())).toBe('Keyup: Meta MetaLeft 91 []');
|
expect(await page.evaluate(() => getResult())).toBe('Keyup: Alt AltLeft 18 []');
|
||||||
});
|
});
|
||||||
it('should send proper codes while typing', async({page, server}) => {
|
it('should send proper codes while typing', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/keyboard.html');
|
await page.goto(server.PREFIX + '/input/keyboard.html');
|
||||||
@ -225,5 +225,30 @@ module.exports.addTests = function({testRunner, expect, FFOX}) {
|
|||||||
await textarea.type('👹 Tokyo street Japan 🇯🇵');
|
await textarea.type('👹 Tokyo street Japan 🇯🇵');
|
||||||
expect(await frame.$eval('textarea', textarea => textarea.value)).toBe('👹 Tokyo street Japan 🇯🇵');
|
expect(await frame.$eval('textarea', textarea => textarea.value)).toBe('👹 Tokyo street Japan 🇯🇵');
|
||||||
});
|
});
|
||||||
|
it('should press the meta key', async({page}) => {
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window.result = null;
|
||||||
|
document.addEventListener('keydown', event => {
|
||||||
|
window.result = [event.key, event.code, event.metaKey];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
await page.keyboard.press('Meta');
|
||||||
|
const [key, code, metaKey] = await page.evaluate('result');
|
||||||
|
if (FFOX && os.platform() !== 'darwin')
|
||||||
|
expect(key).toBe('OS');
|
||||||
|
else
|
||||||
|
expect(key).toBe('Meta');
|
||||||
|
|
||||||
|
if (FFOX)
|
||||||
|
expect(code).toBe('OSLeft');
|
||||||
|
else
|
||||||
|
expect(code).toBe('MetaLeft');
|
||||||
|
|
||||||
|
if (FFOX && os.platform() !== 'darwin')
|
||||||
|
expect(metaKey).toBe(false);
|
||||||
|
else
|
||||||
|
expect(metaKey).toBe(true);
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
const os = require('os');
|
||||||
|
|
||||||
function dimensions() {
|
function dimensions() {
|
||||||
const rect = document.querySelector('textarea').getBoundingClientRect();
|
const rect = document.querySelector('textarea').getBoundingClientRect();
|
||||||
@ -99,7 +100,7 @@ module.exports.addTests = function({testRunner, expect, FFOX}) {
|
|||||||
await page.hover('#button-6');
|
await page.hover('#button-6');
|
||||||
expect(await page.evaluate(() => document.querySelector('button:hover').id)).toBe('button-6');
|
expect(await page.evaluate(() => document.querySelector('button:hover').id)).toBe('button-6');
|
||||||
});
|
});
|
||||||
it_fails_ffox('should set modifier keys on click', async({page, server}) => {
|
it('should set modifier keys on click', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/scrollable.html');
|
await page.goto(server.PREFIX + '/input/scrollable.html');
|
||||||
await page.evaluate(() => document.querySelector('#button-3').addEventListener('mousedown', e => window.lastEvent = e, true));
|
await page.evaluate(() => document.querySelector('#button-3').addEventListener('mousedown', e => window.lastEvent = e, true));
|
||||||
const modifiers = {'Shift': 'shiftKey', 'Control': 'ctrlKey', 'Alt': 'altKey', 'Meta': 'metaKey'};
|
const modifiers = {'Shift': 'shiftKey', 'Control': 'ctrlKey', 'Alt': 'altKey', 'Meta': 'metaKey'};
|
||||||
|
Loading…
Reference in New Issue
Block a user