Skip to content

Commit 6e584ad

Browse files
committed
Use realistic typing delays for the scripting integration tests
In the scripting integration tests we use a few different typing delays, mostly 100 or 200 milliseconds. According to for example https://www.typingpal.com/en/documentation/school-edition/pedagogical-resources/typing-speed, a fast typing speed is around 300 characters per minute, which is 5 characters per second and therefore a delay of 200 milliseconds between each keystroke. Note that this is already above average, so in practice the delay will be even larger. Therefore the 100 milliseconds variant is unrealistically fast and therefore not suitable for the integration tests which aim to simulate the average user behavior. On top of that, the quick typing speeds are problematic for the tests that involve validation alert dialogs appearing during typing. In those tests a handler is registered to close the dialog once it pops up, but it takes time for Puppeteer to notice the dialog, trigger the handler and close it. If the typing delay, which is the delay between the key down and key up events according to the Puppeteer source code at https://github.com/puppeteer/puppeteer/blob/master/packages/puppeteer-core/src/cdp/Input.ts#L209-L215, is too short, the key up event will be fired before the dialog is closed. In that time the text box we're typing in is not focused, so when the dialog is closed the `page.type()` call on the text box will never resolve because the key up event never reached the text box. This commit aims to fix the issues by converting all 100 millisecond delays to 200 milliseconds. For instance the "must check input for US zip format" failed pretty consistently locally before and hasn't failed anymore with a 200 millisecond delay.
1 parent 9b46404 commit 6e584ad

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

