import { test, expect } from "./helpers/fixtures"; import { EMPLOYEE, login, logout } from "./helpers/auth"; import { openNavLink } from "./helpers/navigation"; test("E2E 报销审批进度:提交后详情页展示当前步骤进度", async ({ page, reimbursementDetail }) => { await login(page, EMPLOYEE); await (await openNavLink(page, "我的报销")).click(); await expect(page).toHaveURL(/\/reimbursements/); await expect(page.getByTestId("reimbursements-create")).toBeVisible(); const createResponsePromise = page.waitForResponse((response) => { const url = new URL(response.url()); return response.request().method() === "POST" && url.pathname === "/api/reimbursements" && response.ok(); }); await page.getByTestId("reimbursements-create").click(); await page.getByRole("menuitem", { name: "空白报销" }).click(); const createPayload = (await (await createResponsePromise).json()) as { data?: { id?: string } }; const reimbursementId = createPayload.data?.id; if (!reimbursementId) { throw new Error(`创建报销单后未返回 id: ${JSON.stringify(createPayload)}`); } await page.goto(`/reimbursements/${reimbursementId}`); await reimbursementDetail.assertLoaded(); const marker = `MOCK_E2E_${Date.now()}_${Math.random().toString(16).slice(2)}`; await reimbursementDetail.uploadInvoicePdf( `progress-${Date.now()}.pdf`, Buffer.from(`%PDF-1.4\n${marker}\n%%EOF\n`, "utf8"), ); await page.goto(`/reimbursements/${reimbursementId}`); await reimbursementDetail.assertLoaded(); await reimbursementDetail.submitReimbursement(); await expect(page.getByText(/状态:(reviewing|审批中)/)).toBeVisible({ timeout: 30_000 }); await expect(reimbursementDetail.workflowProgress).toBeVisible({ timeout: 30_000 }); await expect(reimbursementDetail.workflowProgress).toContainText("当前节点"); await expect(reimbursementDetail.workflowProgress).toContainText(/第 1 步|第 2 步|第 3 步/); await logout(page, EMPLOYEE.name); });