Merge pull request #19344 from timvandermeij/integration-tests-editor-helpers
Implement helper functions for (un)selecting an editor in the integration tests
This commit is contained in:
commit
ac57939648
@ -43,7 +43,9 @@ import {
|
|||||||
paste,
|
paste,
|
||||||
pasteFromClipboard,
|
pasteFromClipboard,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
selectEditor,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
|
unselectEditor,
|
||||||
waitForAnnotationEditorLayer,
|
waitForAnnotationEditorLayer,
|
||||||
waitForAnnotationModeChanged,
|
waitForAnnotationModeChanged,
|
||||||
waitForEditorMovedInDOM,
|
waitForEditorMovedInDOM,
|
||||||
@ -171,15 +173,7 @@ describe("FreeText Editor", () => {
|
|||||||
it("must copy/paste", async () => {
|
it("must copy/paste", async () => {
|
||||||
// Run sequentially to avoid clipboard issues.
|
// Run sequentially to avoid clipboard issues.
|
||||||
for (const [browserName, page] of pages) {
|
for (const [browserName, page] of pages) {
|
||||||
const editorRect = await getRect(page, getEditorSelector(0));
|
await selectEditor(page, getEditorSelector(0));
|
||||||
|
|
||||||
// Select the editor created previously.
|
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(0));
|
|
||||||
await copy(page);
|
await copy(page);
|
||||||
await paste(page);
|
await paste(page);
|
||||||
await page.waitForSelector(getEditorSelector(1), {
|
await page.waitForSelector(getEditorSelector(1), {
|
||||||
@ -243,14 +237,7 @@ describe("FreeText Editor", () => {
|
|||||||
await page.type(`${getEditorSelector(3)} .internal`, data);
|
await page.type(`${getEditorSelector(3)} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// And select it again.
|
await selectEditor(page, getEditorSelector(3));
|
||||||
const editorRect = await getRect(page, getEditorSelector(3));
|
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(3));
|
|
||||||
await copy(page);
|
await copy(page);
|
||||||
await paste(page);
|
await paste(page);
|
||||||
await page.waitForSelector(getEditorSelector(4), {
|
await page.waitForSelector(getEditorSelector(4), {
|
||||||
@ -350,14 +337,7 @@ describe("FreeText Editor", () => {
|
|||||||
() => !document.querySelector(".selectedEditor")
|
() => !document.querySelector(".selectedEditor")
|
||||||
);
|
);
|
||||||
|
|
||||||
const editorRect = await getRect(page, getEditorSelector(8));
|
await selectEditor(page, getEditorSelector(8));
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(8));
|
|
||||||
|
|
||||||
expect(await getEditors(page, "selected"))
|
expect(await getEditors(page, "selected"))
|
||||||
.withContext(`In ${browserName}`)
|
.withContext(`In ${browserName}`)
|
||||||
.toEqual([8]);
|
.toEqual([8]);
|
||||||
@ -397,16 +377,7 @@ describe("FreeText Editor", () => {
|
|||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
if (i < 4) {
|
if (i < 4) {
|
||||||
// And select it again.
|
await selectEditor(page, editorSelector, /* count = */ 2);
|
||||||
const editorRect = await getRect(page, editorSelector);
|
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(
|
|
||||||
`${editorSelector} .overlay:not(.enabled)`
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,13 +438,7 @@ describe("FreeText Editor", () => {
|
|||||||
expect(text).withContext(`In ${browserName}`).toEqual("A");
|
expect(text).withContext(`In ${browserName}`).toEqual("A");
|
||||||
|
|
||||||
// Add a new A.
|
// Add a new A.
|
||||||
const editorRect = await getRect(page, editorSelector);
|
await selectEditor(page, editorSelector, /* count = */ 2);
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(`${editorSelector} .overlay:not(.enabled)`);
|
|
||||||
await page.type(`${editorSelector} .internal`, "A");
|
await page.type(`${editorSelector} .internal`, "A");
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
@ -904,12 +869,9 @@ describe("FreeText Editor", () => {
|
|||||||
const serialized = await getSerialized(page);
|
const serialized = await getSerialized(page);
|
||||||
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
||||||
|
|
||||||
const editorSelector = getEditorSelector(0);
|
|
||||||
const editorRect = await getRect(page, editorSelector);
|
|
||||||
|
|
||||||
// Select the annotation we want to move.
|
// Select the annotation we want to move.
|
||||||
await page.mouse.click(editorRect.x + 2, editorRect.y + 2);
|
const editorSelector = getEditorSelector(0);
|
||||||
await waitForSelectedEditor(page, editorSelector);
|
await selectEditor(page, editorSelector);
|
||||||
|
|
||||||
await dragAndDrop(page, editorSelector, [[100, 100]]);
|
await dragAndDrop(page, editorSelector, [[100, 100]]);
|
||||||
await waitForSerialized(page, 1);
|
await waitForSerialized(page, 1);
|
||||||
@ -942,15 +904,7 @@ describe("FreeText Editor", () => {
|
|||||||
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
||||||
|
|
||||||
const editorRect = await getRect(page, getEditorSelector(0));
|
const editorRect = await getRect(page, getEditorSelector(0));
|
||||||
await page.mouse.click(
|
await selectEditor(page, getEditorSelector(0), /* count = */ 2);
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(
|
|
||||||
`${getEditorSelector(0)} .overlay:not(.enabled)`
|
|
||||||
);
|
|
||||||
|
|
||||||
await kbGoToEnd(page);
|
await kbGoToEnd(page);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
sel =>
|
sel =>
|
||||||
@ -1048,16 +1002,7 @@ describe("FreeText Editor", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const editorSelector = getEditorSelector(1);
|
const editorSelector = getEditorSelector(1);
|
||||||
const editorRect = await getRect(page, editorSelector);
|
await selectEditor(page, editorSelector, /* count = */ 2);
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(
|
|
||||||
`${editorSelector} .overlay:not(.enabled)`
|
|
||||||
);
|
|
||||||
|
|
||||||
await kbGoToEnd(page);
|
await kbGoToEnd(page);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
sel =>
|
sel =>
|
||||||
@ -1134,12 +1079,7 @@ describe("FreeText Editor", () => {
|
|||||||
let editorIds = await getEditors(page, "freeText");
|
let editorIds = await getEditors(page, "freeText");
|
||||||
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
||||||
|
|
||||||
const editorRect = await getRect(page, getEditorSelector(3));
|
await selectEditor(page, getEditorSelector(3));
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(3));
|
|
||||||
await page.keyboard.press("Backspace");
|
await page.keyboard.press("Backspace");
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
sel => !document.querySelector(sel),
|
sel => !document.querySelector(sel),
|
||||||
@ -1199,13 +1139,7 @@ describe("FreeText Editor", () => {
|
|||||||
const editorIds = await getEditors(page, "freeText");
|
const editorIds = await getEditors(page, "freeText");
|
||||||
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6);
|
||||||
|
|
||||||
const editorRect = await getRect(page, getEditorSelector(1));
|
await selectEditor(page, getEditorSelector(1));
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(1));
|
|
||||||
|
|
||||||
await copy(page);
|
await copy(page);
|
||||||
await paste(page);
|
await paste(page);
|
||||||
await page.waitForSelector(getEditorSelector(6), {
|
await page.waitForSelector(getEditorSelector(6), {
|
||||||
@ -1859,17 +1793,17 @@ describe("FreeText Editor", () => {
|
|||||||
const rect = await getRect(page, ".annotationEditorLayer");
|
const rect = await getRect(page, ".annotationEditorLayer");
|
||||||
|
|
||||||
const data = "Hello PDF.js World !!";
|
const data = "Hello PDF.js World !!";
|
||||||
const selectorEditor = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
await page.mouse.click(rect.x + 200, rect.y + 200);
|
await page.mouse.click(rect.x + 200, rect.y + 200);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
const [pageX, pageY] = await getFirstSerialized(page, x => x.rect);
|
const [pageX, pageY] = await getFirstSerialized(page, x => x.rect);
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 20, () =>
|
await moveEditor(page, editorSelector, 20, () =>
|
||||||
page.keyboard.press("ArrowRight")
|
page.keyboard.press("ArrowRight")
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1881,7 +1815,7 @@ describe("FreeText Editor", () => {
|
|||||||
.withContext(`In ${browserName}`)
|
.withContext(`In ${browserName}`)
|
||||||
.toEqual(Math.round(pageY));
|
.toEqual(Math.round(pageY));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 20, () =>
|
await moveEditor(page, editorSelector, 20, () =>
|
||||||
page.keyboard.press("ArrowDown")
|
page.keyboard.press("ArrowDown")
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1893,7 +1827,7 @@ describe("FreeText Editor", () => {
|
|||||||
.withContext(`In ${browserName}`)
|
.withContext(`In ${browserName}`)
|
||||||
.toEqual(Math.round(pageY - 20));
|
.toEqual(Math.round(pageY - 20));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveLeft(page));
|
||||||
|
|
||||||
[newX, newY] = await getFirstSerialized(page, x => x.rect);
|
[newX, newY] = await getFirstSerialized(page, x => x.rect);
|
||||||
expect(Math.round(newX))
|
expect(Math.round(newX))
|
||||||
@ -1903,7 +1837,7 @@ describe("FreeText Editor", () => {
|
|||||||
.withContext(`In ${browserName}`)
|
.withContext(`In ${browserName}`)
|
||||||
.toEqual(Math.round(pageY - 20));
|
.toEqual(Math.round(pageY - 20));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveUp(page));
|
||||||
|
|
||||||
[newX, newY] = await getFirstSerialized(page, x => x.rect);
|
[newX, newY] = await getFirstSerialized(page, x => x.rect);
|
||||||
expect(Math.round(newX))
|
expect(Math.round(newX))
|
||||||
@ -1928,8 +1862,8 @@ describe("FreeText Editor", () => {
|
|||||||
);
|
);
|
||||||
const pageWidth = page2X - page1X;
|
const pageWidth = page2X - page1X;
|
||||||
|
|
||||||
const selectorEditor = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
await moveEditor(page, selectorEditor, 5, () =>
|
await moveEditor(page, editorSelector, 5, () =>
|
||||||
page.keyboard.press("ArrowRight")
|
page.keyboard.press("ArrowRight")
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1953,40 +1887,40 @@ describe("FreeText Editor", () => {
|
|||||||
const rect = await getRect(page, ".annotationEditorLayer");
|
const rect = await getRect(page, ".annotationEditorLayer");
|
||||||
|
|
||||||
const data = "Hello PDF.js World !!";
|
const data = "Hello PDF.js World !!";
|
||||||
let selectorEditor = getEditorSelector(1);
|
let editorSelector = getEditorSelector(1);
|
||||||
await page.mouse.click(rect.x + 100, rect.y + 100);
|
await page.mouse.click(rect.x + 100, rect.y + 100);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
const [pageX, pageY] = await getFirstSerialized(page, x => x.rect);
|
const [pageX, pageY] = await getFirstSerialized(page, x => x.rect);
|
||||||
|
|
||||||
await clearAll(page);
|
await clearAll(page);
|
||||||
selectorEditor = getEditorSelector(2);
|
editorSelector = getEditorSelector(2);
|
||||||
await page.mouse.click(rect.x + 100, rect.y + 100);
|
await page.mouse.click(rect.x + 100, rect.y + 100);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 20, () =>
|
await moveEditor(page, editorSelector, 20, () =>
|
||||||
page.keyboard.press("ArrowRight")
|
page.keyboard.press("ArrowRight")
|
||||||
);
|
);
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveDown(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveDown(page));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 20, () =>
|
await moveEditor(page, editorSelector, 20, () =>
|
||||||
page.keyboard.press("ArrowLeft")
|
page.keyboard.press("ArrowLeft")
|
||||||
);
|
);
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveUp(page));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveRight(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveRight(page));
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page));
|
await moveEditor(page, editorSelector, 2, () => kbBigMoveLeft(page));
|
||||||
|
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
const [newX, newY] = await getFirstSerialized(page, x => x.rect);
|
const [newX, newY] = await getFirstSerialized(page, x => x.rect);
|
||||||
@ -2106,12 +2040,7 @@ describe("FreeText Editor", () => {
|
|||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Select the second editor.
|
// Select the second editor.
|
||||||
rect = await getRect(page, getEditorSelector(1));
|
await selectEditor(page, getEditorSelector(1));
|
||||||
await page.mouse.click(
|
|
||||||
rect.x + 0.5 * rect.width,
|
|
||||||
rect.y + 0.5 * rect.height
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(1));
|
|
||||||
|
|
||||||
const pos = n =>
|
const pos = n =>
|
||||||
page.evaluate(sel => {
|
page.evaluate(sel => {
|
||||||
@ -2130,9 +2059,9 @@ describe("FreeText Editor", () => {
|
|||||||
.toEqual(1);
|
.toEqual(1);
|
||||||
|
|
||||||
const { y: y0, height } = await getRect(page, getEditorSelector(0));
|
const { y: y0, height } = await getRect(page, getEditorSelector(0));
|
||||||
const selectorEditor = getEditorSelector(1);
|
const editorSelector = getEditorSelector(1);
|
||||||
while ((await getRect(page, selectorEditor)).y > y0 - height) {
|
while ((await getRect(page, editorSelector)).y > y0 - height) {
|
||||||
await moveEditor(page, selectorEditor, 1, () => kbBigMoveUp(page));
|
await moveEditor(page, editorSelector, 1, () => kbBigMoveUp(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
// The editor must be moved in the DOM and potentially the focus
|
// The editor must be moved in the DOM and potentially the focus
|
||||||
@ -2287,26 +2216,20 @@ describe("FreeText Editor", () => {
|
|||||||
|
|
||||||
const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`;
|
const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`;
|
||||||
let rect = await getRect(page, page1Selector);
|
let rect = await getRect(page, page1Selector);
|
||||||
const selectorEditor = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
await page.mouse.click(rect.x + 10, rect.y + 10);
|
await page.mouse.click(rect.x + 10, rect.y + 10);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
await page.type(`${selectorEditor} .internal`, "Hello");
|
await page.type(`${editorSelector} .internal`, "Hello");
|
||||||
await cancelFocusIn(page, selectorEditor);
|
await cancelFocusIn(page, editorSelector);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Unselect.
|
// Unselect.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, selectorEditor);
|
|
||||||
|
|
||||||
const editorRect = await getRect(page, selectorEditor);
|
|
||||||
|
|
||||||
// Select the editor created previously.
|
// Select the editor created previously.
|
||||||
await page.mouse.click(
|
await selectEditor(page, editorSelector);
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
// Go to the last page.
|
// Go to the last page.
|
||||||
await scrollIntoView(page, `.page[data-page-number = "14"]`);
|
await scrollIntoView(page, `.page[data-page-number = "14"]`);
|
||||||
@ -2339,15 +2262,7 @@ describe("FreeText Editor", () => {
|
|||||||
await page.waitForSelector(getEditorSelector(0), {
|
await page.waitForSelector(getEditorSelector(0), {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
await selectEditor(page, getEditorSelector(0));
|
||||||
rect = await getRect(page, getEditorSelector(0));
|
|
||||||
await page.mouse.click(
|
|
||||||
rect.x + rect.width / 2,
|
|
||||||
rect.y + rect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(0));
|
|
||||||
|
|
||||||
const content = await page.$eval(getEditorSelector(0), el =>
|
const content = await page.$eval(getEditorSelector(0), el =>
|
||||||
el.innerText.trimEnd()
|
el.innerText.trimEnd()
|
||||||
);
|
);
|
||||||
@ -2375,26 +2290,20 @@ describe("FreeText Editor", () => {
|
|||||||
|
|
||||||
const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`;
|
const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`;
|
||||||
const rect = await getRect(page, page1Selector);
|
const rect = await getRect(page, page1Selector);
|
||||||
const selectorEditor = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
await page.mouse.click(rect.x + 10, rect.y + 10);
|
await page.mouse.click(rect.x + 10, rect.y + 10);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
await page.type(`${selectorEditor} .internal`, "Hello");
|
await page.type(`${editorSelector} .internal`, "Hello");
|
||||||
await cancelFocusIn(page, selectorEditor);
|
await cancelFocusIn(page, editorSelector);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Unselect.
|
// Unselect.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, selectorEditor);
|
|
||||||
|
|
||||||
const editorRect = await getRect(page, selectorEditor);
|
|
||||||
|
|
||||||
// Select the editor created previously.
|
// Select the editor created previously.
|
||||||
await page.mouse.click(
|
await selectEditor(page, editorSelector);
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
|
|
||||||
// Go to the last page.
|
// Go to the last page.
|
||||||
await scrollIntoView(page, `.page[data-page-number = "14"]`);
|
await scrollIntoView(page, `.page[data-page-number = "14"]`);
|
||||||
@ -2538,18 +2447,18 @@ describe("FreeText Editor", () => {
|
|||||||
await page.focus("#editorFreeTextButton");
|
await page.focus("#editorFreeTextButton");
|
||||||
await page.keyboard.press("Enter");
|
await page.keyboard.press("Enter");
|
||||||
|
|
||||||
let selectorEditor = getEditorSelector(0);
|
let editorSelector = getEditorSelector(0);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 5, () => kbBigMoveUp(page));
|
await moveEditor(page, editorSelector, 5, () => kbBigMoveUp(page));
|
||||||
|
|
||||||
const data = "Hello PDF.js World !!";
|
const data = "Hello PDF.js World !!";
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
let content = await page.$eval(selectorEditor, el =>
|
let content = await page.$eval(editorSelector, el =>
|
||||||
el.innerText.trimEnd()
|
el.innerText.trimEnd()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -2560,19 +2469,18 @@ describe("FreeText Editor", () => {
|
|||||||
|
|
||||||
await page.focus("#editorFreeTextButton");
|
await page.focus("#editorFreeTextButton");
|
||||||
await page.keyboard.press(" ");
|
await page.keyboard.press(" ");
|
||||||
selectorEditor = getEditorSelector(1);
|
editorSelector = getEditorSelector(1);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 5, () => kbBigMoveDown(page));
|
await moveEditor(page, editorSelector, 5, () => kbBigMoveDown(page));
|
||||||
|
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Unselect.
|
// Unselect.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, selectorEditor);
|
|
||||||
|
|
||||||
content = await page.$eval(getEditorSelector(1), el =>
|
content = await page.$eval(getEditorSelector(1), el =>
|
||||||
el.innerText.trimEnd()
|
el.innerText.trimEnd()
|
||||||
@ -2587,20 +2495,19 @@ describe("FreeText Editor", () => {
|
|||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
await page.keyboard.press("Enter");
|
await page.keyboard.press("Enter");
|
||||||
let selectorEditor = getEditorSelector(2);
|
let editorSelector = getEditorSelector(2);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 10, () => kbBigMoveLeft(page));
|
await moveEditor(page, editorSelector, 10, () => kbBigMoveLeft(page));
|
||||||
|
|
||||||
const data = "Hello PDF.js World !!";
|
const data = "Hello PDF.js World !!";
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Unselect.
|
// Unselect.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, selectorEditor);
|
|
||||||
|
|
||||||
let content = await page.$eval(getEditorSelector(2), el =>
|
let content = await page.$eval(getEditorSelector(2), el =>
|
||||||
el.innerText.trimEnd()
|
el.innerText.trimEnd()
|
||||||
@ -2609,23 +2516,22 @@ describe("FreeText Editor", () => {
|
|||||||
expect(content).withContext(`In ${browserName}`).toEqual(data);
|
expect(content).withContext(`In ${browserName}`).toEqual(data);
|
||||||
|
|
||||||
await page.keyboard.press(" ");
|
await page.keyboard.press(" ");
|
||||||
selectorEditor = getEditorSelector(3);
|
editorSelector = getEditorSelector(3);
|
||||||
await page.waitForSelector(selectorEditor, {
|
await page.waitForSelector(editorSelector, {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
await moveEditor(page, selectorEditor, 10, () =>
|
await moveEditor(page, editorSelector, 10, () =>
|
||||||
kbBigMoveRight(page)
|
kbBigMoveRight(page)
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.type(`${selectorEditor} .internal`, data);
|
await page.type(`${editorSelector} .internal`, data);
|
||||||
await commit(page);
|
await commit(page);
|
||||||
|
|
||||||
// Unselect.
|
// Unselect.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, selectorEditor);
|
|
||||||
|
|
||||||
content = await page.$eval(selectorEditor, el =>
|
content = await page.$eval(editorSelector, el =>
|
||||||
el.innerText.trimEnd()
|
el.innerText.trimEnd()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -2769,12 +2675,7 @@ describe("FreeText Editor", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Select the editor created previously.
|
// Select the editor created previously.
|
||||||
const editorRect = await getRect(page, getEditorSelector(0));
|
await selectEditor(page, getEditorSelector(0));
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, getEditorSelector(0));
|
|
||||||
|
|
||||||
await selectAll(page);
|
await selectAll(page);
|
||||||
|
|
||||||
@ -3137,13 +3038,7 @@ describe("FreeText Editor", () => {
|
|||||||
const getText = edSelector =>
|
const getText = edSelector =>
|
||||||
page.$eval(`${edSelector} .internal`, el => el.innerText.trimEnd());
|
page.$eval(`${edSelector} .internal`, el => el.innerText.trimEnd());
|
||||||
|
|
||||||
const editorRect = await getRect(page, editorSelector);
|
await selectEditor(page, editorSelector, /* count = */ 2);
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(`${editorSelector} .overlay:not(.enabled)`);
|
|
||||||
|
|
||||||
const select = position =>
|
const select = position =>
|
||||||
page.evaluate(
|
page.evaluate(
|
||||||
@ -3254,15 +3149,7 @@ describe("FreeText Editor", () => {
|
|||||||
|
|
||||||
const editorSelector = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
const editorRect = await getRect(page, editorSelector);
|
const editorRect = await getRect(page, editorSelector);
|
||||||
await page.mouse.click(
|
await selectEditor(page, editorSelector, /* count = */ 2);
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2,
|
|
||||||
{ count: 2 }
|
|
||||||
);
|
|
||||||
await page.waitForSelector(
|
|
||||||
`${editorSelector} .overlay:not(.enabled)`
|
|
||||||
);
|
|
||||||
|
|
||||||
await kbGoToEnd(page);
|
await kbGoToEnd(page);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
sel =>
|
sel =>
|
||||||
|
|||||||
@ -33,12 +33,12 @@ import {
|
|||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
setCaretAt,
|
setCaretAt,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
|
unselectEditor,
|
||||||
waitAndClick,
|
waitAndClick,
|
||||||
waitForAnnotationModeChanged,
|
waitForAnnotationModeChanged,
|
||||||
waitForSelectedEditor,
|
waitForSelectedEditor,
|
||||||
waitForSerialized,
|
waitForSerialized,
|
||||||
waitForTimeout,
|
waitForTimeout,
|
||||||
waitForUnselectedEditor,
|
|
||||||
} from "./test_utils.mjs";
|
} from "./test_utils.mjs";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
@ -1044,8 +1044,7 @@ describe("Highlight Editor", () => {
|
|||||||
const y = rect.y + rect.height / 2;
|
const y = rect.y + rect.height / 2;
|
||||||
await page.mouse.click(x, y, { count: 2, delay: 100 });
|
await page.mouse.click(x, y, { count: 2, delay: 100 });
|
||||||
await page.waitForSelector(`${getEditorSelector(0)}`);
|
await page.waitForSelector(`${getEditorSelector(0)}`);
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, getEditorSelector(0));
|
||||||
await waitForUnselectedEditor(page, getEditorSelector(0));
|
|
||||||
|
|
||||||
await setCaretAt(
|
await setCaretAt(
|
||||||
page,
|
page,
|
||||||
@ -1795,8 +1794,7 @@ describe("Highlight Editor", () => {
|
|||||||
await page.mouse.click(x, y, { count: 2, delay: 100 });
|
await page.mouse.click(x, y, { count: 2, delay: 100 });
|
||||||
await page.waitForSelector(editorSelector);
|
await page.waitForSelector(editorSelector);
|
||||||
await waitForSerialized(page, 1);
|
await waitForSerialized(page, 1);
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, editorSelector);
|
|
||||||
|
|
||||||
const clickHandle = await waitForPointerUp(page);
|
const clickHandle = await waitForPointerUp(page);
|
||||||
y = rect.y - rect.height;
|
y = rect.y - rect.height;
|
||||||
@ -1866,8 +1864,7 @@ describe("Highlight Editor", () => {
|
|||||||
await page.mouse.click(x, y, { count: 3, delay: 100 });
|
await page.mouse.click(x, y, { count: 3, delay: 100 });
|
||||||
await page.waitForSelector(editorSelector);
|
await page.waitForSelector(editorSelector);
|
||||||
await waitForSerialized(page, 1);
|
await waitForSerialized(page, 1);
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, editorSelector);
|
|
||||||
|
|
||||||
const clickHandle = await waitForPointerUp(page);
|
const clickHandle = await waitForPointerUp(page);
|
||||||
y = rect.y - 3 * rect.height;
|
y = rect.y - 3 * rect.height;
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import {
|
|||||||
kbUndo,
|
kbUndo,
|
||||||
loadAndWait,
|
loadAndWait,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
selectEditor,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
waitForAnnotationModeChanged,
|
waitForAnnotationModeChanged,
|
||||||
waitForNoElement,
|
waitForNoElement,
|
||||||
@ -719,11 +720,7 @@ describe("Ink Editor", () => {
|
|||||||
|
|
||||||
const pdfjsA = getEditorSelector(0);
|
const pdfjsA = getEditorSelector(0);
|
||||||
const editorRect = await getRect(page, pdfjsA);
|
const editorRect = await getRect(page, pdfjsA);
|
||||||
await page.mouse.click(
|
await selectEditor(page, pdfjsA);
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, pdfjsA);
|
|
||||||
|
|
||||||
const red = "#ff0000";
|
const red = "#ff0000";
|
||||||
page.evaluate(value => {
|
page.evaluate(value => {
|
||||||
@ -815,11 +812,8 @@ describe("Ink Editor", () => {
|
|||||||
const serialized = await getSerialized(page);
|
const serialized = await getSerialized(page);
|
||||||
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
||||||
|
|
||||||
const editorRect = await getRect(page, edgeB);
|
|
||||||
|
|
||||||
// Select the annotation we want to move.
|
// Select the annotation we want to move.
|
||||||
await page.mouse.click(editorRect.x + 2, editorRect.y + 2);
|
await selectEditor(page, edgeB);
|
||||||
await waitForSelectedEditor(page, edgeB);
|
|
||||||
|
|
||||||
await dragAndDrop(page, edgeB, [[100, 100]]);
|
await dragAndDrop(page, edgeB, [[100, 100]]);
|
||||||
await waitForSerialized(page, 1);
|
await waitForSerialized(page, 1);
|
||||||
@ -1067,12 +1061,7 @@ describe("Ink Editor", () => {
|
|||||||
await page.waitForSelector("#editorUndoBar", { hidden: true });
|
await page.waitForSelector("#editorUndoBar", { hidden: true });
|
||||||
|
|
||||||
editorSelector = getEditorSelector(0);
|
editorSelector = getEditorSelector(0);
|
||||||
const editorRect = await getRect(page, editorSelector);
|
await selectEditor(page, editorSelector);
|
||||||
await page.mouse.click(
|
|
||||||
editorRect.x + editorRect.width / 2,
|
|
||||||
editorRect.y + editorRect.height / 2
|
|
||||||
);
|
|
||||||
await waitForSelectedEditor(page, editorSelector);
|
|
||||||
|
|
||||||
await dragAndDrop(page, editorSelector, [[30, 30]], /* steps = */ 10);
|
await dragAndDrop(page, editorSelector, [[30, 30]], /* steps = */ 10);
|
||||||
const finalRect = await getRect(page, `${pageOneSelector} svg`);
|
const finalRect = await getRect(page, `${pageOneSelector} svg`);
|
||||||
|
|||||||
@ -38,8 +38,10 @@ import {
|
|||||||
paste,
|
paste,
|
||||||
pasteFromClipboard,
|
pasteFromClipboard,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
selectEditor,
|
||||||
serializeBitmapDimensions,
|
serializeBitmapDimensions,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
|
unselectEditor,
|
||||||
waitForAnnotationEditorLayer,
|
waitForAnnotationEditorLayer,
|
||||||
waitForAnnotationModeChanged,
|
waitForAnnotationModeChanged,
|
||||||
waitForEntryInStorage,
|
waitForEntryInStorage,
|
||||||
@ -47,7 +49,6 @@ import {
|
|||||||
waitForSerialized,
|
waitForSerialized,
|
||||||
waitForStorageEntries,
|
waitForStorageEntries,
|
||||||
waitForTimeout,
|
waitForTimeout,
|
||||||
waitForUnselectedEditor,
|
|
||||||
} from "./test_utils.mjs";
|
} from "./test_utils.mjs";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
@ -524,9 +525,7 @@ describe("Stamp Editor", () => {
|
|||||||
await copyImage(page, "../images/firefox_logo.png", 0);
|
await copyImage(page, "../images/firefox_logo.png", 0);
|
||||||
|
|
||||||
const editorSelector = getEditorSelector(0);
|
const editorSelector = getEditorSelector(0);
|
||||||
|
await selectEditor(page, editorSelector);
|
||||||
await page.click(editorSelector);
|
|
||||||
await waitForSelectedEditor(page, editorSelector);
|
|
||||||
|
|
||||||
await page.waitForSelector(
|
await page.waitForSelector(
|
||||||
`${editorSelector} .resizer.topLeft[tabindex="-1"]`
|
`${editorSelector} .resizer.topLeft[tabindex="-1"]`
|
||||||
@ -1057,8 +1056,7 @@ describe("Stamp Editor", () => {
|
|||||||
.toEqual("Review alt text");
|
.toEqual("Review alt text");
|
||||||
|
|
||||||
// Unselect and select the editor and check that the badge is visible.
|
// Unselect and select the editor and check that the badge is visible.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, editorSelector);
|
|
||||||
await page.waitForSelector(".editToolbar", { visible: false });
|
await page.waitForSelector(".editToolbar", { visible: false });
|
||||||
await page.waitForSelector(".noAltTextBadge", { visible: true });
|
await page.waitForSelector(".noAltTextBadge", { visible: true });
|
||||||
|
|
||||||
@ -1107,8 +1105,7 @@ describe("Stamp Editor", () => {
|
|||||||
.toEqual("Missing alt text");
|
.toEqual("Missing alt text");
|
||||||
|
|
||||||
// Unselect and select the editor and check that the badge is visible.
|
// Unselect and select the editor and check that the badge is visible.
|
||||||
await page.keyboard.press("Escape");
|
await unselectEditor(page, editorSelector);
|
||||||
await waitForUnselectedEditor(page, editorSelector);
|
|
||||||
await page.waitForSelector(".editToolbar", { visible: false });
|
await page.waitForSelector(".editToolbar", { visible: false });
|
||||||
await page.waitForSelector(".noAltTextBadge", { visible: true });
|
await page.waitForSelector(".noAltTextBadge", { visible: true });
|
||||||
await page.evaluate(() => {
|
await page.evaluate(() => {
|
||||||
@ -1494,11 +1491,8 @@ describe("Stamp Editor", () => {
|
|||||||
const serialized = await getSerialized(page);
|
const serialized = await getSerialized(page);
|
||||||
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
expect(serialized).withContext(`In ${browserName}`).toEqual([]);
|
||||||
|
|
||||||
const editorRect = await getRect(page, editorSelector);
|
|
||||||
|
|
||||||
// Select the annotation we want to move.
|
// Select the annotation we want to move.
|
||||||
await page.mouse.click(editorRect.x + 2, editorRect.y + 2);
|
await selectEditor(page, editorSelector);
|
||||||
await waitForSelectedEditor(page, editorSelector);
|
|
||||||
|
|
||||||
await dragAndDrop(page, editorSelector, [[100, 100]]);
|
await dragAndDrop(page, editorSelector, [[100, 100]]);
|
||||||
await waitForSerialized(page, 1);
|
await waitForSerialized(page, 1);
|
||||||
|
|||||||
@ -347,10 +347,25 @@ async function applyFunctionToEditor(page, editorId, func) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function selectEditor(page, selector, count = 1) {
|
||||||
|
const editorRect = await getRect(page, selector);
|
||||||
|
await page.mouse.click(
|
||||||
|
editorRect.x + editorRect.width / 2,
|
||||||
|
editorRect.y + editorRect.height / 2,
|
||||||
|
{ count }
|
||||||
|
);
|
||||||
|
await waitForSelectedEditor(page, selector);
|
||||||
|
}
|
||||||
|
|
||||||
async function waitForSelectedEditor(page, selector) {
|
async function waitForSelectedEditor(page, selector) {
|
||||||
return page.waitForSelector(`${selector}.selectedEditor`);
|
return page.waitForSelector(`${selector}.selectedEditor`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function unselectEditor(page, selector) {
|
||||||
|
await page.keyboard.press("Escape");
|
||||||
|
await waitForUnselectedEditor(page, selector);
|
||||||
|
}
|
||||||
|
|
||||||
async function waitForUnselectedEditor(page, selector) {
|
async function waitForUnselectedEditor(page, selector) {
|
||||||
return page.waitForSelector(`${selector}:not(.selectedEditor)`);
|
return page.waitForSelector(`${selector}:not(.selectedEditor)`);
|
||||||
}
|
}
|
||||||
@ -868,9 +883,11 @@ export {
|
|||||||
paste,
|
paste,
|
||||||
pasteFromClipboard,
|
pasteFromClipboard,
|
||||||
scrollIntoView,
|
scrollIntoView,
|
||||||
|
selectEditor,
|
||||||
serializeBitmapDimensions,
|
serializeBitmapDimensions,
|
||||||
setCaretAt,
|
setCaretAt,
|
||||||
switchToEditor,
|
switchToEditor,
|
||||||
|
unselectEditor,
|
||||||
waitAndClick,
|
waitAndClick,
|
||||||
waitForAnnotationEditorLayer,
|
waitForAnnotationEditorLayer,
|
||||||
waitForAnnotationModeChanged,
|
waitForAnnotationModeChanged,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user