From 334d6813596b79527a3ecdb68aae4cee0dc36366 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 16 Mar 2025 19:46:31 +0100 Subject: [PATCH 1/3] Refactor the order-dependent scripting integration tests By checking for the expected value directly we can shorten the code, and it simplifies removing the dependencies between the tests in the next commit (by having fewer places to change). Note that this follows the same pattern as PRs #19192, #19001 and #18399 and also helps to remove any further possibilities for intermittent failures. --- test/integration/scripting_spec.mjs | 90 +++++++++-------------------- 1 file changed, 28 insertions(+), 62 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 9ada96fb5..1547674ee 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -150,15 +150,12 @@ describe("Interaction", () => { await page.type(getSelector("416R"), "3.14159"); await page.click(getSelector("419R")); - - const valueFnStr = `${getQuerySelector("416R")}.value !== "3.14159"`; - await page.waitForFunction(valueFnStr); - - const text = await page.$eval(getSelector("416R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("3,14"); - - const sum = await page.$eval(getSelector("427R"), el => el.value); - expect(sum).withContext(`In ${browserName}`).toEqual("3,14"); + await page.waitForFunction( + `${getQuerySelector("416R")}.value === "3,14"` + ); + await page.waitForFunction( + `${getQuerySelector("427R")}.value === "3,14"` + ); }) ); }); @@ -170,36 +167,23 @@ describe("Interaction", () => { await page.type(getSelector("448R"), "61803"); await page.click(getSelector("419R")); - - const valueOneFnStr = `${getQuerySelector("448R")}.value !== "61803"`; - await page.waitForFunction(valueOneFnStr); - - let text = await page.$eval(getSelector("448R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("61.803,00"); + await page.waitForFunction( + `${getQuerySelector("448R")}.value === "61.803,00"` + ); await page.click(getSelector("448R")); - - const valueTwoFnStr = `${getQuerySelector( - "448R" - )}.value !== "61.803,00"`; - await page.waitForFunction(valueTwoFnStr); - - text = await page.$eval(getSelector("448R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("61803"); + await page.waitForFunction( + `${getQuerySelector("448R")}.value === "61803"` + ); // Clear the textfield await clearInput(page, getSelector("448R")); await page.type(getSelector("448R"), "1.61803"); await page.click(getSelector("419R")); - - const valueThreeFnStr = `${getQuerySelector( - "448R" - )}.value !== "1.61803"`; - await page.waitForFunction(valueThreeFnStr); - - text = await page.$eval(getSelector("448R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("1,62"); + await page.waitForFunction( + `${getQuerySelector("448R")}.value === "1,62"` + ); }) ); }); @@ -209,24 +193,14 @@ describe("Interaction", () => { pages.map(async ([browserName, page]) => { await waitForScripting(page); - const prevSum = await page.$eval(getSelector("427R"), el => el.value); - await page.type(getSelector("422R"), "2.7182818"); await page.keyboard.press("Tab"); - await page.waitForFunction( - `${getQuerySelector("422R")}.value !== "2.7182818"` + `${getQuerySelector("422R")}.value === "2,72"` ); - - const text = await page.$eval(getSelector("422R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("2,72"); - await page.waitForFunction( - `${getQuerySelector("427R")}.value !== "${prevSum}"` + `${getQuerySelector("427R")}.value === "5,86"` ); - - const sum = await page.$eval(getSelector("427R"), el => el.value); - expect(sum).withContext(`In ${browserName}`).toEqual("5,86"); }) ); }); @@ -236,21 +210,18 @@ describe("Interaction", () => { pages.map(async ([browserName, page]) => { await waitForScripting(page); - let sum = await page.$eval(getSelector("471R"), el => el.value); - expect(sum).withContext(`In ${browserName}`).toEqual("4,24"); + await page.waitForFunction( + `${getQuerySelector("471R")}.value === "4,24"` + ); await page.type(getSelector("436R"), "0.69314"); await page.keyboard.press("Escape"); - - const text = await page.$eval(getSelector("436R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("0.69314"); - await page.waitForFunction( - `${getQuerySelector("471R")}.value !== "${sum}"` + `${getQuerySelector("436R")}.value === "0.69314"` + ); + await page.waitForFunction( + `${getQuerySelector("471R")}.value === "3,55"` ); - - sum = await page.$eval(getSelector("471R"), el => el.value); - expect(sum).withContext(`In ${browserName}`).toEqual("3,55"); }) ); }); @@ -260,19 +231,14 @@ describe("Interaction", () => { pages.map(async ([browserName, page]) => { await waitForScripting(page); - const prevSum = await page.$eval(getSelector("427R"), el => el.value); - await page.type(getSelector("419R"), "0.577215"); await page.keyboard.press("Enter"); - const text = await page.$eval(getSelector("419R"), el => el.value); - expect(text).toEqual("0.577215"); - await page.waitForFunction( - `${getQuerySelector("427R")}.value !== "${prevSum}"` + `${getQuerySelector("419R")}.value === "0.577215"` + ); + await page.waitForFunction( + `${getQuerySelector("427R")}.value === "6,44"` ); - - const sum = await page.$eval(getSelector("427R"), el => el.value); - expect(sum).toEqual("6,44"); }) ); }); From 0f3692a62142973797adc572430e576f5f9385fa Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 16 Mar 2025 20:07:17 +0100 Subject: [PATCH 2/3] Remove the dependency between the order-dependent scripting integration tests The integration tests are order-dependent because they rely on input field state set by a previous test. This commit fixes the issue by updating the values to match the initial state of the document, which makes sure that we don't build upon values from previous tests while still testing the intended logic in the individual tests like before. --- test/integration/scripting_spec.mjs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 1547674ee..f7deaadac 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -199,7 +199,7 @@ describe("Interaction", () => { `${getQuerySelector("422R")}.value === "2,72"` ); await page.waitForFunction( - `${getQuerySelector("427R")}.value === "5,86"` + `${getQuerySelector("427R")}.value === "2,72"` ); }) ); @@ -210,17 +210,13 @@ describe("Interaction", () => { pages.map(async ([browserName, page]) => { await waitForScripting(page); - await page.waitForFunction( - `${getQuerySelector("471R")}.value === "4,24"` - ); - await page.type(getSelector("436R"), "0.69314"); await page.keyboard.press("Escape"); await page.waitForFunction( `${getQuerySelector("436R")}.value === "0.69314"` ); await page.waitForFunction( - `${getQuerySelector("471R")}.value === "3,55"` + `${getQuerySelector("471R")}.value === "0,69"` ); }) ); @@ -237,7 +233,7 @@ describe("Interaction", () => { `${getQuerySelector("419R")}.value === "0.577215"` ); await page.waitForFunction( - `${getQuerySelector("427R")}.value === "6,44"` + `${getQuerySelector("427R")}.value === "0,58"` ); }) ); From 1c73e526e0d70827bd94dcdbdda209c329b45672 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 16 Mar 2025 20:08:56 +0100 Subject: [PATCH 3/3] Isolate the scripting integration tests To avoid being able to introduce dependencies between tests, and to bring existing dependencies to the surface, this commit makes sure that we close the document between tests so that we can't accidentally rely on state set by a previous test. This prevents multiple tests from failing if one of them fails and makes debugging easier by being able to run each test on their own independent of other tests. This commit, combined with the previous ones, is enough to make the scripting integration test suite pass consistently if random mode in Jasmine is enabled, proving that the tests are fully isolated now. --- test/integration/scripting_spec.mjs | 187 ++++++++++++++-------------- 1 file changed, 94 insertions(+), 93 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index f7deaadac..7ed4dafb9 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -74,11 +74,11 @@ describe("Interaction", () => { describe("in 160F-2019.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("160F-2019.pdf", getSelector("416R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -291,11 +291,11 @@ describe("Interaction", () => { describe("in js-buttons.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("js-buttons.pdf", getSelector("80R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -418,7 +418,7 @@ describe("Interaction", () => { describe("in doc_actions.pdf for printing", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("doc_actions.pdf", getSelector("47R"), null, { earlySetup: () => { // No need to trigger the print dialog. @@ -459,11 +459,11 @@ describe("Interaction", () => { describe("in doc_actions.pdf for saving", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("doc_actions.pdf", getSelector("47R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -506,11 +506,11 @@ describe("Interaction", () => { describe("in doc_actions.pdf for page actions", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("doc_actions.pdf", getSelector("47R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -563,11 +563,11 @@ describe("Interaction", () => { describe("in js-authors.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("js-authors.pdf", getSelector("25R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -594,11 +594,11 @@ describe("Interaction", () => { describe("in listbox_actions.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("listbox_actions.pdf", getSelector("33R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -736,11 +736,11 @@ describe("Interaction", () => { describe("in js-colors.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("js-colors.pdf", getSelector("34R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -809,11 +809,11 @@ describe("Interaction", () => { describe("in issue13132.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue13132.pdf", getSelector("171R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -868,11 +868,11 @@ describe("Interaction", () => { describe("Check field properties", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("evaljs.pdf", getSelector("55R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -943,11 +943,11 @@ describe("Interaction", () => { describe("in issue13269.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue13269.pdf", getSelector("27R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -978,13 +978,14 @@ describe("Interaction", () => { describe("in secHandler.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("secHandler.pdf", getSelector("25R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); + it("must print securityHandler value in a text field", async () => { await Promise.all( pages.map(async ([browserName, page]) => { @@ -1006,7 +1007,7 @@ describe("Interaction", () => { describe("in issue14307.pdf (1)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue14307.pdf", getSelector("30R")); pages.map(async ([, page]) => { page.on("dialog", async dialog => { @@ -1015,7 +1016,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1049,7 +1050,7 @@ describe("Interaction", () => { describe("in issue14307.pdf (2)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue14307.pdf", getSelector("30R")); pages.map(async ([, page]) => { page.on("dialog", async dialog => { @@ -1058,7 +1059,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1094,7 +1095,7 @@ describe("Interaction", () => { describe("in issue14307.pdf (3)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue14307.pdf", getSelector("30R")); pages.map(async ([, page]) => { page.on("dialog", async dialog => { @@ -1103,7 +1104,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1139,7 +1140,7 @@ describe("Interaction", () => { describe("in issue14862.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue14862.pdf", getSelector("27R")); pages.map(async ([, page]) => { page.on("dialog", async dialog => { @@ -1148,7 +1149,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1234,7 +1235,7 @@ describe("Interaction", () => { describe("in issue14705.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue14705.pdf", getSelector("29R")); pages.map(async ([, page]) => { page.on("dialog", async dialog => { @@ -1243,7 +1244,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1278,11 +1279,11 @@ describe("Interaction", () => { describe("in bug1766987.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1766987.pdf", getSelector("75R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1310,11 +1311,11 @@ describe("Interaction", () => { describe("in issue15053.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue15053.pdf", getSelector("44R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1363,11 +1364,11 @@ describe("Interaction", () => { describe("in bug1675139.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1675139.pdf", getSelector("48R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1409,11 +1410,11 @@ describe("Interaction", () => { describe("in issue15092.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue15092.pdf", getSelector("39R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1444,11 +1445,11 @@ describe("Interaction", () => { describe("in bug1782564.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1782564.pdf", getSelector("7R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1489,11 +1490,11 @@ describe("Interaction", () => { describe("in bug1802888.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1802888.pdf", getSelector("30R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1519,11 +1520,11 @@ describe("Interaction", () => { describe("in issue15753.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue15753.pdf", getSelector("27R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1564,11 +1565,11 @@ describe("Interaction", () => { describe("in issue15815.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue15815.pdf", getSelector("24R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1611,11 +1612,11 @@ describe("Interaction", () => { describe("in issue15818.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue15818.pdf", getSelector("27R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1658,7 +1659,7 @@ describe("Interaction", () => { describe("in autoprint.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { // Autoprinting is triggered by the `Open` event, which is one of the // first events to be dispatched to the sandbox, even before scripting // is reported to be ready. It's therefore important that `loadAndWait` @@ -1687,7 +1688,7 @@ describe("Interaction", () => { }); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1709,11 +1710,11 @@ describe("Interaction", () => { describe("in bug1811694.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1811694.pdf", getSelector("25R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1741,11 +1742,11 @@ describe("Interaction", () => { describe("in bug1811510.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1811510.pdf", getSelector("22R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1781,11 +1782,11 @@ describe("Interaction", () => { describe("in issue16067.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue16067.pdf", getSelector("6R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1816,11 +1817,11 @@ describe("Interaction", () => { describe("in bug1825002.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1825002.pdf", getSelector("23R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1870,11 +1871,11 @@ describe("Interaction", () => { describe("in bug1844576.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1844576.pdf", getSelector("9R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1925,14 +1926,14 @@ describe("Interaction", () => { describe("in annotation_hidden_noview.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait( "annotation_hidden_noview.pdf", getSelector("11R") ); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1984,11 +1985,11 @@ describe("Interaction", () => { describe("in issue16863.pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue16863.pdf", getSelector("334R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2048,7 +2049,7 @@ describe("Interaction", () => { let pages; let otherPages; - beforeAll(async () => { + beforeEach(async () => { otherPages = await Promise.all( global.integrationSessions.map(async session => session.browser.newPage() @@ -2057,7 +2058,7 @@ describe("Interaction", () => { pages = await loadAndWait("evaljs.pdf", getSelector("55R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); await Promise.all(otherPages.map(page => page.close())); }); @@ -2091,11 +2092,11 @@ describe("Interaction", () => { describe("Textfield with a Blur callback", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1863910.pdf", getSelector("25R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2123,11 +2124,11 @@ describe("Interaction", () => { describe("Radio button without T value", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1860602.pdf", getSelector("22R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2180,11 +2181,11 @@ describe("Interaction", () => { describe("Textfield with a number and some decimals", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue17540.pdf", getSelector("15R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2213,11 +2214,11 @@ describe("Interaction", () => { describe("Textfield with a zip code starting with 0", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1889122.pdf", getSelector("24R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2241,11 +2242,11 @@ describe("Interaction", () => { describe("Value of event.change when a choice list is modified", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue17998.pdf", getSelector("7R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2275,11 +2276,11 @@ describe("Interaction", () => { describe("PageOpen and PageClose actions in fields", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue18305.pdf", getSelector("7R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2320,11 +2321,11 @@ describe("Interaction", () => { describe("Compute product of different fields", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue18536.pdf", getSelector("34R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2357,11 +2358,11 @@ describe("Interaction", () => { describe("Calculate field value even if one callback throws", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue18561.pdf", getSelector("24R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2385,11 +2386,11 @@ describe("Interaction", () => { describe("Correctly format numbers", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1918115.pdf", getSelector("33R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2413,11 +2414,11 @@ describe("Interaction", () => { describe("Change radio property", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1922766.pdf", "[data-annotation-id='44R']"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2456,11 +2457,11 @@ describe("Interaction", () => { describe("Date creation must be timezone consistent", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("bug1934157.pdf", "[data-annotation-id='24R']"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -2494,11 +2495,11 @@ describe("Interaction", () => { describe("Skip throwing actions (issue 19505)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue19505.pdf", "[data-annotation-id='24R']"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); });