Fix 'must load a SVG, delete it and undo' integration test

We wait for the canvas before trying to serialize the annotation in order to make sure the image has been loaded.
This commit is contained in:
Calixte Denizet 2024-11-18 21:25:43 +01:00
parent f4061190fa
commit eefaca07c3
2 changed files with 16 additions and 7 deletions

View File

@ -195,14 +195,14 @@ describe("Stamp Editor", () => {
); );
const editorSelector = getEditorSelector(0); const editorSelector = getEditorSelector(0);
await waitForImage(page, editorSelector); await waitForImage(page, editorSelector);
await waitForSerialized(page, 1); await waitForSerialized(page, 1);
await page.waitForSelector(`${editorSelector} button.delete`); await page.waitForSelector(`${editorSelector} button.delete`);
await page.click(`${editorSelector} button.delete`); await page.click(`${editorSelector} button.delete`);
await waitForSerialized(page, 0); await waitForSerialized(page, 0);
await kbUndo(page); await kbUndo(page);
await waitForImage(page, editorSelector);
await waitForSerialized(page, 1); await waitForSerialized(page, 1);
await waitForSelectedEditor(page, editorSelector); await waitForSelectedEditor(page, editorSelector);
@ -654,8 +654,8 @@ describe("Stamp Editor", () => {
await waitForSerialized(page, 0); await waitForSerialized(page, 0);
await kbUndo(page); await kbUndo(page);
await waitForImage(page, selector);
await waitForSerialized(page, 1); await waitForSerialized(page, 1);
await page.waitForSelector(`${selector} canvas`);
} }
}); });
}); });
@ -739,8 +739,8 @@ describe("Stamp Editor", () => {
} }
await kbUndo(page); await kbUndo(page);
await waitForImage(page, selector);
await waitForSerialized(page, 1); await waitForSerialized(page, 1);
await page.waitForSelector(`${selector} canvas`);
} }
}); });
}); });

View File

@ -327,9 +327,18 @@ async function waitForStorageEntries(page, nEntries) {
async function waitForSerialized(page, nEntries) { async function waitForSerialized(page, nEntries) {
return page.waitForFunction( return page.waitForFunction(
n => n => {
(window.PDFViewerApplication.pdfDocument.annotationStorage.serializable try {
.map?.size ?? 0) === n, return (
(window.PDFViewerApplication.pdfDocument.annotationStorage
.serializable.map?.size ?? 0) === n
);
} catch {
// When serializing a stamp annotation with a SVG, the transfer
// can fail because of the SVG, so we just retry.
return false;
}
},
{}, {},
nEntries nEntries
); );