test(e2e): keyboard event capture script

pull/4789/head
Junyi Du 2022-03-05 04:12:57 +08:00 committed by Tienson Qin
parent 75ab20e1e7
commit e8aa586707
3 changed files with 94 additions and 47 deletions

View File

@ -10,9 +10,10 @@ test('keyboard related issues', async ({ page }) => {
await page.type(':nth-match(textarea, 1)', "【")
await page.type(':nth-match(textarea, 1)', ' | with events: ')
await page.type(':nth-match(textarea, 1)', "【")
await press_with_events(page, ':nth-match(textarea, 1)', macos_pinyin_left_full_bracket)
await page.type(':nth-match(textarea, 1)', "【")
await press_with_events(page, ':nth-match(textarea, 1)', macos_pinyin_left_full_bracket)
await page.pause()
})
test('hashtag and quare brackets in same line #4178', async ({ page }) => {

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<head>
<script>
'use strict';
const keys = [
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
// without deprecated / non-standard
"altKey", "code", "ctrlKey", "isComposing", "key", "locale", "location", "metaKey",
"repeat", "shiftKey",
// empiricial
"composed"
]
let output_list = [];
function select_keys(obj, keys) {
let new_obj = {}
for (let k in event)
if (keys.indexOf(k) != -1)
new_obj[k] = event[k]
return new_obj
}
let key_handler_builder = (event_type) => (event) => {
if (event["target"].id != "input")
return;
let output = {
"event_type": event_type,
"event": select_keys(event, keys)
}
output_list.push(output);
let to_print = JSON.stringify(
output_list,
undefined,
2);
document.getElementById("outputs").innerText = to_print;
}
document.addEventListener('keydown', key_handler_builder('keydown'), false);
document.addEventListener('keyup', key_handler_builder('keyup'), false);
window.onload = (e) => {
document.getElementById("input").focus();
}
</script>
</head>
<body>
<input id="input" />
<h2>Key Down</h2>
<p id="outputs" style="white-space: pre;" />
</body>
</html>

View File

@ -1,55 +1,43 @@
// typing 【
export let press_with_events = async function (page, selector, { typedown, keyboard_events }){
await page.type(selector, typedown)
export let press_with_events = async function (page, selector, keyboard_events ){
for (let idx in keyboard_events){
let ev = keyboard_events[idx]
await page.dispatchEvent(selector, ev["type"], ev)
let { event_type, event } = keyboard_events[idx]
await page.dispatchEvent(selector, event_type, event)
await page.waitForTimeout(100)
}
}
export let macos_pinyin_left_full_bracket = {
"typedown": "【",
"keyboard_events": [{
"altKey": false,
"charCode": 0,
"ctrlKey": false,
"code": "BracketLeft",
"composed": true,
"detail": 0,
"event_": {
"code": "BracketLeft",
"isComposing": false,
"composed": true
},
"isComposing": false,
"isTrusted": true,
export let macos_pinyin_left_full_bracket = [
{
"event_type": "keydown",
"event": {
"key": "【",
"keyCode": 219,
"code": "BracketLeft",
"location": 0,
"ctrlKey": false,
"shiftKey": false,
"altKey": false,
"metaKey": false,
"repeat": false,
"returnValue": true,
"shiftKey": false,
"type": "keydown",
"which": 219,
"platformModifierKey": false
}, {
"altKey": false,
"charCode": 0,
"ctrlKey": false,
"event_": {
"code": "BracketLeft",
"isComposing": false,
"composed": true
},
"key": "【",
"keyCode": 219,
"metaKey": false,
"repeat": false,
"shiftKey": false,
"type": "keyup",
"platformModifierKey": false
}
]}
},
{
"event_type": "keyup",
"event": {
"key": "【",
"code": "BracketLeft",
"location": 0,
"ctrlKey": false,
"shiftKey": false,
"altKey": false,
"metaKey": false,
"repeat": false,
"isComposing": false,
"composed": true
}
}
]