Merge pull request #18555 from timvandermeij/waitforevent

Use the `waitForEvent` helper function in the text layer integration tests
This commit is contained in:
Tim van der Meij 2024-08-05 18:23:56 +02:00 committed by GitHub
commit 7c896578c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -14,11 +14,11 @@
*/ */
import { import {
awaitPromise,
closePages, closePages,
closeSinglePage, closeSinglePage,
getSpanRectFromText, getSpanRectFromText,
loadAndWait, loadAndWait,
waitForEvent,
} from "./test_utils.mjs"; } from "./test_utils.mjs";
import { startBrowser } from "../test.mjs"; import { startBrowser } from "../test.mjs";
@ -228,34 +228,6 @@ describe("Text layer", () => {
) )
); );
function waitForClick(page, selector, timeout) {
return page.evaluateHandle(
(sel, timeoutDelay) => {
const element = document.querySelector(sel);
const timeoutSignal = AbortSignal.timeout(timeoutDelay);
return [
new Promise(resolve => {
timeoutSignal.addEventListener(
"abort",
() => resolve(false),
{ once: true }
);
element.addEventListener(
"click",
e => {
e.preventDefault();
resolve(true);
},
{ once: true, signal: timeoutSignal }
);
}),
];
},
selector,
timeout
);
}
it("allows selecting within the link", async () => { it("allows selecting within the link", async () => {
await Promise.all( await Promise.all(
pages.map(async ([browserName, page]) => { pages.map(async ([browserName, page]) => {
@ -315,16 +287,18 @@ describe("Text layer", () => {
await moveInSteps(page, positionStart, positionEnd, 20); await moveInSteps(page, positionStart, positionEnd, 20);
await page.mouse.up(); await page.mouse.up();
const clickPromiseHandle = await waitForClick( await waitForEvent({
page, page,
"#pdfjs_internal_id_8R", eventName: "click",
1000 action: () => page.mouse.click(positionEnd.x, positionEnd.y),
); selector: "#pdfjs_internal_id_8R",
validator: e => {
await page.mouse.click(positionEnd.x, positionEnd.y); // Don't navigate to the link destination: the `click` event
// firing is enough validation that the link can be clicked.
const clicked = await awaitPromise(clickPromiseHandle); e.preventDefault();
expect(clicked).toBeTrue(); return true;
},
});
}) })
); );
}); });
@ -348,16 +322,18 @@ describe("Text layer", () => {
await page.keyboard.press("ArrowRight"); await page.keyboard.press("ArrowRight");
await page.keyboard.up("Shift"); await page.keyboard.up("Shift");
const clickPromiseHandle = await waitForClick( await waitForEvent({
page, page,
"#pdfjs_internal_id_8R", eventName: "click",
1000 action: () => page.mouse.click(positionEnd.x, positionEnd.y),
); selector: "#pdfjs_internal_id_8R",
validator: e => {
await page.mouse.click(positionEnd.x, positionEnd.y); // Don't navigate to the link destination: the `click` event
// firing is enough validation that the link can be clicked.
const clicked = await awaitPromise(clickPromiseHandle); e.preventDefault();
expect(clicked).toBeTrue(); return true;
},
});
}) })
); );
}); });