From 3adf8b6be0252c89b5c7dea77ea61a63c839be30 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 3 Nov 2024 15:00:35 +0100 Subject: [PATCH] Fix the "must convert input to uppercase" scripting integration test This integration test fails intermittently because we're not (correctly) awaiting the sandbox actions. The `27R` field in `issue14862.pdf` triggers sandbox events for every typing action, but for the backspace and "a" character typing actions we weren't awaiting the sandbox trip at all, and for other places we weren't awaiting it fully (causing some characters to be missed in the assertion). This commit fixes the issues by using the appropriate helper functions, similar to what we did in PR #18399. Not only is this shorter in terms of code, but it also fixed the near-permafail for this test with newer versions of Puppeteer. --- test/integration/scripting_spec.mjs | 40 +++++++++-------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 715857f70..7f74d5893 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -1229,59 +1229,43 @@ describe("Interaction", () => { await typeAndWaitForSandbox(page, getSelector("27R"), "Hello"); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "Hello"` + `${getQuerySelector("27R")}.value === "HELLO"` ); - let text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO"); - await typeAndWaitForSandbox(page, getSelector("27R"), " world"); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO world"` + `${getQuerySelector("27R")}.value === "HELLO WORLD"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WORLD"); - await page.keyboard.press("Backspace"); + await waitForSandboxTrip(page); await page.keyboard.press("Backspace"); - + await waitForSandboxTrip(page); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WORLD"` + `${getQuerySelector("27R")}.value === "HELLO WOR"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WOR"); - await typeAndWaitForSandbox(page, getSelector("27R"), "12.dL"); - await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WOR"` + `${getQuerySelector("27R")}.value === "HELLO WORDL"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WORDL"); - await typeAndWaitForSandbox(page, getSelector("27R"), " "); - await kbDeleteLastWord(page); - + await waitForSandboxTrip(page); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WORDL "` + `${getQuerySelector("27R")}.value === "HELLO "` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO "); - await page.$eval(getSelector("27R"), el => { // Select LL el.selectionStart = 2; el.selectionEnd = 4; }); - - await page.keyboard.press("a"); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HEAO "); + await typeAndWaitForSandbox(page, getSelector("27R"), "a"); + await page.waitForFunction( + `${getQuerySelector("27R")}.value === "HEAO "` + ); }) ); });