Skip to content

Commit

Permalink
[Editor] Add a test for copy & paste a signature editor
Browse files Browse the repository at this point in the history
This patch fixes an issue when pasting: an exception was thrown when pasting.
And while writing the test and comparing the paths in the svg, I found a difference
which is fixed thanks to call to the right constructor (to take into account the inheritance)
in inkdraw.js
  • Loading branch information
calixteman committed Feb 21, 2025
1 parent 6713c23 commit 814d2bb
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/display/editor/drawers/inkdraw.js
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ class InkDrawOutline extends Outline {
});
}

const outlines = new InkDrawOutline();
const outlines = new this.prototype.constructor();
outlines.build(
newLines,
pageWidth,
Expand Down
2 changes: 1 addition & 1 deletion src/display/editor/signature.js
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ class SignatureEditor extends DrawingEditor {
static async deserialize(data, parent, uiManager) {
const editor = await super.deserialize(data, parent, uiManager);
editor.#isExtracted = data.areContours;
editor.description = data.accessibilityData?.alt || "";
editor.#description = data.accessibilityData?.alt || "";
editor.#signatureUUID = data.uuid;
return editor;
}
Expand Down
56 changes: 56 additions & 0 deletions test/integration/signature_editor_spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
import {
awaitPromise,
closePages,
copy,
getEditorSelector,
getRect,
loadAndWait,
paste,
switchToEditor,
waitForPointerUp,
waitForTimeout,
Expand Down Expand Up @@ -330,6 +332,60 @@ describe("Signature Editor", () => {
})
);
});

it("must check copy and paste", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
await switchToSignature(page);
await page.click("#editorSignatureAddSignature");

await page.waitForSelector("#addSignatureDialog", {
visible: true,
});
await page.type("#addSignatureTypeInput", "Hello");
await page.waitForSelector(`${addButtonSelector}:not(:disabled)`);
await page.click("#addSignatureAddButton");

const editorSelector = getEditorSelector(0);
await page.waitForSelector(editorSelector, { visible: true });
await page.waitForSelector(
`.canvasWrapper > svg use[href="#path_p1_0"]`,
{ visible: true }
);
const originalPath = await page.$eval("#path_p1_0", el =>
el.getAttribute("d")
);
const originalDescription = await page.$eval(
`${editorSelector} .altText.editDescription`,
el => el.title
);

await copy(page);
await paste(page);

const pastedEditorSelector = getEditorSelector(1);
await page.waitForSelector(pastedEditorSelector, { visible: true });
await page.waitForSelector(
`.canvasWrapper > svg use[href="#path_p1_1"]`,
{ visible: true }
);
const pastedPath = await page.$eval("#path_p1_1", el =>
el.getAttribute("d")
);
const pastedDescription = await page.$eval(
`${pastedEditorSelector} .altText.editDescription`,
el => el.title
);

expect(pastedPath)
.withContext(`In ${browserName}`)
.toEqual(originalPath);
expect(pastedDescription)
.withContext(`In ${browserName}`)
.toEqual(originalDescription);
})
);
});
});

describe("Bug 1948741", () => {
Expand Down

0 comments on commit 814d2bb

Please sign in to comment.