瀏覽代碼

test(e2e): fix missing event_ property of KeyboardEvent in Google Closure Library

Junyi Du 3 年之前
父節點
當前提交
a97c37c2ad
共有 3 個文件被更改,包括 32 次插入19 次删除
  1. 4 0
      .github/workflows/build.yml
  2. 9 8
      e2e-tests/editor.spec.ts
  3. 19 11
      e2e-tests/util/keyboard-events.ts

+ 4 - 0
.github/workflows/build.yml

@@ -181,6 +181,10 @@ jobs:
       - name: Ensure static yarn.lock is up to date
         run: git diff --exit-code static/yarn.lock
 
+      # If not building, the `event_` of `goog.event.KeyboardEvent` would be missing
+      - name: Build app
+        run: clojure -M:cljs compile app
+
       - name: Run Playwright test
         run: xvfb-run -- yarn e2e-test
         env:

+ 9 - 8
e2e-tests/editor.spec.ts

@@ -9,19 +9,20 @@ test(
   "but dont trigger RIME #3440 ",
   // cases should trigger [[]] #3251
   async ({ page }) => {
-    for (let left_full_bracket of [
-      kb_events.macos_pinyin_left_full_bracket,
+    for (let [idx, left_full_bracket] of [
       kb_events.win10_pinyin_left_full_bracket,
+      kb_events.macos_pinyin_left_full_bracket
       // TODO: support #3741
       // kb_events.win10_legacy_pinyin_left_full_bracket,
-    ]) {
+    ].entries()) {
       await createRandomPage(page)
-      await page.type(':nth-match(textarea, 1)', "【")
+      let check_text = "#3251 test " + idx
+      await page.fill(':nth-match(textarea, 1)', check_text + "【")
       await dispatch_kb_events(page, ':nth-match(textarea, 1)', left_full_bracket)
-      expect(await page.inputValue(':nth-match(textarea, 1)')).toBe('【')
-      await page.type(':nth-match(textarea, 1)', "【")
+      expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(check_text + '【')
+      await page.fill(':nth-match(textarea, 1)', check_text + "【【")
       await dispatch_kb_events(page, ':nth-match(textarea, 1)', left_full_bracket)
-      expect(await page.inputValue(':nth-match(textarea, 1)')).toBe('[[]]')
+      expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(check_text + '[[]]')
     };
 
     // dont trigger RIME #3440
@@ -31,7 +32,7 @@ test(
     ].entries()) {
       await createRandomPage(page)
       let check_text = "#3440 test " + idx
-      await page.type(':nth-match(textarea, 1)', check_text)
+      await page.fill(':nth-match(textarea, 1)', check_text)
       await dispatch_kb_events(page, ':nth-match(textarea, 1)', selecting_candidate_left_bracket)
       expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(check_text)
       await dispatch_kb_events(page, ':nth-match(textarea, 1)', selecting_candidate_left_bracket)

+ 19 - 11
e2e-tests/util/keyboard-events.ts

@@ -4,15 +4,23 @@
  * https://stackoverflow.com/questions/8892238/detect-keyboard-layout-with-javascript
  * ***/
 
-export let dispatch_kb_events = async function (page, selector, keyboard_events ){
-    for (let idx in keyboard_events){
-      let { event_type, event, latency } = keyboard_events[idx]
-      await page.waitForTimeout(latency)
-      await page.dispatchEvent(selector, event_type, event)
-    }
+import { Page } from '@playwright/test'
+
+interface RecordedEvent {
+  event_type: string;
+  event: any; // KeyboardEvent is too heavy
+  latency: number;
+}
+
+export let dispatch_kb_events = async function (page: Page, selector: string, keyboard_events: RecordedEvent[] ){
+  for (let kbev of keyboard_events){
+    let { event_type, event, latency } = kbev
+    await page.waitForTimeout(latency)
+    await page.dispatchEvent(selector, event_type, event)
+  }
 }
 
-export let macos_pinyin_left_full_bracket = [
+export let macos_pinyin_left_full_bracket: RecordedEvent[] = [
   {
     "event_type": "keydown",
     "event": {
@@ -60,7 +68,7 @@ export let macos_pinyin_left_full_bracket = [
   }
 ]
 
-export let win10_pinyin_left_full_bracket = [
+export let win10_pinyin_left_full_bracket: RecordedEvent[] = [
   {
     "event_type": "keydown",
     "event": {
@@ -128,7 +136,7 @@ export let win10_pinyin_left_full_bracket = [
   }
 ]
 
-export let win10_legacy_pinyin_left_full_bracket = [
+export let win10_legacy_pinyin_left_full_bracket: RecordedEvent[] = [
   {
     "event_type": "keydown",
     "event": {
@@ -181,7 +189,7 @@ export let win10_legacy_pinyin_left_full_bracket = [
   }
 ]
 
-export let macos_pinyin_selecting_candidate_double_left_bracket = [
+export let macos_pinyin_selecting_candidate_double_left_bracket: RecordedEvent[] = [
   {
     "event_type": "keydown",
     "event": {
@@ -349,7 +357,7 @@ export let macos_pinyin_selecting_candidate_double_left_bracket = [
   }
 ]
 
-export let win10_RIME_selecting_candidate_double_left_bracket = [
+export let win10_RIME_selecting_candidate_double_left_bracket: RecordedEvent[] = [
   {
     "event_type": "keydown",
     "event": {