mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-16 11:47:54 +01:00
test: add stress test for note creation & switching
This commit is contained in:
@@ -39,13 +39,17 @@ const { LoremIpsum } = require("lorem-ipsum");
|
|||||||
*/
|
*/
|
||||||
var page = null;
|
var page = null;
|
||||||
|
|
||||||
async function createNoteAndCheckPresence(note = NOTE, viewId = "home") {
|
async function createNoteAndCheckPresence(
|
||||||
|
note = NOTE,
|
||||||
|
viewId = "home",
|
||||||
|
index = 0
|
||||||
|
) {
|
||||||
await createNote(note, "notes");
|
await createNote(note, "notes");
|
||||||
|
|
||||||
// make sure the note has saved.
|
// make sure the note has saved.
|
||||||
await page.waitForTimeout(200);
|
await page.waitForTimeout(200);
|
||||||
|
|
||||||
let noteSelector = await checkNotePresence(viewId, 0, note);
|
let noteSelector = await checkNotePresence(viewId, index, note);
|
||||||
|
|
||||||
await page.click(noteSelector, { button: "left" });
|
await page.click(noteSelector, { button: "left" });
|
||||||
|
|
||||||
@@ -520,7 +524,7 @@ test.describe("stress tests", () => {
|
|||||||
const title = lorem.generateSentences(1);
|
const title = lorem.generateSentences(1);
|
||||||
const content = lorem.generateSentences(2);
|
const content = lorem.generateSentences(2);
|
||||||
|
|
||||||
await createNoteAndCheckPresence({ title, content });
|
await createNoteAndCheckPresence({ title, content }, "home", 0);
|
||||||
|
|
||||||
expect(await getEditorTitle()).toBe(title);
|
expect(await getEditorTitle()).toBe(title);
|
||||||
|
|
||||||
@@ -528,4 +532,56 @@ test.describe("stress tests", () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("create & switch between 100 notes", async ({ page }, info) => {
|
||||||
|
info.setTimeout(0);
|
||||||
|
|
||||||
|
const lorem = new LoremIpsum({
|
||||||
|
sentencesPerParagraph: {
|
||||||
|
max: 8,
|
||||||
|
min: 4,
|
||||||
|
},
|
||||||
|
wordsPerSentence: {
|
||||||
|
max: 16,
|
||||||
|
min: 4,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const NOTES_COUNT = 100;
|
||||||
|
|
||||||
|
let notes = [];
|
||||||
|
for (let i = 0; i < NOTES_COUNT; ++i) {
|
||||||
|
await test.step(`creating test note ${i + 1}`, async () => {
|
||||||
|
const title = lorem.generateSentences(1);
|
||||||
|
const content = lorem.generateSentences(2);
|
||||||
|
|
||||||
|
await createNoteAndCheckPresence({ title, content }, "home", 0);
|
||||||
|
|
||||||
|
expect(await getEditorTitle()).toBe(title);
|
||||||
|
|
||||||
|
expect(await getEditorContent()).toBe(content);
|
||||||
|
|
||||||
|
notes.push({ title, content });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.reload();
|
||||||
|
|
||||||
|
for (let i = NOTES_COUNT - 1; i >= 0; i--) {
|
||||||
|
await test.step(`switching test note ${i + 1}`, async () => {
|
||||||
|
const note = notes[i];
|
||||||
|
let noteSelector = await checkNotePresence(
|
||||||
|
"home",
|
||||||
|
NOTES_COUNT - 1 - i,
|
||||||
|
note
|
||||||
|
);
|
||||||
|
|
||||||
|
await page.click(noteSelector);
|
||||||
|
|
||||||
|
expect(await getEditorTitle()).toBe(note.title);
|
||||||
|
|
||||||
|
expect(await getEditorContent()).toBe(note.content);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,16 +29,17 @@ async function isToastPresent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function checkNotePresence(viewId, index = 0, note = NOTE) {
|
async function checkNotePresence(viewId, index = 0, note = NOTE) {
|
||||||
let noteSelector = List.new("note")
|
let noteSelector = List.new("note").view(viewId).grouped().atIndex(index);
|
||||||
.view(viewId)
|
// noteSelector = noteSelector.build();
|
||||||
.grouped()
|
|
||||||
.atIndex(index)
|
|
||||||
.title();
|
|
||||||
noteSelector = noteSelector.build();
|
|
||||||
|
|
||||||
await page.waitForSelector(noteSelector, { state: "attached" });
|
await page.waitForSelector(noteSelector.build(), { state: "attached" });
|
||||||
await expect(page.innerText(noteSelector)).resolves.toBe(note.title);
|
|
||||||
return noteSelector;
|
await (await page.$(noteSelector.build())).scrollIntoViewIfNeeded();
|
||||||
|
|
||||||
|
await expect(page.innerText(noteSelector.title().build())).resolves.toBe(
|
||||||
|
note.title
|
||||||
|
);
|
||||||
|
return noteSelector.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { isPresent, isAbsent, isToastPresent, checkNotePresence };
|
module.exports = { isPresent, isAbsent, isToastPresent, checkNotePresence };
|
||||||
|
|||||||
@@ -77,6 +77,7 @@
|
|||||||
"eslint-plugin-react-hooks": "^4.2.0",
|
"eslint-plugin-react-hooks": "^4.2.0",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.2.0",
|
||||||
"find-process": "^1.4.4",
|
"find-process": "^1.4.4",
|
||||||
|
"lorem-ipsum": "^2.0.4",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
"source-map-explorer": "^2.5.2",
|
"source-map-explorer": "^2.5.2",
|
||||||
"typescript": "^4.1.5",
|
"typescript": "^4.1.5",
|
||||||
|
|||||||
Reference in New Issue
Block a user