test: add stress test for note creation & switching

This commit is contained in:
thecodrr
2021-12-08 23:25:09 +05:00
parent b73b8a3d36
commit dd5a249ea8
3 changed files with 70 additions and 12 deletions

View File

@@ -39,13 +39,17 @@ const { LoremIpsum } = require("lorem-ipsum");
*/
var page = null;
async function createNoteAndCheckPresence(note = NOTE, viewId = "home") {
async function createNoteAndCheckPresence(
note = NOTE,
viewId = "home",
index = 0
) {
await createNote(note, "notes");
// make sure the note has saved.
await page.waitForTimeout(200);
let noteSelector = await checkNotePresence(viewId, 0, note);
let noteSelector = await checkNotePresence(viewId, index, note);
await page.click(noteSelector, { button: "left" });
@@ -520,7 +524,7 @@ test.describe("stress tests", () => {
const title = lorem.generateSentences(1);
const content = lorem.generateSentences(2);
await createNoteAndCheckPresence({ title, content });
await createNoteAndCheckPresence({ title, content }, "home", 0);
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);
});
}
});
});

View File

@@ -29,16 +29,17 @@ async function isToastPresent() {
}
async function checkNotePresence(viewId, index = 0, note = NOTE) {
let noteSelector = List.new("note")
.view(viewId)
.grouped()
.atIndex(index)
.title();
noteSelector = noteSelector.build();
let noteSelector = List.new("note").view(viewId).grouped().atIndex(index);
// noteSelector = noteSelector.build();
await page.waitForSelector(noteSelector, { state: "attached" });
await expect(page.innerText(noteSelector)).resolves.toBe(note.title);
return noteSelector;
await page.waitForSelector(noteSelector.build(), { state: "attached" });
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 };

View File

@@ -77,6 +77,7 @@
"eslint-plugin-react-hooks": "^4.2.0",
"file-loader": "^6.2.0",
"find-process": "^1.4.4",
"lorem-ipsum": "^2.0.4",
"patch-package": "^6.4.7",
"source-map-explorer": "^2.5.2",
"typescript": "^4.1.5",