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

This commit is contained in:
Junyi Du
2022-03-31 21:37:19 +08:00
committed by Tienson Qin
parent f4ce0ea62f
commit a97c37c2ad
3 changed files with 32 additions and 19 deletions

View File

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

View File

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

View File

@@ -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 macos_pinyin_left_full_bracket = [
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: 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": {