pelagia-portal/App/tests/e2e/po-submit-button.spec.ts
2026-05-18 23:18:58 +05:30

57 lines
2.2 KiB
TypeScript

/**
* User stories covered: Feature 3 — Submit for Approval button on DRAFT PO
* - TECHNICAL submitter sees "Submit for Approval" button on a DRAFT PO detail page
* - Button is NOT visible on a PO already in SUBMITTED/later status
*
* Created: 2026-05-17
*/
import { test, expect, type BrowserContext } from "@playwright/test";
import { login, USERS, createDraftPo, submitPo } from "./helpers/login";
test.describe("Feature 3 — Submit for Approval button on DRAFT PO", () => {
test("US-3a: TECHNICAL user sees Submit for Approval button on a DRAFT PO", async ({
page,
}) => {
await login(page, USERS.TECH);
const poUrl = await createDraftPo(page, `E2E_DRAFT_BTN_${Date.now()}`);
await page.goto(poUrl);
// PoDetail renders SubmitDraftButton when status === DRAFT and own submitter
const submitBtn = page.getByRole("button", { name: /submit for approval/i });
await expect(submitBtn).toBeVisible();
console.log("✓ Submit for Approval button visible on DRAFT PO detail");
});
test("US-3b: Submit for Approval button is absent on a SUBMITTED/MGR_REVIEW PO", async ({
page,
context,
}: {
page: import("@playwright/test").Page;
context: BrowserContext;
}) => {
// Create and submit a PO as tech user
await login(page, USERS.TECH);
const poUrl = await submitPo(page, `E2E_SUBMITTED_BTN_${Date.now()}`);
await page.goto(poUrl);
// Reload as the same user — status is SUBMITTED or MGR_REVIEW
const submitBtn = page.getByRole("button", { name: /submit for approval/i });
await expect(submitBtn).not.toBeVisible();
console.log("✓ Submit for Approval button NOT visible on submitted PO");
});
test("US-3a: submit button transitions DRAFT to Under Review", async ({
page,
}) => {
await login(page, USERS.TECH);
const poUrl = await createDraftPo(page, `E2E_SUBMIT_FLOW_${Date.now()}`);
await page.goto(poUrl);
await page.getByRole("button", { name: /submit for approval/i }).click();
// After submission the status badge should change to Under Review / Submitted
await expect(page.getByText(/under review|submitted/i)).toBeVisible({
timeout: 10_000,
});
console.log("✓ PO transitions to Under Review after clicking Submit");
});
});