Files
radicle-explorer/tests/e2e/settings.spec.ts
T
Rūdolfs OšiņšandSebastian Martinez 9cb9332e88 Replace Cypress with Playwright
Playwright is more flexible and has better developer experience than Cypress.
We add end to end tests covering:

  - project source browsing
    - tree view
    - commit list view
    - commit view
  - routing
    - hash based
    - history API based
  - clipboard copy paste functionality
  - seed view
  - project search
  - landing page view
  - settings

Co-authored-by: Sebastian Martinez <me@sebastinez.dev>
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2022-12-01 15:54:56 +01:00

76 lines
2.5 KiB
TypeScript

import { test, expect } from "@tests/support/fixtures.js";
const sourceBrowsingFixture =
"/seeds/0.0.0.0/rad:git:hnrkgd7sjt79k4j59ddh11ooxg18rk7soej8o/tree/main/src/true.c";
test("default settings", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
// Default settings.
{
await expect(page.locator("html")).toHaveAttribute("data-theme", "dark");
await expect(page.locator("html")).toHaveAttribute(
"data-codefont",
"jetbrains",
);
}
});
test("settings persistance", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
page.locator('button[name="Settings"]').click();
await page.locator(".theme .toggle").click();
await page.getByText("Code font").click();
await page.getByText("System").click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "light");
await expect(page.locator("html")).toHaveAttribute("data-codefont", "system");
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);
page.locator('button[name="Settings"]').click();
await page.locator(".theme .toggle").click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "light");
await expect(page.locator("body")).toHaveCSS(
"background-color",
"rgb(243, 246, 253)",
);
// Source highlighting reacts to theme change.
await expect(page.getByText("() {")).toHaveCSS("color", "rgb(79, 91, 102)");
await page.locator(".theme .toggle").click();
await expect(page.locator("html")).toHaveAttribute("data-theme", "dark");
await expect(page.locator("body")).toHaveCSS(
"background-color",
"rgb(11, 19, 26)",
);
// Source highlighting reacts to theme change.
await expect(page.getByText("() {")).toHaveCSS("color", "rgb(192, 197, 206)");
});
test("change code font", async ({ page }) => {
await page.goto(sourceBrowsingFixture);
page.locator('button[name="Settings"]').click();
await page.getByText("Code font").click();
await page.getByText("System").click();
await expect(page.getByText("System")).toHaveClass(/active/);
await expect(page.locator("html")).toHaveAttribute("data-codefont", "system");
await page.getByText("JetBrains Mono").click();
await expect(page.getByText("JetBrains Mono")).toHaveClass(/active/);
await expect(page.locator("html")).toHaveAttribute(
"data-codefont",
"jetbrains",
);
});