From 53ddfd139ff9ea60a4b2e1a856ea93f46a014aff Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 4 Jul 2024 10:33:53 +0200 Subject: [PATCH] Fix the integration tests related to printing --- test/integration/scripting_spec.mjs | 67 ++++++++++++++--------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index ed71e1580bbbd..a69ba3f317e6a 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -17,6 +17,7 @@ import { awaitPromise, clearInput, closePages, + closeSinglePage, getAnnotationStorage, getComputedStyleSelector, getFirstSerialized, @@ -418,41 +419,37 @@ describe("Interaction", () => { pages = await loadAndWait("doc_actions.pdf", getSelector("47R")); }); - afterAll(async () => { - await closePages(pages); - }); - it("must execute WillPrint and DidPrint actions", async () => { - await Promise.all( - pages.map(async ([browserName, page]) => { - if (process.platform === "win32" && browserName === "firefox") { - pending("Disabled in Firefox on Windows, because of bug 1662471."); - } - await page.waitForFunction( - "window.PDFViewerApplication.scriptingReady === true" - ); - - await clearInput(page, getSelector("47R")); - await page.evaluate(_ => { - window.document.activeElement.blur(); - }); - await page.waitForFunction(`${getQuerySelector("47R")}.value === ""`); + // Run the tests sequentially to avoid to use the same printer at the same + // time. + // And to make sure that a printer isn't locked by a process we close the + // page before running the next test. + for (const [browserName, page] of pages) { + await page.waitForFunction( + "window.PDFViewerApplication.scriptingReady === true" + ); - let text = await actAndWaitForInput( - page, - getSelector("47R"), - async () => { - await page.click("#print"); - } - ); - expect(text).withContext(`In ${browserName}`).toEqual("WillPrint"); + await clearInput(page, getSelector("47R")); + await page.evaluate(_ => { + window.document.activeElement.blur(); + }); + await page.waitForFunction(`${getQuerySelector("47R")}.value === ""`); - await page.waitForFunction(`${getQuerySelector("50R")}.value !== ""`); + const text = await actAndWaitForInput( + page, + getSelector("47R"), + async () => { + await page.click("#print"); + } + ); + expect(text).withContext(`In ${browserName}`).toEqual("WillPrint"); + await page.keyboard.press("Escape"); - text = await page.$eval(getSelector("50R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("DidPrint"); - }) - ); + await page.waitForFunction( + `${getQuerySelector("50R")}.value === "DidPrint"` + ); + await closeSinglePage(page); + } }); }); @@ -1789,17 +1786,19 @@ describe("Interaction", () => { pages = await loadAndWait( "autoprint.pdf", "", - null /* pageSetup = */, + null /* zoom = */, async page => { printHandles.set( page, - await page.evaluateHandle(() => [ + page.evaluateHandle(() => [ new Promise(resolve => { globalThis.printResolve = resolve; }), ]) ); await page.waitForFunction(() => { + // We don't really need to print the document. + window.print = () => {}; if (!window.PDFViewerApplication?.eventBus) { return false; } @@ -1826,7 +1825,7 @@ describe("Interaction", () => { it("must check if printing is triggered when the document is open", async () => { await Promise.all( pages.map(async ([browserName, page]) => { - await awaitPromise(printHandles.get(page)); + await awaitPromise(await printHandles.get(page)); }) ); });