Files
radicle-explorer/tests/e2e/hashRouter.spec.ts
T
Rūdolfs Ošiņš 3f7a58c489 Handle app URL translation into seed BaseUrl in one place
To make the code easier to reason about we handle all app URL encoding
and decoding and the related seed BaseUrl extraction in a single place.

Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-06-28 10:51:59 +02:00

112 lines
3.4 KiB
TypeScript

import {
aliceMainHead,
aliceRemote,
appConfigWithFixture,
expect,
sourceBrowsingUrl,
test,
} from "@tests/support/fixtures.js";
import {
expectBackAndForwardNavigationWorks,
expectUrlPersistsReload,
} from "@tests/support/router.js";
test("navigate between landing and project page", async ({ page }) => {
await page.addInitScript(appConfigWithFixture);
await page.goto("/#/");
await expect(page).toHaveURL("/#/");
await page.locator("text=source-browsing").click();
await expect(page).toHaveURL(`/#${sourceBrowsingUrl}`);
await expectBackAndForwardNavigationWorks("/#/", page);
await expectUrlPersistsReload(page);
});
test("navigation between seed and project pages", async ({ page }) => {
await page.goto("/#/seeds/radicle.local");
const project = page.locator(".project", { hasText: "source-browsing" });
await project.click();
await expect(page).toHaveURL(`/#${sourceBrowsingUrl}`);
await expectBackAndForwardNavigationWorks("/#/seeds/127.0.0.1", page);
await expectUrlPersistsReload(page);
await page.locator('role=link[name="radicle.local"]').click();
await expect(page).toHaveURL("/#/seeds/127.0.0.1");
});
test.describe("project page navigation", () => {
test("navigation between commit history and single commit", async ({
page,
}) => {
const projectHistoryURL = `/#${sourceBrowsingUrl}/history/${aliceMainHead}`;
await page.goto(projectHistoryURL);
await page.locator("text=Add README.md").click();
await expect(page).toHaveURL(
`/#${sourceBrowsingUrl}/commits/${aliceMainHead}`,
);
await expectBackAndForwardNavigationWorks(projectHistoryURL, page);
await expectUrlPersistsReload(page);
});
test("navigate between tree and commit history", async ({ page }) => {
const projectTreeURL = `/#${sourceBrowsingUrl}`;
await page.goto(projectTreeURL);
await expect(page).toHaveURL(projectTreeURL);
await page.locator('role=link[name="6 commits"]').click();
await expect(page).toHaveURL(`/#${sourceBrowsingUrl}/history`);
await expectBackAndForwardNavigationWorks(projectTreeURL, page);
await expectUrlPersistsReload(page);
});
test("navigate project paths", async ({ page }) => {
const projectTreeURL = `/#${sourceBrowsingUrl}`;
await page.goto(projectTreeURL);
await expect(page).toHaveURL(projectTreeURL);
await page.locator("text=.hidden").click();
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/.hidden`);
await page.locator("text=bin/").click();
await page.locator("text=true").click();
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/bin/true`);
await expectBackAndForwardNavigationWorks(
`${projectTreeURL}/tree/main/.hidden`,
page,
);
await expectUrlPersistsReload(page);
});
test("navigate project paths with a selected peer", async ({ page }) => {
const projectTreeURL = `/#${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
8,
)}`;
await page.goto(projectTreeURL);
await expect(page).toHaveURL(projectTreeURL);
await page.locator("text=.hidden").click();
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/.hidden`);
await page.locator("text=bin/").click();
await page.locator("text=true").click();
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/bin/true`);
await expectBackAndForwardNavigationWorks(
`${projectTreeURL}/tree/main/.hidden`,
page,
);
await expectUrlPersistsReload(page);
});
});