Pārlūkot izejas kodu

test(e2e): keyboard event capture script

Junyi Du 3 gadi atpakaļ
vecāks
revīzija
e8aa586707

+ 2 - 1
e2e-tests/editor.spec.ts

@@ -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 }) => {

+ 58 - 0
e2e-tests/util/keyboard-event-cap.html

@@ -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>

+ 34 - 46
e2e-tests/util/keyboard-events.ts

@@ -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,
-        "key": "【",
-        "keyCode": 219,
-        "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
+export let macos_pinyin_left_full_bracket = [
+  {
+    "event_type": "keydown",
+    "event": {
+      "key": "【",
+      "code": "BracketLeft",
+      "location": 0,
+      "ctrlKey": false,
+      "shiftKey": false,
+      "altKey": false,
+      "metaKey": false,
+      "repeat": false,
+      "isComposing": false,
+      "composed": true
     }
-]}
+  },
+  {
+    "event_type": "keyup",
+    "event": {
+      "key": "【",
+      "code": "BracketLeft",
+      "location": 0,
+      "ctrlKey": false,
+      "shiftKey": false,
+      "altKey": false,
+      "metaKey": false,
+      "repeat": false,
+      "isComposing": false,
+      "composed": true
+    }
+  }
+]