mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-18 19:30:27 +08:00
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>
76 lines
2.5 KiB
TypeScript
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",
|
|
);
|
|
});
|