Files
radicle-explorer/tests/e2e/node.spec.ts
T

112 lines
3.5 KiB
TypeScript

import {
defaultConfig,
expect,
shortNodeRemote,
test,
} from "@tests/support/fixtures.js";
test("node metadata", async ({ page, peerManager }) => {
const peer = await peerManager.createPeer({
name: "node-metadata-peer",
});
await peer.startNode({
node: {
...defaultConfig.node,
seedingPolicy: { default: "allow", scope: "all" },
alias: "palm",
externalAddresses: ["seed.radicle.test:8123"],
},
});
await peer.startHttpd();
await page.goto(peer.uiUrl());
await expect(page.getByText(shortNodeRemote).first()).toBeVisible();
await expect(page.getByText("/radicle:1.0.0-rc.13/")).toBeVisible();
});
test("node projects", async ({ page }) => {
await page.goto("/nodes/radicle.local");
const project = page
.locator(".project-card", { hasText: "source-browsing" })
.nth(0);
// Project metadata.
{
await expect(project.getByText("source-browsing")).toBeVisible();
await expect(
project.getByText("Git repository for source browsing tests"),
).toBeVisible();
}
});
test("show pinned repositories", async ({ page }) => {
await page.goto("/");
// Shows pinned project name.
await expect(page.getByText("source-browsing")).toBeVisible();
//
// Shows pinned project description.
await expect(
page.getByText("Git repository for source browsing tests"),
).toBeVisible();
});
test("no duplicate entry for preferred seeds", async ({ page }) => {
await page.goto("/");
await expect(page.getByText("127.0.0.1").first()).toBeVisible();
await page.getByTitle("Switch preferred seeds").getByRole("button").click();
await expect(page.getByRole("button", { name: "127.0.0.1" })).toBeVisible();
await page.getByPlaceholder("Navigate to seed").fill("127.0.0.1");
await page.getByPlaceholder("Navigate to seed").press("Enter");
await expect(page.getByText("Seed node already added.")).toBeVisible();
await page.getByPlaceholder("Navigate to seed").fill("");
await expect(page.getByText("Seed node already added.")).toBeHidden();
});
test("adding and removing a new preferred seed", async ({ page }) => {
// Proxy requests to seed.example.tld to the local test api.
await page.route(
url => url.hostname === "seed.example.tld",
route =>
route.fulfill({
status: 301,
headers: {
Location: route
.request()
.url()
.replace("seed.example.tld", "127.0.0.1"),
},
}),
);
await page.goto("/");
await expect(page.getByText("127.0.0.1").first()).toBeVisible();
await page.getByTitle("Switch preferred seeds").getByRole("button").click();
await expect(page.getByRole("button", { name: "127.0.0.1" })).toBeVisible();
await page.getByPlaceholder("Navigate to seed").fill("seed.example.tld");
await page.getByPlaceholder("Navigate to seed").press("Enter");
await expect(page.getByText("seed.example.tld").first()).toBeVisible();
await page.getByTitle("Switch preferred seeds").getByRole("button").click();
await expect(
page.getByRole("button", { name: "seed.example.tld" }),
).toBeVisible();
// Test that removing the selected seed doesn't end in an undefined state.
await page
.getByRole("button", { name: "seed.example.tld" })
.getByRole("button")
.click();
await expect(page.getByText("127.0.0.1").first()).toBeVisible();
await page.getByTitle("Switch preferred seeds").getByRole("button").click();
await expect(
page.getByRole("button", { name: "seed.example.tld" }),
).toBeHidden();
});