mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Docs site redesign: Two-Doors home, otter-orange brand, Pagefind search, enterprise SSO/SCIM/roles guides.
67 lines
2.5 KiB
TypeScript
67 lines
2.5 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test.describe("docs search (Pagefind)", () => {
|
|
test("search button is visible", async ({ page }) => {
|
|
await page.goto("/");
|
|
await expect(page.locator(".blog-search").first()).toBeVisible();
|
|
});
|
|
|
|
test("clicking search opens the dialog with an input", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.locator(".blog-search").first().click();
|
|
await expect(page.locator('input[placeholder="Search Docs"]')).toBeVisible();
|
|
});
|
|
|
|
test("typing a query shows results", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.locator(".blog-search").first().click();
|
|
const input = page.locator('input[placeholder="Search Docs"]');
|
|
await input.fill("docker");
|
|
await expect(page.locator('[role="option"]').first()).toBeVisible({ timeout: 10000 });
|
|
});
|
|
});
|
|
|
|
test.describe("Theme Toggle", () => {
|
|
test("theme toggle exists in DOM", async ({ page }) => {
|
|
await page.goto("/guide/getting-started");
|
|
const toggle = page.locator(
|
|
'button[role="switch"][title*="dark"], button[role="switch"][title*="light"]',
|
|
);
|
|
await expect(toggle.first()).toBeAttached();
|
|
});
|
|
|
|
test("clicking theme toggle changes appearance", async ({ page }) => {
|
|
await page.goto("/guide/getting-started");
|
|
const html = page.locator("html");
|
|
const initialClass = await html.getAttribute("class");
|
|
const wasDark = initialClass?.includes("dark") ?? false;
|
|
|
|
// Click the visible toggle inside our custom nav area (the hidden default
|
|
// VPNavBarAppearance is first in DOM order, so a bare querySelector would
|
|
// hit it instead). Playwright's click auto-waits for hydration.
|
|
await page.locator('.nav-bar-right button[role="switch"]').click();
|
|
|
|
// Assert the dark class actually toggled
|
|
if (wasDark) {
|
|
await expect(html).not.toHaveClass(/dark/);
|
|
} else {
|
|
await expect(html).toHaveClass(/dark/);
|
|
}
|
|
});
|
|
});
|
|
|
|
test.describe("GitHub Stars Component", () => {
|
|
test("GitHub star button is visible in navbar", async ({ page }) => {
|
|
await page.goto("/");
|
|
const githubBtn = page.locator(".github-btn, .github-btn-wrapper").first();
|
|
await expect(githubBtn).toBeVisible();
|
|
});
|
|
|
|
test("GitHub star button links to correct repo", async ({ page }) => {
|
|
await page.goto("/");
|
|
const starLink = page.locator('a[title="Star on GitHub"]').first();
|
|
await expect(starLink).toHaveAttribute("href", "https://github.com/snapotter-hq/snapotter");
|
|
await expect(starLink).toHaveAttribute("target", "_blank");
|
|
});
|
|
});
|