From de9b041b5e26f2b6e790229bf303aacbd0cc387c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 28 Feb 2025 15:21:52 +0100 Subject: [PATCH] Fix flakiness of CSS-only zoom test Update the test to wait for the `pagerendered`` event of a specific page (1), so that the `pagerendered`` event of other pages from a previously running render doesn't resolve the `waitForPageRendered` promise. --- test/integration/test_utils.mjs | 28 ++++++++++++++++++---------- test/integration/viewer_spec.mjs | 4 ++-- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index bd0af5f56..3d67f7fcd 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -568,16 +568,24 @@ function waitForAnnotationModeChanged(page) { }); } -function waitForPageRendered(page) { - return createPromise(page, resolve => { - const { eventBus } = window.PDFViewerApplication; - eventBus.on("pagerendered", function handler(e) { - if (!e.isDetailView) { - resolve(); - eventBus.off("pagerendered", handler); - } - }); - }); +function waitForPageRendered(page, pageNumber) { + return page.evaluateHandle( + number => [ + new Promise(resolve => { + const { eventBus } = window.PDFViewerApplication; + eventBus.on("pagerendered", function handler(e) { + if ( + !e.isDetailView && + (number === undefined || e.pageNumber === number) + ) { + resolve(); + eventBus.off("pagerendered", handler); + } + }); + }), + ], + pageNumber + ); } function waitForEditorMovedInDOM(page) { diff --git a/test/integration/viewer_spec.mjs b/test/integration/viewer_spec.mjs index e5988d272..8bc58fee8 100644 --- a/test/integration/viewer_spec.mjs +++ b/test/integration/viewer_spec.mjs @@ -328,7 +328,7 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 2; - const handle = await waitForPageRendered(page); + const handle = await waitForPageRendered(page, 1); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0, @@ -356,7 +356,7 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 4; - const handle = await waitForPageRendered(page); + const handle = await waitForPageRendered(page, 1); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0,