123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /* Copyright 2022 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- const {
- closePages,
- getSelectedEditors,
- loadAndWait,
- } = require("./test_utils.js");
- describe("Editor", () => {
- describe("Ink", () => {
- let pages;
- beforeAll(async () => {
- pages = await loadAndWait("aboutstacks.pdf", ".annotationEditorLayer");
- });
- afterAll(async () => {
- await closePages(pages);
- });
- it("must draw, undo a deletion and check that the editors are not selected", async () => {
- await Promise.all(
- pages.map(async ([browserName, page]) => {
- await page.click("#editorInk");
- const rect = await page.$eval(".annotationEditorLayer", el => {
- // With Chrome something is wrong when serializing a DomRect,
- // hence we extract the values and just return them.
- const { x, y } = el.getBoundingClientRect();
- return { x, y };
- });
- for (let i = 0; i < 3; i++) {
- const x = rect.x + 100 + i * 100;
- const y = rect.y + 100 + i * 100;
- await page.mouse.move(x, y);
- await page.mouse.down();
- await page.mouse.move(x + 50, y + 50);
- await page.mouse.up();
- await page.keyboard.press("Escape");
- }
- await page.keyboard.down("Control");
- await page.keyboard.press("a");
- await page.keyboard.up("Control");
- expect(await getSelectedEditors(page))
- .withContext(`In ${browserName}`)
- .toEqual([0, 1, 2]);
- await page.keyboard.press("Backspace");
- await page.keyboard.down("Control");
- await page.keyboard.press("z");
- await page.keyboard.up("Control");
- expect(await getSelectedEditors(page))
- .withContext(`In ${browserName}`)
- .toEqual([]);
- })
- );
- });
- it("must draw, undo/redo and check that the editor don't move", async () => {
- await Promise.all(
- pages.map(async ([browserName, page]) => {
- await page.keyboard.down("Control");
- await page.keyboard.press("a");
- await page.keyboard.up("Control");
- await page.keyboard.press("Backspace");
- const rect = await page.$eval(".annotationEditorLayer", el => {
- // With Chrome something is wrong when serializing a DomRect,
- // hence we extract the values and just return them.
- const { x, y } = el.getBoundingClientRect();
- return { x, y };
- });
- const xStart = rect.x + 300;
- const yStart = rect.y + 300;
- await page.mouse.move(xStart, yStart);
- await page.mouse.down();
- await page.mouse.move(xStart + 50, yStart + 50);
- await page.mouse.up();
- await page.keyboard.press("Escape");
- const rectBefore = await page.$eval(".inkEditor canvas", el => {
- const { x, y } = el.getBoundingClientRect();
- return { x, y };
- });
- for (let i = 0; i < 30; i++) {
- await page.keyboard.down("Control");
- await page.keyboard.press("z");
- await page.keyboard.up("Control");
- await page.waitForTimeout(10);
- await page.keyboard.down("Control");
- await page.keyboard.press("y");
- await page.keyboard.up("Control");
- await page.waitForTimeout(10);
- }
- const rectAfter = await page.$eval(".inkEditor canvas", el => {
- const { x, y } = el.getBoundingClientRect();
- return { x, y };
- });
- expect(Math.round(rectBefore.x))
- .withContext(`In ${browserName}`)
- .toEqual(Math.round(rectAfter.x));
- expect(Math.round(rectBefore.y))
- .withContext(`In ${browserName}`)
- .toEqual(Math.round(rectAfter.y));
- })
- );
- });
- });
- });
|