diff --git a/test/integration/copy_paste_spec.mjs b/test/integration/copy_paste_spec.mjs
index 6c18929d9..94d6be9a7 100644
--- a/test/integration/copy_paste_spec.mjs
+++ b/test/integration/copy_paste_spec.mjs
@@ -15,7 +15,7 @@
import {
closePages,
- kbCopy,
+ copy,
kbSelectAll,
loadAndWait,
mockClipboard,
@@ -55,10 +55,7 @@ describe("Copy and paste", () => {
);
await selectAll(page);
- const promise = waitForEvent(page, "copy");
- await kbCopy(page);
- await promise;
-
+ await copy(page);
await page.waitForFunction(
`document.querySelector('#viewerContainer').style.cursor !== "wait"`
);
@@ -159,10 +156,7 @@ describe("Copy and paste", () => {
);
await selectAll(page);
- const promise = waitForEvent(page, "copy");
- await kbCopy(page);
- await promise;
-
+ await copy(page);
await page.waitForFunction(
`document.querySelector('#viewerContainer').style.cursor !== "wait"`
);
diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs
index d7afe96ab..6427ac28c 100644
--- a/test/integration/freetext_editor_spec.mjs
+++ b/test/integration/freetext_editor_spec.mjs
@@ -16,6 +16,8 @@
import {
awaitPromise,
closePages,
+ copy,
+ copyToClipboard,
createPromise,
dragAndDropAnnotation,
firstPageOnTop,
@@ -30,21 +32,19 @@ import {
kbBigMoveLeft,
kbBigMoveRight,
kbBigMoveUp,
- kbCopy,
kbGoToBegin,
kbGoToEnd,
kbModifierDown,
kbModifierUp,
- kbPaste,
kbRedo,
kbSelectAll,
kbUndo,
loadAndWait,
+ paste,
pasteFromClipboard,
scrollIntoView,
switchToEditor,
waitForAnnotationEditorLayer,
- waitForEvent,
waitForSelectedEditor,
waitForSerialized,
waitForStorageEntries,
@@ -53,16 +53,6 @@ import {
} from "./test_utils.mjs";
import { PNG } from "pngjs";
-const copyPaste = async page => {
- let promise = waitForEvent(page, "copy");
- await kbCopy(page);
- await promise;
-
- promise = waitForEvent(page, "paste");
- await kbPaste(page);
- await promise;
-};
-
const selectAll = async page => {
await kbSelectAll(page);
await page.waitForFunction(
@@ -187,7 +177,8 @@ describe("FreeText Editor", () => {
);
await waitForSelectedEditor(page, getEditorSelector(0));
- await copyPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(getEditorSelector(1), {
visible: true,
});
@@ -203,7 +194,8 @@ describe("FreeText Editor", () => {
expect(pastedContent).withContext(`In ${browserName}`).toEqual(content);
- await copyPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(getEditorSelector(2), {
visible: true,
});
@@ -263,7 +255,8 @@ describe("FreeText Editor", () => {
);
await waitForSelectedEditor(page, getEditorSelector(3));
- await copyPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(getEditorSelector(4), {
visible: true,
});
@@ -276,9 +269,7 @@ describe("FreeText Editor", () => {
);
for (let i = 0; i < 2; i++) {
- const promise = waitForEvent(page, "paste");
- await kbPaste(page);
- await promise;
+ await paste(page);
await page.waitForSelector(getEditorSelector(5 + i));
}
@@ -597,7 +588,8 @@ describe("FreeText Editor", () => {
.withContext(`In ${browserName}`)
.toEqual([0, 1, 3]);
- await copyPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(getEditorSelector(6), {
visible: true,
});
@@ -1275,7 +1267,8 @@ describe("FreeText Editor", () => {
);
await waitForSelectedEditor(page, getEditorSelector(1));
- await copyPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(getEditorSelector(6), {
visible: true,
});
@@ -3425,14 +3418,11 @@ describe("FreeText Editor", () => {
);
await select(0);
- await pasteFromClipboard(
- page,
- {
- "text/html": "Bold Foo",
- "text/plain": "Foo",
- },
- `${editorSelector} .internal`
- );
+ await copyToClipboard(page, {
+ "text/html": "Bold Foo",
+ "text/plain": "Foo",
+ });
+ await pasteFromClipboard(page, `${editorSelector} .internal`);
let lastText = data;
@@ -3442,14 +3432,11 @@ describe("FreeText Editor", () => {
expect(text).withContext(`In ${browserName}`).toEqual(lastText);
await select(3);
- await pasteFromClipboard(
- page,
- {
- "text/html": "Bold Bar
Oof",
- "text/plain": "Bar\nOof",
- },
- `${editorSelector} .internal`
- );
+ await copyToClipboard(page, {
+ "text/html": "Bold Bar
Oof",
+ "text/plain": "Bar\nOof",
+ });
+ await pasteFromClipboard(page, `${editorSelector} .internal`);
await waitForTextChange(lastText, editorSelector);
text = await getText(editorSelector);
@@ -3457,13 +3444,8 @@ describe("FreeText Editor", () => {
expect(text).withContext(`In ${browserName}`).toEqual(lastText);
await select(0);
- await pasteFromClipboard(
- page,
- {
- "text/html": "basic html",
- },
- `${editorSelector} .internal`
- );
+ await copyToClipboard(page, { "text/html": "basic html" });
+ await pasteFromClipboard(page, `${editorSelector} .internal`);
// Nothing should change, so it's hard to wait on something.
// eslint-disable-next-line no-restricted-syntax
@@ -3477,15 +3459,12 @@ describe("FreeText Editor", () => {
const prevHTML = await getHTML();
// Try to paste an image.
- await pasteFromClipboard(
- page,
- {
- "image/png":
- // 1x1 transparent png.
- "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==",
- },
- `${editorSelector} .internal`
- );
+ await copyToClipboard(page, {
+ "image/png":
+ // 1x1 transparent png.
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==",
+ });
+ await pasteFromClipboard(page, `${editorSelector} .internal`);
// Nothing should change, so it's hard to wait on something.
// eslint-disable-next-line no-restricted-syntax
@@ -3505,14 +3484,11 @@ describe("FreeText Editor", () => {
});
const fooBar = "Foo\nBar\nOof";
- await pasteFromClipboard(
- page,
- {
- "text/html": "html",
- "text/plain": fooBar,
- },
- `${editorSelector} .internal`
- );
+ await copyToClipboard(page, {
+ "text/html": "html",
+ "text/plain": fooBar,
+ });
+ await pasteFromClipboard(page, `${editorSelector} .internal`);
await waitForTextChange("", editorSelector);
text = await getText(editorSelector);
diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs
index b8243f17e..66b2735bc 100644
--- a/test/integration/stamp_editor_spec.mjs
+++ b/test/integration/stamp_editor_spec.mjs
@@ -17,6 +17,8 @@ import {
applyFunctionToEditor,
awaitPromise,
closePages,
+ copy,
+ copyToClipboard,
getEditorDimensions,
getEditorSelector,
getFirstSerialized,
@@ -24,11 +26,10 @@ import {
getSerialized,
kbBigMoveDown,
kbBigMoveRight,
- kbCopy,
- kbPaste,
kbSelectAll,
kbUndo,
loadAndWait,
+ paste,
pasteFromClipboard,
scrollIntoView,
serializeBitmapDimensions,
@@ -78,12 +79,10 @@ const copyImage = async (page, imagePath, number) => {
const data = fs
.readFileSync(path.join(__dirname, imagePath))
.toString("base64");
- await pasteFromClipboard(
- page,
- { "image/png": `data:image/png;base64,${data}` },
- "",
- 500
- );
+
+ await copyToClipboard(page, { "image/png": `data:image/png;base64,${data}` });
+ await pasteFromClipboard(page);
+
await waitForImage(page, getEditorSelector(number));
};
@@ -570,13 +569,13 @@ describe("Stamp Editor", () => {
await page1.click("#editorStamp");
await copyImage(page1, "../images/firefox_logo.png", 0);
- await kbCopy(page1);
+ await copy(page1);
const [, page2] = pages2[i];
await page2.bringToFront();
await page2.click("#editorStamp");
- await kbPaste(page2);
+ await paste(page2);
await waitForImage(page2, getEditorSelector(0));
}
@@ -831,8 +830,8 @@ describe("Stamp Editor", () => {
);
await page.waitForSelector(`${getEditorSelector(0)} .altText.done`);
- await kbCopy(page);
- await kbPaste(page);
+ await copy(page);
+ await paste(page);
await page.waitForSelector(`${getEditorSelector(1)} .altText.done`);
await waitForSerialized(page, 2);
diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs
index 39fe88bd4..3d957680f 100644
--- a/test/integration/test_utils.mjs
+++ b/test/integration/test_utils.mjs
@@ -292,7 +292,13 @@ async function mockClipboard(pages) {
);
}
-async function pasteFromClipboard(page, data, selector, timeout = 100) {
+async function copy(page) {
+ const promise = waitForEvent(page, "copy");
+ await kbCopy(page);
+ await promise;
+}
+
+async function copyToClipboard(page, data) {
await page.evaluate(async dat => {
const items = Object.create(null);
for (const [type, value] of Object.entries(dat)) {
@@ -305,7 +311,15 @@ async function pasteFromClipboard(page, data, selector, timeout = 100) {
}
await navigator.clipboard.write([new ClipboardItem(items)]);
}, data);
+}
+async function paste(page) {
+ const promise = waitForEvent(page, "paste");
+ await kbPaste(page);
+ await promise;
+}
+
+async function pasteFromClipboard(page, selector = null) {
const validator = e => e.clipboardData.items.length !== 0;
let hasPasteEvent = false;
while (!hasPasteEvent) {
@@ -634,6 +648,8 @@ export {
clearInput,
closePages,
closeSinglePage,
+ copy,
+ copyToClipboard,
createPromise,
dragAndDropAnnotation,
firstPageOnTop,
@@ -654,7 +670,6 @@ export {
kbBigMoveLeft,
kbBigMoveRight,
kbBigMoveUp,
- kbCopy,
kbDeleteLastWord,
kbFocusNext,
kbFocusPrevious,
@@ -662,12 +677,12 @@ export {
kbGoToEnd,
kbModifierDown,
kbModifierUp,
- kbPaste,
kbRedo,
kbSelectAll,
kbUndo,
loadAndWait,
mockClipboard,
+ paste,
pasteFromClipboard,
scrollIntoView,
serializeBitmapDimensions,