38 lines
1.6 KiB
TypeScript
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();
|
|
});
|
|
});
|