Compare commits

..

No commits in common. "e8b4ed2fde6dd3ee8ac7bc74087e0e3e3d4a2131" and "f32254dbd429ef7a8e713e159e8c863a2a446f84" have entirely different histories.

View File

@ -87,11 +87,11 @@ describe("FreeText Editor", () => {
describe("FreeText", () => { describe("FreeText", () => {
let pages; let pages;
beforeEach(async () => { beforeAll(async () => {
pages = await loadAndWait("aboutstacks.pdf", ".annotationEditorLayer"); pages = await loadAndWait("aboutstacks.pdf", ".annotationEditorLayer");
}); });
afterEach(async () => { afterAll(async () => {
await closePages(pages); await closePages(pages);
}); });
@ -134,17 +134,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) {
await switchToFreeText(page);
const rect = await getRect(page, ".annotationEditorLayer");
const firstEditorSelector = getEditorSelector(0); const firstEditorSelector = getEditorSelector(0);
const data = "Hello PDF.js World !!";
await page.mouse.click(rect.x + 100, rect.y + 100);
await page.waitForSelector(firstEditorSelector, { visible: true });
await page.type(`${firstEditorSelector} .internal`, data);
await commit(page);
await waitForStorageEntries(page, 1);
await selectEditor(page, firstEditorSelector); await selectEditor(page, firstEditorSelector);
await copy(page); await copy(page);
await paste(page); await paste(page);
@ -178,35 +168,18 @@ describe("FreeText Editor", () => {
it("must clear all", async () => { it("must clear all", async () => {
await Promise.all( await Promise.all(
pages.map(async ([browserName, page]) => { pages.map(async ([browserName, page]) => {
await switchToFreeText(page);
const rect = await getRect(page, ".annotationEditorLayer");
for (const n of [0, 1, 2]) {
const editorSelector = getEditorSelector(n);
const data = "Hello PDF.js World !!";
await page.mouse.click(rect.x + 100 * n, rect.y + 100 * n);
await page.waitForSelector(editorSelector, { visible: true });
await page.type(`${editorSelector} .internal`, data);
await commit(page);
const hasEditor = await page.evaluate(
sel => !!document.querySelector(sel),
editorSelector
);
expect(hasEditor).withContext(`In ${browserName}`).toEqual(true);
}
await waitForStorageEntries(page, 3);
await clearAll(page); await clearAll(page);
await waitForStorageEntries(page, 0);
for (const n of [0, 1, 2]) { for (const n of [0, 1, 2]) {
const hasEditor = await page.evaluate( const hasEditor = await page.evaluate(
sel => !!document.querySelector(sel), sel => !!document.querySelector(sel),
getEditorSelector(n) getEditorSelector(n)
); );
expect(hasEditor).withContext(`In ${browserName}`).toEqual(false); expect(hasEditor).withContext(`In ${browserName}`).toEqual(false);
} }
await waitForStorageEntries(page, 0);
}) })
); );
}); });
@ -214,10 +187,8 @@ describe("FreeText Editor", () => {
it("must check that a paste has been undone", async () => { it("must check that a paste has been undone", async () => {
// Run sequentially to avoid clipboard issues. // Run sequentially to avoid clipboard issues.
for (const [, page] of pages) { for (const [, page] of pages) {
await switchToFreeText(page);
const rect = await getRect(page, ".annotationEditorLayer"); const rect = await getRect(page, ".annotationEditorLayer");
let editorSelector = getEditorSelector(0); let editorSelector = getEditorSelector(3);
const data = "Hello PDF.js World !!"; const data = "Hello PDF.js World !!";
await page.mouse.click(rect.x + 100, rect.y + 100); await page.mouse.click(rect.x + 100, rect.y + 100);
await page.waitForSelector(editorSelector, { visible: true }); await page.waitForSelector(editorSelector, { visible: true });
@ -227,7 +198,7 @@ describe("FreeText Editor", () => {
await selectEditor(page, editorSelector); await selectEditor(page, editorSelector);
await copy(page); await copy(page);
await paste(page); await paste(page);
editorSelector = getEditorSelector(1); editorSelector = getEditorSelector(4);
await page.waitForSelector(editorSelector, { visible: true }); await page.waitForSelector(editorSelector, { visible: true });
await kbUndo(page); await kbUndo(page);
@ -239,7 +210,7 @@ describe("FreeText Editor", () => {
for (let i = 0; i < 2; i++) { for (let i = 0; i < 2; i++) {
await paste(page); await paste(page);
await page.waitForSelector(getEditorSelector(2 + i)); await page.waitForSelector(getEditorSelector(5 + i));
} }
for (let i = 0; i < 2; i++) { for (let i = 0; i < 2; i++) {
@ -247,7 +218,7 @@ describe("FreeText Editor", () => {
await page.waitForFunction( await page.waitForFunction(
sel => !document.querySelector(sel), sel => !document.querySelector(sel),
{}, {},
getEditorSelector(3 - i) getEditorSelector(6 - i)
); );
} }
} }
@ -256,8 +227,6 @@ describe("FreeText Editor", () => {
it("must check that aria-owns is correct", async () => { it("must check that aria-owns is correct", async () => {
await Promise.all( await Promise.all(
pages.map(async ([browserName, page]) => { pages.map(async ([browserName, page]) => {
await switchToFreeText(page);
await page.$eval(".textLayer", el => { await page.$eval(".textLayer", el => {
for (const span of el.querySelectorAll( for (const span of el.querySelectorAll(
`span[role="presentation"]` `span[role="presentation"]`
@ -277,7 +246,7 @@ describe("FreeText Editor", () => {
expect(oldAriaOwns).withContext(`In ${browserName}`).toEqual(null); expect(oldAriaOwns).withContext(`In ${browserName}`).toEqual(null);
const editorSelector = getEditorSelector(0); const editorSelector = getEditorSelector(7);
const data = "Hello PDF.js World !!"; const data = "Hello PDF.js World !!";
await page.mouse.click( await page.mouse.click(
stacksRect.x + stacksRect.width + 1, stacksRect.x + stacksRect.width + 1,
@ -292,7 +261,7 @@ describe("FreeText Editor", () => {
return span?.getAttribute("aria-owns") || null; return span?.getAttribute("aria-owns") || null;
}); });
expect(ariaOwns.endsWith("_0-editor")) expect(ariaOwns.endsWith("_7-editor"))
.withContext(`In ${browserName}`) .withContext(`In ${browserName}`)
.toEqual(true); .toEqual(true);
await scrollIntoView(page, ".annotationEditorLayer"); await scrollIntoView(page, ".annotationEditorLayer");
@ -303,10 +272,11 @@ describe("FreeText Editor", () => {
it("must check that right click doesn't select", async () => { it("must check that right click doesn't select", async () => {
await Promise.all( await Promise.all(
pages.map(async ([browserName, page]) => { pages.map(async ([browserName, page]) => {
await switchToFreeText(page);
const rect = await getRect(page, ".annotationEditorLayer"); const rect = await getRect(page, ".annotationEditorLayer");
const editorSelector = getEditorSelector(0);
await clearAll(page);
const editorSelector = getEditorSelector(8);
const data = "Hello PDF.js World !!"; const data = "Hello PDF.js World !!";
await page.mouse.click(rect.x + 100, rect.y + 100); await page.mouse.click(rect.x + 100, rect.y + 100);
await page.waitForSelector(editorSelector, { visible: true }); await page.waitForSelector(editorSelector, { visible: true });
@ -315,7 +285,7 @@ describe("FreeText Editor", () => {
expect(await getEditors(page, "selected")) expect(await getEditors(page, "selected"))
.withContext(`In ${browserName}`) .withContext(`In ${browserName}`)
.toEqual([0]); .toEqual([8]);
await page.keyboard.press("Escape"); await page.keyboard.press("Escape");
await page.waitForFunction( await page.waitForFunction(
@ -325,7 +295,7 @@ describe("FreeText Editor", () => {
await selectEditor(page, editorSelector); await selectEditor(page, editorSelector);
expect(await getEditors(page, "selected")) expect(await getEditors(page, "selected"))
.withContext(`In ${browserName}`) .withContext(`In ${browserName}`)
.toEqual([0]); .toEqual([8]);
// Escape. // Escape.
await page.keyboard.press("Escape"); await page.keyboard.press("Escape");
@ -347,10 +317,11 @@ describe("FreeText Editor", () => {
it("must check that text change can be undone/redone", async () => { it("must check that text change can be undone/redone", 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) {
await switchToFreeText(page);
const rect = await getRect(page, ".annotationEditorLayer"); const rect = await getRect(page, ".annotationEditorLayer");
const editorSelector = getEditorSelector(0);
await clearAll(page);
const editorSelector = getEditorSelector(9);
await page.mouse.click(rect.x + 200, rect.y + 100); await page.mouse.click(rect.x + 200, rect.y + 100);
await page.waitForSelector(editorSelector, { visible: true }); await page.waitForSelector(editorSelector, { visible: true });