41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test.setTimeout(120_000);
|
|
|
|
test("supports URI search and reports raw/export workflow status", async ({ page }) => {
|
|
const apiRequests: string[] = [];
|
|
page.on("request", (request) => {
|
|
const url = new URL(request.url());
|
|
if (url.pathname.startsWith("/api/v1")) {
|
|
apiRequests.push(`${request.method()} ${url.pathname}${url.search}`);
|
|
}
|
|
});
|
|
|
|
await page.goto("/");
|
|
await page.getByRole("button", { name: /Objects/i }).click();
|
|
await expect(page.getByRole("heading", { name: "MFT object" })).toBeVisible({ timeout: 70_000 });
|
|
|
|
await page.getByRole("button", { name: "Use selected URI" }).click();
|
|
await page.getByPlaceholder("Exact URI lookup...").press("Enter");
|
|
await expect.poll(
|
|
() => apiRequests.some((request) => request.includes("/objects/by-uri")),
|
|
{ timeout: 30_000 }
|
|
).toBe(true);
|
|
|
|
await page.getByRole("button", { name: "Download raw" }).click();
|
|
await expect(page.getByText("Raw download failed: repo-bytes db is not configured for raw download")).toBeVisible({ timeout: 30_000 });
|
|
expect(apiRequests.some((request) => request.includes("/objects/ff44545d40ad3732405b46ec/raw"))).toBe(true);
|
|
|
|
await page.getByRole("button", { name: "Export object" }).click();
|
|
await expect(page.getByText("Object export failed: repo-bytes db is required for export jobs")).toBeVisible({ timeout: 30_000 });
|
|
expect(apiRequests.some((request) => request.includes("POST /api/v1/runs/run_7144/exports"))).toBe(true);
|
|
|
|
await page.getByRole("button", { name: "Export selected PP" }).click();
|
|
await expect(page.getByText("PP export failed: repo-bytes db is required for export jobs")).toBeVisible({ timeout: 30_000 });
|
|
|
|
await page.screenshot({
|
|
path: "../../../../specs/develop/20260617/m6_playwright/rpki-explorer-workflows.png",
|
|
fullPage: true
|
|
});
|
|
});
|