mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-04-09 23:04:02 +02:00
Merge pull request #20864 from calixteman/fix_intermittent_reorg
Try to fix few intermittents bug in reorganize_pages_spec integration tests
This commit is contained in:
commit
18a2f60469
@ -260,7 +260,10 @@ describe("Reorganize Pages View", () => {
|
||||
await waitForThumbnailVisible(page, 1);
|
||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||
const rect4 = await getRect(page, getThumbnailSelector(4));
|
||||
await page.click(`.thumbnail:has(${getThumbnailSelector(1)}) input`);
|
||||
await waitAndClick(
|
||||
page,
|
||||
`.thumbnail:has(${getThumbnailSelector(1)}) input`
|
||||
);
|
||||
|
||||
const handlePagesEdited = await waitForPagesEdited(page);
|
||||
await dragAndDrop(
|
||||
@ -288,10 +291,11 @@ describe("Reorganize Pages View", () => {
|
||||
const rect1 = await getRect(page, getThumbnailSelector(1));
|
||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||
await (await page.$(".thumbnail[page-number='14'")).scrollIntoView();
|
||||
await page.waitForSelector(getThumbnailSelector(14), {
|
||||
visible: true,
|
||||
});
|
||||
await page.click(`.thumbnail:has(${getThumbnailSelector(14)}) input`);
|
||||
|
||||
await waitAndClick(
|
||||
page,
|
||||
`.thumbnail:has(${getThumbnailSelector(14)}) input`
|
||||
);
|
||||
await (await page.$(".thumbnail[page-number='1'")).scrollIntoView();
|
||||
await page.waitForSelector(getThumbnailSelector(1), {
|
||||
visible: true,
|
||||
@ -323,7 +327,7 @@ describe("Reorganize Pages View", () => {
|
||||
const rect1 = await getRect(page, getThumbnailSelector(1));
|
||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||
|
||||
await page.click(getThumbnailSelector(2));
|
||||
await waitAndClick(page, getThumbnailSelector(2));
|
||||
await page.waitForSelector(
|
||||
`${getThumbnailSelector(2)}[aria-current="page"]`
|
||||
);
|
||||
@ -367,11 +371,8 @@ describe("Reorganize Pages View", () => {
|
||||
it("should check if the search is working after moving pages", async () => {
|
||||
await Promise.all(
|
||||
pages.map(async ([browserName, page]) => {
|
||||
await page.click("#viewFindButton");
|
||||
await page.waitForSelector(":has(> #findHighlightAll)", {
|
||||
visible: true,
|
||||
});
|
||||
await page.click(":has(> #findHighlightAll)");
|
||||
await waitAndClick(page, "#viewFindButton");
|
||||
await waitAndClick(page, ":has(> #findHighlightAll)");
|
||||
|
||||
await page.waitForSelector("#findInput", { visible: true });
|
||||
await page.type("#findInput", "1");
|
||||
@ -482,7 +483,7 @@ describe("Reorganize Pages View", () => {
|
||||
await waitForThumbnailVisible(page, 1);
|
||||
await movePages(page, [2], 10);
|
||||
await scrollIntoView(page, getAnnotationSelector("107R"));
|
||||
await page.click(getAnnotationSelector("107R"));
|
||||
await waitAndClick(page, getAnnotationSelector("107R"));
|
||||
const currentPage = await page.$eval(
|
||||
"#pageNumber",
|
||||
el => el.valueAsNumber
|
||||
@ -498,11 +499,11 @@ describe("Reorganize Pages View", () => {
|
||||
await waitForThumbnailVisible(page, 1);
|
||||
await movePages(page, [2, 4], 10);
|
||||
|
||||
await page.click("#viewsManagerSelectorButton");
|
||||
await page.click("#outlinesViewMenu");
|
||||
await waitAndClick(page, "#viewsManagerSelectorButton");
|
||||
await waitAndClick(page, "#outlinesViewMenu");
|
||||
await page.waitForSelector("#outlinesView", { visible: true });
|
||||
|
||||
await page.click("#outlinesView .treeItem:nth-child(2)");
|
||||
await waitAndClick(page, "#outlinesView .treeItem:nth-child(2)");
|
||||
|
||||
const currentPage = await page.$eval(
|
||||
"#pageNumber",
|
||||
@ -539,12 +540,8 @@ describe("Reorganize Pages View", () => {
|
||||
await Promise.all(
|
||||
pages.map(async ([browserName, page]) => {
|
||||
await page.waitForSelector("#outlinesView", { visible: true });
|
||||
await page.waitForSelector("#viewsManagerSelectorButton", {
|
||||
visible: true,
|
||||
});
|
||||
await page.click("#viewsManagerSelectorButton");
|
||||
await page.waitForSelector("#thumbnailsViewMenu", { visible: true });
|
||||
await page.click("#thumbnailsViewMenu");
|
||||
await waitAndClick(page, "#viewsManagerSelectorButton");
|
||||
await waitAndClick(page, "#thumbnailsViewMenu");
|
||||
|
||||
const thumbSelector =
|
||||
"#thumbnailsView .thumbnailImageContainer > img";
|
||||
@ -1702,8 +1699,9 @@ describe("Reorganize Pages View", () => {
|
||||
await page.waitForSelector("button.thumbnailPasteButton", {
|
||||
hidden: true,
|
||||
});
|
||||
const pasteButtons = await page.$$("button.thumbnailPasteButton");
|
||||
expect(pasteButtons.length).withContext(`In ${browserName}`).toBe(0);
|
||||
await page.waitForFunction(
|
||||
() => !document.querySelector("button.thumbnailPasteButton")
|
||||
);
|
||||
})
|
||||
);
|
||||
});
|
||||
@ -1751,7 +1749,7 @@ describe("Reorganize Pages View", () => {
|
||||
);
|
||||
});
|
||||
|
||||
await page.click("#viewsManagerStatusActionButton");
|
||||
await waitAndClick(page, "#viewsManagerStatusActionButton");
|
||||
await waitAndClick(page, "#viewsManagerStatusActionExport");
|
||||
const pagesData = await awaitPromise(handleExport);
|
||||
expect(pagesData)
|
||||
|
||||
@ -650,13 +650,50 @@ async function scrollIntoView(page, selector) {
|
||||
sel => [
|
||||
new Promise(resolve => {
|
||||
const container = document.getElementById("viewerContainer");
|
||||
if (container.scrollHeight <= container.clientHeight) {
|
||||
const element = document.querySelector(sel);
|
||||
if (!container || !element) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
container.addEventListener("scrollend", resolve, { once: true });
|
||||
const element = document.querySelector(sel);
|
||||
if (
|
||||
container.scrollHeight <= container.clientHeight &&
|
||||
container.scrollWidth <= container.clientWidth
|
||||
) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
const beforeTop = container.scrollTop;
|
||||
const beforeLeft = container.scrollLeft;
|
||||
let settled = false;
|
||||
let timeoutId = null;
|
||||
|
||||
const finish = () => {
|
||||
if (settled) {
|
||||
return;
|
||||
}
|
||||
settled = true;
|
||||
if (timeoutId !== null) {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
container.removeEventListener("scrollend", finish);
|
||||
resolve();
|
||||
};
|
||||
|
||||
container.addEventListener("scrollend", finish, { once: true });
|
||||
element.scrollIntoView({ behavior: "instant", block: "start" });
|
||||
|
||||
if (
|
||||
container.scrollTop === beforeTop &&
|
||||
container.scrollLeft === beforeLeft
|
||||
) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
// Some browsers occasionally miss `scrollend`, so keep a short
|
||||
// fallback to avoid hanging.
|
||||
timeoutId = setTimeout(finish, 250);
|
||||
}),
|
||||
],
|
||||
selector
|
||||
|
||||
@ -721,7 +721,9 @@ class PDFThumbnailViewer {
|
||||
const newPageNumber = currentPageNumber || 1;
|
||||
this.linkService.goToPage(newPageNumber);
|
||||
const thumbnailView = this._thumbnails[newPageNumber - 1];
|
||||
thumbnailView.imageContainer.focus();
|
||||
if (!this.container.contains(document.activeElement)) {
|
||||
thumbnailView.imageContainer.focus();
|
||||
}
|
||||
}, 0);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user