import { test, expect, sourceBrowsingUrl } from "@tests/support/fixtures.js";
const sourceBrowsingFixture = `${sourceBrowsingUrl}/tree/main/src/true.c`;
test("default theme", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
{
await expect(page.locator("html")).toHaveAttribute("data-theme", "dark");
await expect(page.locator("html")).toHaveAttribute(
"data-codefont",
"jetbrains",
);
}
});
test("theme persistence", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
await expect(
page
.getByRole("navigation", { name: "Breadcrumb" })
.getByRole("link", { name: "source-browsing" }),
).toBeVisible();
await page.getByRole("button", { name: "Settings" }).click();
await page.getByRole("button", { name: "Code Font System" }).click();
await page.getByRole("button", { name: "Light Mode" }).click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "light");
await expect(page.locator("html")).toHaveAttribute("data-codefont", "system");
await page.reload();
await expect(page.locator("html")).toHaveAttribute("data-theme", "light");
await expect(page.locator("html")).toHaveAttribute("data-codefont", "system");
});
test("change theme", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
await expect(
page
.getByRole("navigation", { name: "Breadcrumb" })
.getByRole("link", { name: "source-browsing" }),
).toBeVisible();
await page.getByRole("button", { name: "Settings" }).click();
await page.getByRole("button", { name: "Light Mode" }).click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "light");
await expect(page.locator("body")).toHaveCSS(
"background-color",
"rgb(248, 249, 250)",
);
// Source highlighting reacts to theme change.
await expect(page.getByText("() {")).toHaveCSS("color", "rgb(11, 13, 18)");
await page.getByRole("button", { name: "Dark Mode" }).click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "dark");
await expect(page.locator("body")).toHaveCSS(
"background-color",
"rgb(0, 6, 15)",
);
// Source highlighting reacts to theme change.
await expect(page.getByText("() {")).toHaveCSS("color", "rgb(255, 255, 255)");
});
test("change code font", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
await expect(
page
.getByRole("navigation", { name: "Breadcrumb" })
.getByRole("link", { name: "source-browsing" }),
).toBeVisible();
await page.getByRole("button", { name: "Settings" }).click();
await page.getByRole("button", { name: "Code Font System" }).click();
await expect(page.locator("html")).toHaveAttribute("data-codefont", "system");
await page.getByRole("button", { name: "Code Font JetBrains Mono" }).click();
await expect(page.locator("html")).toHaveAttribute(
"data-codefont",
"jetbrains",
);
});