From b44f4e0f747475e0dd5340ccac26252dc08a016a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 11 Jan 2025 13:36:56 +0200 Subject: [PATCH] chore(e2e): add basic test for table of contents --- e2e/note_types/text.spec.ts | 33 +++++++++++++++++++++++++++++++ e2e/support/app.ts | 2 ++ integration-tests/db/document.db | Bin 487424 -> 495616 bytes 3 files changed, 35 insertions(+) create mode 100644 e2e/note_types/text.spec.ts diff --git a/e2e/note_types/text.spec.ts b/e2e/note_types/text.spec.ts new file mode 100644 index 000000000..ec9c24e98 --- /dev/null +++ b/e2e/note_types/text.spec.ts @@ -0,0 +1,33 @@ +import { test, expect, Page } from "@playwright/test"; +import App from "../support/app"; + +test("Table of contents is displayed", async ({ page }) => { + const app = new App(page); + await app.goto(); + await app.closeAllTabs(); + await app.goToNoteInNewTab("Table of contents"); + + await expect(app.sidebar).toContainText("Table of Contents"); + const rootList = app.sidebar.locator(".toc-widget > span > ol"); + + // Heading 1.1 + // Heading 1.1 + // Heading 1.2 + // Heading 2 + // Heading 2.1 + // Heading 2.2 + // Heading 2.2.1 + // Heading 2.2.1.1 + // Heading 2.2.11.1 + + await expect(rootList.locator("> li")).toHaveCount(2); + await expect(rootList.locator("> li").first()).toHaveText("Heading 1"); + await expect(rootList.locator("> ol").first().locator("> li").first()).toHaveText("Heading 1.1"); + await expect(rootList.locator("> ol").first().locator("> li").nth(1)).toHaveText("Heading 1.2"); + + await expect(rootList.locator("> ol")).toHaveCount(2); + await expect(rootList.locator("> ol").nth(1).locator("> li")).toHaveCount(2); + await expect(rootList.locator("> ol").nth(1).locator("> ol")).toHaveCount(1); + await expect(rootList.locator("> ol").nth(1).locator("> ol > ol")).toHaveCount(1); + await expect(rootList.locator("> ol").nth(1).locator("> ol > ol > ol")).toHaveCount(1); +}); diff --git a/e2e/support/app.ts b/e2e/support/app.ts index 92cbe55e9..4f36dfb7b 100644 --- a/e2e/support/app.ts +++ b/e2e/support/app.ts @@ -6,12 +6,14 @@ export default class App { readonly tabBar: Locator; readonly noteTree: Locator; readonly currentNoteSplit: Locator; + readonly sidebar: Locator; constructor(page: Page) { this.page = page; this.tabBar = page.locator(".tab-row-widget-container"); this.noteTree = page.locator(".tree-wrapper"); this.currentNoteSplit = page.locator(".note-split:not(.hidden-ext)") + this.sidebar = page.locator("#right-pane"); } async goto() { diff --git a/integration-tests/db/document.db b/integration-tests/db/document.db index da7b5158b35e243fb036a5a973b9e04f777a21c7..a80f36d839f2a69b8f156a46fff84a54b124790a 100644 GIT binary patch delta 9131 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 delta 4236 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