Files
notesnook/apps/mobile/e2e/tests/notebook.e2e.js
2023-02-13 18:13:54 +05:00

365 lines
11 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { notesnook } from "../test.ids";
import {
tapById,
elementById,
visibleByText,
tapByText,
createNote,
prepare,
notVisibleById,
navigate,
elementByText,
sleep,
notVisibleByText
} from "./utils";
async function createNotebook(
title = "Notebook 1",
description = true,
topic = true,
topicCount = 1
) {
await tapByText("Add your first notebook");
await elementById(notesnook.ids.dialogs.notebook.inputs.title).typeText(
title
);
if (description) {
await elementById(
notesnook.ids.dialogs.notebook.inputs.description
).typeText(`Description of ${title}`);
}
if (topic) {
for (let i = 1; i <= topicCount; i++) {
await elementById(notesnook.ids.dialogs.notebook.inputs.topic).typeText(
i === 1 ? "Topic" : "Topic " + i
);
await tapById("topic-add-button");
}
}
await tapByText("Create notebook");
await sleep(500);
}
// async function addTopic(title = "Topic") {
// await tapById(notesnook.buttons.add);
// await elementById("input-title").typeText(title);
// await tapByText("Add");
// await sleep(500);
// }
describe("NOTEBOOKS", () => {
it("Create a notebook with title only", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
});
it("Create a notebook title & description", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
});
it("Create a notebook with description and topics", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
});
it("Create a notebook, add topic, move notes", async () => {
await prepare();
let note = await createNote();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, true);
await sleep(500);
await tapByText("Topic");
await sleep(500);
await tapById("listitem.select");
await tapByText("Move selected notes");
await sleep(500);
await tapByText("Topic");
await sleep(500);
await visibleByText(note.body);
});
it("Add new topic to notebook", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await tapByText("Notebook 1");
await tapById(notesnook.buttons.add);
await elementById("input-title").typeText("Topic");
await tapByText("Add");
await sleep(500);
await visibleByText("Topic");
});
it("Edit topic", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, true);
await sleep(500);
await device.pressBack();
await sleep(500);
await tapByText("Notebook 1");
await sleep(300);
await visibleByText("Topic");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Edit topic");
await elementById("input-title").typeText(" (edited)");
await tapByText("Save");
await visibleByText("Topic (edited)");
});
it("Add new note to topic", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, true);
await sleep(500);
await device.pressBack();
await sleep(500);
await tapByText("Topic");
await createNote();
});
it("Remove note from topic", async () => {
await prepare();
await navigate("Notebooks");
await createNotebook("Notebook 1", true, true);
await sleep(500);
await device.pressBack();
await sleep(500);
await tapByText("Topic");
let note = await createNote();
await elementByText(note.body).longPress();
await tapByText("Select");
await tapById("select-minus");
await notVisibleById(note.title);
});
it.only("Add/Remove note to notebook from home", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", true, true, 3);
await sleep(500);
await device.pressBack();
await sleep(500);
await navigate("Notes");
await createNote();
console.log("ADD TO A SINGLE TOPIC");
await tapById(notesnook.listitem.menu);
await tapById("icon-Add to notebook");
await sleep(500);
await tapByText("Notebook 1");
await tapByText("Topic");
await tapByText("Save");
await sleep(300);
await visibleByText("Notebook 1 Topic");
console.log("MOVE FROM ONE TOPIC TO ANOTHER");
await tapById(notesnook.listitem.menu);
await tapById("icon-Add to notebook");
await tapByText("Notebook 1");
await tapByText("Topic 2");
await tapByText("Save");
await visibleByText("Notebook 1 Topic 2");
console.log("REMOVE FROM TOPIC");
await tapById(notesnook.listitem.menu);
await tapById("icon-Add to notebook");
await tapByText("Notebook 1");
await tapByText("Topic 2");
await tapByText("Save");
await sleep(300);
await notVisibleByText("Notebook 1 Topic 2");
console.log("MOVE TO MULTIPLE TOPICS");
await tapById(notesnook.listitem.menu);
await tapById("icon-Add to notebook");
await tapByText("Notebook 1");
await elementByText("Topic").longPress();
await visibleByText("Reset selection");
await tapByText("Topic 2");
await tapByText("Topic 3");
await tapByText("Save");
await sleep(300);
await tapById(notesnook.listitem.menu);
await visibleByText("Topic");
await visibleByText("Topic 2");
await visibleByText("Topic 3");
});
it("Edit notebook title, description and add a topic", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook();
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Edit notebook");
await sleep(500);
await elementById(notesnook.ids.dialogs.notebook.inputs.title).typeText(
" (Edited)"
);
await elementById(
notesnook.ids.dialogs.notebook.inputs.description
).clearText();
await elementById(
notesnook.ids.dialogs.notebook.inputs.description
).typeText("Description of Notebook 1 (Edited)");
await elementById(notesnook.ids.dialogs.notebook.inputs.topic).typeText(
"Topic 2"
);
await tapById("topic-add-button");
await tapByText("Save changes");
await sleep(500);
await visibleByText("Notebook 1 (Edited)");
await visibleByText("Description of Notebook 1 (Edited)");
await visibleByText("Topic 2");
});
it("Move notebook to trash", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Move to trash");
await sleep(2000);
await tapByText("No");
await sleep(4000);
await navigate("Trash");
await visibleByText("Notebook 1");
});
it("Move notebook to trash with notes", async () => {
await prepare();
let note = await createNote();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, true);
await sleep(500);
await tapByText("Topic");
await tapById("listitem.select");
await tapByText("Move selected notes");
await sleep(500);
await visibleByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Move to trash");
await sleep(2000);
await tapByText("Yes");
await sleep(4000);
await navigate("Trash");
await visibleByText("Notebook 1");
await visibleByText(note.body);
});
it("Move Topic to trash with notes", async () => {
await prepare();
let note = await createNote();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, true);
await sleep(500);
await tapByText("Topic");
await tapById("listitem.select");
await tapByText("Move selected notes");
await sleep(500);
await tapByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Delete topic");
await sleep(2000);
await tapByText("Yes");
await device.pressBack();
await sleep(4000);
await navigate("Trash");
await visibleByText(note.body);
});
it("Pin notebook to side menu", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1", false, false);
await sleep(500);
await device.pressBack();
await sleep(500);
await visibleByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Add Shortcut");
let menu = elementById(notesnook.ids.default.header.buttons.left);
await menu.tap();
await visibleByText("Notebook 1");
});
it("Pin topic to side menu", async () => {
await prepare();
await navigate("Notebooks");
await sleep(500);
await createNotebook("Notebook 1");
await sleep(500);
await device.pressBack();
await sleep(500);
await tapByText("Notebook 1");
await tapById(notesnook.ids.notebook.menu);
await tapByText("Add Shortcut");
let menu = elementById(notesnook.ids.default.header.buttons.left);
await menu.tap();
await menu.tap();
await visibleByText("Topic");
});
});