57 lines
2.2 KiB
TypeScript
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");
|
|
});
|
|
});
|