mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-06-28 02:55:49 +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);
|
await waitForThumbnailVisible(page, 1);
|
||||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||||
const rect4 = await getRect(page, getThumbnailSelector(4));
|
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);
|
const handlePagesEdited = await waitForPagesEdited(page);
|
||||||
await dragAndDrop(
|
await dragAndDrop(
|
||||||
@ -288,10 +291,11 @@ describe("Reorganize Pages View", () => {
|
|||||||
const rect1 = await getRect(page, getThumbnailSelector(1));
|
const rect1 = await getRect(page, getThumbnailSelector(1));
|
||||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||||
await (await page.$(".thumbnail[page-number='14'")).scrollIntoView();
|
await (await page.$(".thumbnail[page-number='14'")).scrollIntoView();
|
||||||
await page.waitForSelector(getThumbnailSelector(14), {
|
|
||||||
visible: true,
|
await waitAndClick(
|
||||||
});
|
page,
|
||||||
await page.click(`.thumbnail:has(${getThumbnailSelector(14)}) input`);
|
`.thumbnail:has(${getThumbnailSelector(14)}) input`
|
||||||
|
);
|
||||||
await (await page.$(".thumbnail[page-number='1'")).scrollIntoView();
|
await (await page.$(".thumbnail[page-number='1'")).scrollIntoView();
|
||||||
await page.waitForSelector(getThumbnailSelector(1), {
|
await page.waitForSelector(getThumbnailSelector(1), {
|
||||||
visible: true,
|
visible: true,
|
||||||
@ -323,7 +327,7 @@ describe("Reorganize Pages View", () => {
|
|||||||
const rect1 = await getRect(page, getThumbnailSelector(1));
|
const rect1 = await getRect(page, getThumbnailSelector(1));
|
||||||
const rect2 = await getRect(page, getThumbnailSelector(2));
|
const rect2 = await getRect(page, getThumbnailSelector(2));
|
||||||
|
|
||||||
await page.click(getThumbnailSelector(2));
|
await waitAndClick(page, getThumbnailSelector(2));
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`${getThumbnailSelector(2)}[aria-current="page"]`
|
`${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 () => {
|
it("should check if the search is working after moving pages", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.click("#viewFindButton");
|
await waitAndClick(page, "#viewFindButton");
|
||||||
await page.waitForSelector(":has(> #findHighlightAll)", {
|
await waitAndClick(page, ":has(> #findHighlightAll)");
|
||||||
visible: true,
|
|
||||||
});
|
|
||||||
await page.click(":has(> #findHighlightAll)");
|
|
||||||
|
|
||||||
await page.waitForSelector("#findInput", { visible: true });
|
await page.waitForSelector("#findInput", { visible: true });
|
||||||
await page.type("#findInput", "1");
|
await page.type("#findInput", "1");
|
||||||
@ -482,7 +483,7 @@ describe("Reorganize Pages View", () => {
|
|||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
await movePages(page, [2], 10);
|
await movePages(page, [2], 10);
|
||||||
await scrollIntoView(page, getAnnotationSelector("107R"));
|
await scrollIntoView(page, getAnnotationSelector("107R"));
|
||||||
await page.click(getAnnotationSelector("107R"));
|
await waitAndClick(page, getAnnotationSelector("107R"));
|
||||||
const currentPage = await page.$eval(
|
const currentPage = await page.$eval(
|
||||||
"#pageNumber",
|
"#pageNumber",
|
||||||
el => el.valueAsNumber
|
el => el.valueAsNumber
|
||||||
@ -498,11 +499,11 @@ describe("Reorganize Pages View", () => {
|
|||||||
await waitForThumbnailVisible(page, 1);
|
await waitForThumbnailVisible(page, 1);
|
||||||
await movePages(page, [2, 4], 10);
|
await movePages(page, [2, 4], 10);
|
||||||
|
|
||||||
await page.click("#viewsManagerSelectorButton");
|
await waitAndClick(page, "#viewsManagerSelectorButton");
|
||||||
await page.click("#outlinesViewMenu");
|
await waitAndClick(page, "#outlinesViewMenu");
|
||||||
await page.waitForSelector("#outlinesView", { visible: true });
|
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(
|
const currentPage = await page.$eval(
|
||||||
"#pageNumber",
|
"#pageNumber",
|
||||||
@ -539,12 +540,8 @@ describe("Reorganize Pages View", () => {
|
|||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.waitForSelector("#outlinesView", { visible: true });
|
await page.waitForSelector("#outlinesView", { visible: true });
|
||||||
await page.waitForSelector("#viewsManagerSelectorButton", {
|
await waitAndClick(page, "#viewsManagerSelectorButton");
|
||||||
visible: true,
|
await waitAndClick(page, "#thumbnailsViewMenu");
|
||||||
});
|
|
||||||
await page.click("#viewsManagerSelectorButton");
|
|
||||||
await page.waitForSelector("#thumbnailsViewMenu", { visible: true });
|
|
||||||
await page.click("#thumbnailsViewMenu");
|
|
||||||
|
|
||||||
const thumbSelector =
|
const thumbSelector =
|
||||||
"#thumbnailsView .thumbnailImageContainer > img";
|
"#thumbnailsView .thumbnailImageContainer > img";
|
||||||
@ -1702,8 +1699,9 @@ describe("Reorganize Pages View", () => {
|
|||||||
await page.waitForSelector("button.thumbnailPasteButton", {
|
await page.waitForSelector("button.thumbnailPasteButton", {
|
||||||
hidden: true,
|
hidden: true,
|
||||||
});
|
});
|
||||||
const pasteButtons = await page.$$("button.thumbnailPasteButton");
|
await page.waitForFunction(
|
||||||
expect(pasteButtons.length).withContext(`In ${browserName}`).toBe(0);
|
() => !document.querySelector("button.thumbnailPasteButton")
|
||||||
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1751,7 +1749,7 @@ describe("Reorganize Pages View", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
await page.click("#viewsManagerStatusActionButton");
|
await waitAndClick(page, "#viewsManagerStatusActionButton");
|
||||||
await waitAndClick(page, "#viewsManagerStatusActionExport");
|
await waitAndClick(page, "#viewsManagerStatusActionExport");
|
||||||
const pagesData = await awaitPromise(handleExport);
|
const pagesData = await awaitPromise(handleExport);
|
||||||
expect(pagesData)
|
expect(pagesData)
|
||||||
|
|||||||
@ -650,13 +650,50 @@ async function scrollIntoView(page, selector) {
|
|||||||
sel => [
|
sel => [
|
||||||
new Promise(resolve => {
|
new Promise(resolve => {
|
||||||
const container = document.getElementById("viewerContainer");
|
const container = document.getElementById("viewerContainer");
|
||||||
if (container.scrollHeight <= container.clientHeight) {
|
const element = document.querySelector(sel);
|
||||||
|
if (!container || !element) {
|
||||||
resolve();
|
resolve();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
container.addEventListener("scrollend", resolve, { once: true });
|
if (
|
||||||
const element = document.querySelector(sel);
|
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" });
|
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
|
selector
|
||||||
|
|||||||
@ -721,7 +721,9 @@ class PDFThumbnailViewer {
|
|||||||
const newPageNumber = currentPageNumber || 1;
|
const newPageNumber = currentPageNumber || 1;
|
||||||
this.linkService.goToPage(newPageNumber);
|
this.linkService.goToPage(newPageNumber);
|
||||||
const thumbnailView = this._thumbnails[newPageNumber - 1];
|
const thumbnailView = this._thumbnails[newPageNumber - 1];
|
||||||
thumbnailView.imageContainer.focus();
|
if (!this.container.contains(document.activeElement)) {
|
||||||
|
thumbnailView.imageContainer.focus();
|
||||||
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user