test/integration/scripting_spec.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ describe("Interaction", () => {
833833
const prev = await page.$eval(getSelector("171R"), el => el.value);
834834

835835
await page.type(getSelector(id), val.toString(), {
836-
delay: 100,
836+
delay: 200,
837837
});
838838
await page.keyboard.press("Tab");
839839

@@ -1035,7 +1035,7 @@ describe("Interaction", () => {
10351035
await clearInput(page, getSelector("30R"));
10361036

10371037
await page.focus(getSelector("29R"));
1038-
await page.type(getSelector("29R"), "12A", { delay: 100 });
1038+
await page.type(getSelector("29R"), "12A", { delay: 200 });
10391039
await page.waitForFunction(
10401040
`${getQuerySelector("29R")}.value !== "12A"`
10411041
);
@@ -1044,7 +1044,7 @@ describe("Interaction", () => {
10441044
expect(text).withContext(`In ${browserName}`).toEqual("12");
10451045

10461046
await page.focus(getSelector("29R"));
1047-
await page.type(getSelector("29R"), "34", { delay: 100 });
1047+
await page.type(getSelector("29R"), "34", { delay: 200 });
10481048
await page.click("[data-annotation-id='30R']");
10491049

10501050
await page.waitForFunction(
@@ -1055,7 +1055,7 @@ describe("Interaction", () => {
10551055
expect(text).withContext(`In ${browserName}`).toEqual("");
10561056

10571057
await page.focus(getSelector("29R"));
1058-
await page.type(getSelector("29R"), "12345", { delay: 100 });
1058+
await page.type(getSelector("29R"), "12345", { delay: 200 });
10591059
await page.click("[data-annotation-id='30R']");
10601060

10611061
text = await page.$eval(getSelector(`29R`), el => el.value);
@@ -1092,7 +1092,7 @@ describe("Interaction", () => {
10921092
await clearInput(page, getSelector("30R"));
10931093

10941094
await page.focus(getSelector("30R"));
1095-
await page.type(getSelector("30R"), "(123) 456A", { delay: 100 });
1095+
await page.type(getSelector("30R"), "(123) 456A", { delay: 200 });
10961096
await page.waitForFunction(
10971097
`${getQuerySelector("30R")}.value !== "(123) 456A"`
10981098
);
@@ -1101,7 +1101,7 @@ describe("Interaction", () => {
11011101
expect(text).withContext(`In ${browserName}`).toEqual("(123) 456");
11021102

11031103
await page.focus(getSelector("30R"));
1104-
await page.type(getSelector("30R"), "-789", { delay: 100 });
1104+
await page.type(getSelector("30R"), "-789", { delay: 200 });
11051105
await page.click("[data-annotation-id='29R']");
11061106

11071107
await page.waitForFunction(
@@ -1112,7 +1112,7 @@ describe("Interaction", () => {
11121112
expect(text).withContext(`In ${browserName}`).toEqual("");
11131113

11141114
await page.focus(getSelector("30R"));
1115-
await page.type(getSelector("30R"), "(123) 456-7890", { delay: 100 });
1115+
await page.type(getSelector("30R"), "(123) 456-7890", { delay: 200 });
11161116
await page.click("[data-annotation-id='29R']");
11171117

11181118
text = await page.$eval(getSelector("30R"), el => el.value);
@@ -1149,7 +1149,7 @@ describe("Interaction", () => {
11491149
await clearInput(page, getSelector("30R"));
11501150

11511151
await page.focus(getSelector("30R"));
1152-
await page.type(getSelector("30R"), "123A", { delay: 100 });
1152+
await page.type(getSelector("30R"), "123A", { delay: 200 });
11531153
await page.waitForFunction(
11541154
`${getQuerySelector("30R")}.value !== "123A"`
11551155
);
@@ -1158,7 +1158,7 @@ describe("Interaction", () => {
11581158
expect(text).withContext(`In ${browserName}`).toEqual("123");
11591159

11601160
await page.focus(getSelector("30R"));
1161-
await page.type(getSelector("30R"), "-456", { delay: 100 });
1161+
await page.type(getSelector("30R"), "-456", { delay: 200 });
11621162
await page.click("[data-annotation-id='29R']");
11631163

11641164
await page.waitForFunction(
@@ -1169,7 +1169,7 @@ describe("Interaction", () => {
11691169
expect(text).withContext(`In ${browserName}`).toEqual("");
11701170

11711171
await page.focus(getSelector("30R"));
1172-
await page.type(getSelector("30R"), "123-4567", { delay: 100 });
1172+
await page.type(getSelector("30R"), "123-4567", { delay: 200 });
11731173
await page.click("[data-annotation-id='29R']");
11741174

11751175
text = await page.$eval(getSelector("30R"), el => el.value);
@@ -1201,15 +1201,15 @@ describe("Interaction", () => {
12011201
"window.PDFViewerApplication.scriptingReady === true"
12021202
);
12031203

1204-
await page.type(getSelector("27R"), "Hello", { delay: 100 });
1204+
await page.type(getSelector("27R"), "Hello", { delay: 200 });
12051205
await page.waitForFunction(
12061206
`${getQuerySelector("27R")}.value !== "Hello"`
12071207
);
12081208

12091209
let text = await page.$eval(getSelector("27R"), el => el.value);
12101210
expect(text).withContext(`In ${browserName}`).toEqual("HELLO");
12111211

1212-
await page.type(getSelector("27R"), " world", { delay: 100 });
1212+
await page.type(getSelector("27R"), " world", { delay: 200 });
12131213
await page.waitForFunction(
12141214
`${getQuerySelector("27R")}.value !== "HELLO world"`
12151215
);
@@ -1227,7 +1227,7 @@ describe("Interaction", () => {
12271227
text = await page.$eval(getSelector("27R"), el => el.value);
12281228
expect(text).withContext(`In ${browserName}`).toEqual("HELLO WOR");
12291229

1230-
await page.type(getSelector("27R"), "12.dL", { delay: 100 });
1230+
await page.type(getSelector("27R"), "12.dL", { delay: 200 });
12311231

12321232
await page.waitForFunction(
12331233
`${getQuerySelector("27R")}.value !== "HELLO WOR"`
@@ -1236,7 +1236,7 @@ describe("Interaction", () => {
12361236
text = await page.$eval(getSelector("27R"), el => el.value);
12371237
expect(text).withContext(`In ${browserName}`).toEqual("HELLO WORDL");
12381238

1239-
await page.type(getSelector("27R"), " ", { delay: 100 });
1239+
await page.type(getSelector("27R"), " ", { delay: 200 });
12401240

12411241
await page.keyboard.down("Control");
12421242
await page.keyboard.press("Backspace");
@@ -1274,7 +1274,7 @@ describe("Interaction", () => {
12741274
el.setSelectionRange(0, 0)
12751275
);
12761276

1277-
await page.type(getSelector("28R"), "Hello", { delay: 100 });
1277+
await page.type(getSelector("28R"), "Hello", { delay: 200 });
12781278
await page.waitForFunction(
12791279
`${getQuerySelector("28R")}.value !== "123"`
12801280
);
@@ -1322,7 +1322,7 @@ describe("Interaction", () => {
13221322
"window.PDFViewerApplication.scriptingReady === true"
13231323
);
13241324

1325-
await page.type(getSelector("29R"), "Hello World", { delay: 100 });
1325+
await page.type(getSelector("29R"), "Hello World", { delay: 200 });
13261326
await page.click(getSelector("27R"));
13271327

13281328
await page.waitForFunction(
@@ -1763,7 +1763,7 @@ describe("Interaction", () => {
17631763
"window.PDFViewerApplication.scriptingReady === true"
17641764
);
17651765

1766-
await page.type(getSelector("30R"), "abc", { delay: 100 });
1766+
await page.type(getSelector("30R"), "abc", { delay: 200 });
17671767
await page.waitForFunction(
17681768
`${getQuerySelector("30R")}.value !== "abc"`
17691769
);

0 commit comments

Comments
 (0)