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:
Tim van der Meij 2025-01-19 18:39:04 +01:00 committed by GitHub
commit ac57939648
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 106 additions and 222 deletions

View File

@ -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 =>

View File

@ -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;

View File

@ -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`);

View File

@ -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);

View File

@ -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,