nxtgauge-frontend-solid/tests/e2e/visual/verification-submission-guide.story.spec.ts
2026-04-26 23:58:43 +02:00

38 lines
1.6 KiB
TypeScript

import { expect, test } from "@playwright/test";
const storybookUrl = process.env.STORYBOOK_URL || "http://localhost:6006";
async function storyIdFor(page: any, storyName: string) {
const res = await page.request.get(`${storybookUrl}/index.json`);
expect(res.ok()).toBeTruthy();
const payload = await res.json();
const entries = payload?.entries || {};
for (const entry of Object.values(entries) as any[]) {
if (
entry?.type === "story" &&
entry?.title === "Dashboard/Verification Submission Guide" &&
String(entry?.name || "").toLowerCase() === storyName.toLowerCase()
) {
return String(entry.id);
}
}
throw new Error(`Story id not found for ${storyName}`);
}
test.describe("Storybook visual - verification submission guide", () => {
test("ready-to-submit state renders with CTA", async ({ page }) => {
const storyId = await storyIdFor(page, "Ready To Submit");
await page.goto(`${storybookUrl}/iframe.html?id=${storyId}&viewMode=story`);
await expect(page.getByText("Ready to submit for verification.")).toBeVisible({ timeout: 15000 });
await expect(page.getByRole("button", { name: /submit for verification/i })).toBeVisible();
});
test("documents-requested state renders admin guidance", async ({ page }) => {
const storyId = await storyIdFor(page, "Documents Requested");
await page.goto(`${storybookUrl}/iframe.html?id=${storyId}&viewMode=story`);
await expect(page.getByText(/Admin request:/i)).toBeVisible({ timeout: 15000 });
await expect(page.getByRole("button", { name: /go to documents/i })).toBeVisible();
});
});