Merge pull request #19952 from timvandermeij/intermittent-viewer-origin
Fix intermittent failure in the "supports specifying a custom origin" viewer integration test
This commit is contained in:
commit
47ad820d95
@ -42,23 +42,40 @@ describe("PDF viewer", () => {
|
|||||||
await closePages(pages);
|
await closePages(pages);
|
||||||
});
|
});
|
||||||
|
|
||||||
async function getTextAt(page, pageNumber, coordX, coordY) {
|
async function waitForTextAfterZoom(page, originX, originY, scale, text) {
|
||||||
await page.waitForFunction(
|
const handlePromise = await createPromise(page, resolve => {
|
||||||
pageNum =>
|
const callback = e => {
|
||||||
!document.querySelector(
|
if (e.pageNumber === 2) {
|
||||||
`.page[data-page-number="${pageNum}"] > .textLayer`
|
window.PDFViewerApplication.eventBus.off(
|
||||||
).hidden,
|
"textlayerrendered",
|
||||||
{},
|
callback
|
||||||
pageNumber
|
);
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.PDFViewerApplication.eventBus.on("textlayerrendered", callback);
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.evaluate(
|
||||||
|
(scaleFactor, origin) => {
|
||||||
|
window.PDFViewerApplication.pdfViewer.updateScale({
|
||||||
|
drawingDelay: 0,
|
||||||
|
scaleFactor,
|
||||||
|
origin,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
scale,
|
||||||
|
[originX, originY]
|
||||||
);
|
);
|
||||||
return page.evaluate(
|
|
||||||
(x, y) => document.elementFromPoint(x, y)?.textContent,
|
await awaitPromise(handlePromise);
|
||||||
coordX,
|
|
||||||
coordY
|
await page.waitForFunction(
|
||||||
|
`document.elementFromPoint(${originX}, ${originY})?.textContent === "${text}"`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
it("supports specifiying a custom origin", async () => {
|
it("supports specifying a custom origin", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
// We use this text span of page 2 because:
|
// We use this text span of page 2 because:
|
||||||
@ -72,33 +89,8 @@ describe("PDF viewer", () => {
|
|||||||
const originX = rect.x + rect.width / 2;
|
const originX = rect.x + rect.width / 2;
|
||||||
const originY = rect.y + rect.height / 2;
|
const originY = rect.y + rect.height / 2;
|
||||||
|
|
||||||
await page.evaluate(
|
await waitForTextAfterZoom(page, originX, originY, 2, text);
|
||||||
origin => {
|
await waitForTextAfterZoom(page, originX, originY, 0.8, text);
|
||||||
window.PDFViewerApplication.pdfViewer.increaseScale({
|
|
||||||
scaleFactor: 2,
|
|
||||||
origin,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
[originX, originY]
|
|
||||||
);
|
|
||||||
const textAfterZoomIn = await getTextAt(page, 2, originX, originY);
|
|
||||||
expect(textAfterZoomIn)
|
|
||||||
.withContext(`In ${browserName}, zoom in`)
|
|
||||||
.toBe(text);
|
|
||||||
|
|
||||||
await page.evaluate(
|
|
||||||
origin => {
|
|
||||||
window.PDFViewerApplication.pdfViewer.decreaseScale({
|
|
||||||
scaleFactor: 0.8,
|
|
||||||
origin,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
[originX, originY]
|
|
||||||
);
|
|
||||||
const textAfterZoomOut = await getTextAt(page, 2, originX, originY);
|
|
||||||
expect(textAfterZoomOut)
|
|
||||||
.withContext(`In ${browserName}, zoom out`)
|
|
||||||
.toBe(text);
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user