实现 B-2b 统一报销工作台迁移(reimbursement-form-shared-component-migration)
这个提交包含在:
@@ -330,7 +330,12 @@ function workflowTaskDetail(status: "pending" | "completed" = "pending") {
|
||||
entityType: "reimbursement",
|
||||
currentStatus: isCompleted ? "approved" : "reviewing",
|
||||
currentStepId: isCompleted ? null : "step-dg7",
|
||||
contextData: { standardViolations: [] },
|
||||
contextData: {
|
||||
standardViolations: [],
|
||||
budgetCheck: null,
|
||||
budgetCheckStatus: "not_applicable",
|
||||
parseStatus: "ready",
|
||||
},
|
||||
startedAt: "2026-05-12T08:00:00.000Z",
|
||||
completedAt: isCompleted ? "2026-05-12T09:00:00.000Z" : null,
|
||||
},
|
||||
@@ -842,29 +847,6 @@ async function expectMobileDetailHeaderSpacing(page: Page, testId: string) {
|
||||
expect(metrics!.gap).toBeGreaterThanOrEqual(12);
|
||||
}
|
||||
|
||||
async function expectApprovalActionsStable(page: Page) {
|
||||
const actions = await page.evaluate(() =>
|
||||
Array.from(document.querySelectorAll<HTMLElement>(".mobile-approval-action-grid > button")).map((button) => {
|
||||
const rect = button.getBoundingClientRect();
|
||||
return {
|
||||
left: rect.left,
|
||||
right: rect.right,
|
||||
top: rect.top,
|
||||
width: rect.width,
|
||||
};
|
||||
}),
|
||||
);
|
||||
|
||||
expect(actions).toHaveLength(3);
|
||||
const firstTop = actions[0].top;
|
||||
for (const action of actions) {
|
||||
expect(Math.abs(action.top - firstTop)).toBeLessThanOrEqual(2);
|
||||
expect(action.width).toBeGreaterThanOrEqual(64);
|
||||
}
|
||||
expect(actions[0].right).toBeLessThanOrEqual(actions[1].left + 2);
|
||||
expect(actions[1].right).toBeLessThanOrEqual(actions[2].left + 2);
|
||||
}
|
||||
|
||||
async function expectActionTileGapStable(page: Page) {
|
||||
const gaps = await page.evaluate(() =>
|
||||
Array.from(document.querySelectorAll<HTMLElement>("[data-testid='mobile-action-grid'] .mobile-icon-action")).map((tile) => {
|
||||
@@ -999,31 +981,24 @@ test.describe("MIF7 移动信息架构整改", () => {
|
||||
|
||||
await mobile.page.getByTestId("mobile-pending-summary").getByRole("link").first().click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7$/);
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-detail")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("reimbursement-approval-evidence")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-list")).toHaveCount(0);
|
||||
await expect(mobile.page.getByTestId("mobile-bottom-nav")).toHaveCount(0);
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-detail")).not.toContainText("业务单号");
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-detail")).toContainText("报销单 BX20260512001");
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-history")).toContainText("提交 · 测试员工");
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-history")).toContainText("转审 · 测试审批人");
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-history")).not.toContainText("transferToEmployeeId");
|
||||
await expectMobileApprovalStatusSlots(mobile.page);
|
||||
await expectMobileDetailHeaderSpacing(mobile.page, "mobile-approvals-detail-header");
|
||||
await expectApprovalActionsStable(mobile.page);
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).not.toContainText("业务单号");
|
||||
await expect(mobile.page.getByTestId("mobile-reimbursement-detail-header")).toContainText("BX20260512001");
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).toContainText("提交 · 测试员工");
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).toContainText("转审 · 测试审批人");
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).not.toContainText("transferToEmployeeId");
|
||||
await expectMobileDetailHeaderSpacing(mobile.page, "mobile-reimbursement-detail-header");
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-sticky-actions")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-approve")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-approve")).toHaveCSS("min-height", "48px");
|
||||
await expectNoMobileShellRegression(mobile.page);
|
||||
await mobile.page.screenshot({ path: screenshotPath("manager-approval-push-detail"), fullPage: true });
|
||||
|
||||
await mobile.page.getByTestId("mobile-approvals-detail-header").getByRole("button", { name: "返回" }).click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile$/);
|
||||
|
||||
await mobile.page.getByTestId("mobile-pending-summary").getByRole("link").first().click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7$/);
|
||||
await mobile.page.getByTestId("mobile-approval-reimbursement-detail-link").click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/reimbursements\/reimbursement-dg7$/);
|
||||
await expect(mobile.page.getByTestId("mobile-reimbursement-items")).toBeVisible();
|
||||
await mobile.page.getByTestId("mobile-reimbursement-detail-header").getByRole("button", { name: "返回" }).click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7$/);
|
||||
await expectApprovalActionsStable(mobile.page);
|
||||
await expect(mobile.page).toHaveURL(/\/mobile$/);
|
||||
|
||||
await mobile.page.goto("/mobile/approvals");
|
||||
await expect(mobile.page.getByRole("tab", { name: "待我审批" })).toBeVisible();
|
||||
@@ -1034,9 +1009,10 @@ test.describe("MIF7 移动信息架构整改", () => {
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-task-task-dg7-completed")).toBeVisible();
|
||||
await mobile.page.getByTestId("mobile-approvals-task-task-dg7-completed").click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7-completed$/);
|
||||
await expect(mobile.page.getByTestId("mobile-approvals-detail-header")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("reimbursement-mobile-workspace")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("mobile-reimbursement-detail-header")).toBeVisible();
|
||||
await expect(mobile.page.getByTestId("mobile-bottom-nav")).toHaveCount(0);
|
||||
await mobile.page.getByTestId("mobile-approvals-detail-header").getByRole("button", { name: "返回" }).click();
|
||||
await mobile.page.getByTestId("mobile-reimbursement-detail-header").getByRole("button", { name: "返回" }).click();
|
||||
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\?taskTab=completed$/);
|
||||
await expect(mobile.page.getByRole("tab", { name: "已处理" })).toHaveAttribute("data-state", "active");
|
||||
await mobile.page.screenshot({ path: screenshotPath("approver-task-tabs"), fullPage: true });
|
||||
@@ -1130,8 +1106,8 @@ test.describe("MIF7 移动信息架构整改", () => {
|
||||
await expect(mobile.page.getByTestId("mobile-bottom-nav")).toHaveCount(0);
|
||||
const sectionOrder = await mobile.page.evaluate(() =>
|
||||
[
|
||||
"mobile-reimbursement-items",
|
||||
"mobile-reimbursement-attachments",
|
||||
"approval-item-evidence",
|
||||
"approval-attachments",
|
||||
"mobile-reimbursement-processing-progress",
|
||||
].map((testId) => document.querySelector(`[data-testid='${testId}']`)?.getBoundingClientRect().top ?? -1),
|
||||
);
|
||||
|
||||
在新工单中引用
屏蔽一个用户