mirror of
https://github.com/heyman/heynote.git
synced 2024-11-24 17:03:19 +01:00
117 lines
3.5 KiB
JavaScript
117 lines
3.5 KiB
JavaScript
import {expect, test} from "@playwright/test";
|
|
import {HeynotePage} from "./test-utils.js";
|
|
|
|
let heynotePage
|
|
|
|
test.beforeEach(async ({page}) => {
|
|
heynotePage = new HeynotePage(page)
|
|
await heynotePage.goto()
|
|
|
|
expect((await heynotePage.getBlocks()).length).toBe(1)
|
|
heynotePage.setContent(`
|
|
∞∞∞text
|
|
Block A
|
|
∞∞∞text
|
|
Block B
|
|
∞∞∞text
|
|
Block C`)
|
|
await page.waitForTimeout(100);
|
|
// check that blocks are created
|
|
expect((await heynotePage.getBlocks()).length).toBe(3)
|
|
|
|
// check that visual block layers are created
|
|
await expect(page.locator("css=.heynote-blocks-layer > div")).toHaveCount(3)
|
|
});
|
|
|
|
/* from A */
|
|
test("create block before current (A)", async ({page}) => {
|
|
// select the first block
|
|
await page.locator("body").press("ArrowUp")
|
|
await page.locator("body").press("ArrowUp")
|
|
await runTest(page, "Alt+Enter", ['D', 'A', 'B', 'C'])
|
|
})
|
|
|
|
test("create block after current (A)", async ({page}) => {
|
|
// select the first block
|
|
await page.locator("body").press("ArrowUp")
|
|
await page.locator("body").press("ArrowUp")
|
|
await runTest(page, "Mod+Enter", ['A', 'D', 'B', 'C'])
|
|
})
|
|
|
|
/* from B */
|
|
test("create block before current (B)", async ({page}) => {
|
|
// select the second block
|
|
await page.locator("body").press("ArrowUp")
|
|
await runTest(page, "Alt+Enter", ['A', 'D', 'B', 'C'])
|
|
})
|
|
|
|
test("create block after current (B)", async ({page}) => {
|
|
// select the second block
|
|
await page.locator("body").press("ArrowUp")
|
|
await runTest(page, "Mod+Enter", ['A', 'B', 'D', 'C'])
|
|
})
|
|
|
|
/* from C */
|
|
test("create block before current (C)", async ({page}) => {
|
|
await runTest(page, "Alt+Enter", ['A', 'B', 'D', 'C'])
|
|
})
|
|
|
|
test("create block after current (C)", async ({page}) => {
|
|
await runTest(page, "Mod+Enter", ['A', 'B', 'C', 'D'])
|
|
})
|
|
|
|
test("create block before first", async ({page}) => {
|
|
await runTest(page, "Alt+Shift+Enter", ['D', 'A', 'B', 'C'])
|
|
})
|
|
|
|
test("create block after last", async ({page}) => {
|
|
for (let i = 0; i < 3; i++) {
|
|
await page.locator("body").press("ArrowUp")
|
|
}
|
|
await runTest(page, "Mod+Shift+Enter", ['A', 'B', 'C', 'D'])
|
|
})
|
|
|
|
test("create block before Markdown block", async ({page}) => {
|
|
await heynotePage.setContent(`
|
|
∞∞∞markdown
|
|
# Markdown!
|
|
`)
|
|
await page.locator("body").press("Alt+Enter")
|
|
await page.waitForTimeout(100);
|
|
expect(await heynotePage.getCursorPosition()).toBe(11)
|
|
})
|
|
|
|
test("create block before first Markdown block", async ({page}) => {
|
|
await heynotePage.setContent(`
|
|
∞∞∞markdown
|
|
# Markdown!
|
|
∞∞∞text
|
|
`)
|
|
for (let i = 0; i < 5; i++) {
|
|
await page.locator("body").press("ArrowDown")
|
|
}
|
|
await page.locator("body").press("Alt+Shift+Enter")
|
|
await page.waitForTimeout(100);
|
|
expect(await heynotePage.getCursorPosition()).toBe(11)
|
|
})
|
|
|
|
const runTest = async (page, key, expectedBlocks) => {
|
|
// create a new block
|
|
await page.locator("body").press(key.replace("Mod", heynotePage.isMac ? "Meta" : "Control"))
|
|
await page.waitForTimeout(100);
|
|
await page.locator("body").pressSequentially("Block D")
|
|
|
|
// check that blocks are created
|
|
expect((await heynotePage.getBlocks()).length).toBe(4)
|
|
|
|
// check that the content of each block is correct
|
|
for (const expectedBlock of expectedBlocks) {
|
|
const index = expectedBlocks.indexOf(expectedBlock);
|
|
expect(await heynotePage.getBlockContent(index)).toBe(`Block ${expectedBlock}`)
|
|
}
|
|
|
|
// check that only one block delimiter widget has the class first
|
|
await expect(await page.locator("css=.heynote-block-start.first")).toHaveCount(1)
|
|
}
|
|
|