refactor: 简化工作台上手入口和个人设置(portal-onboarding-profile-simplification)

这个提交包含在:
2026-05-29 18:28:40 +08:00
父节点 48260b57b7
当前提交 6b7dce4651
共修改 12 个文件,包含 443 行新增和 319 行删除
+40 -4
查看文件
@@ -68,6 +68,9 @@ function mockPasswordLogin(page: import("@playwright/test").Page, emailReady = t
await route.fulfill({
status: 200,
contentType: "application/json",
headers: {
"set-cookie": "has_session=1; Path=/; SameSite=Strict",
},
body: JSON.stringify(envelope({
accessToken: "test-access-token",
expiresIn: 900,
@@ -567,7 +570,7 @@ test("Portal 管理视角重排正确,更多入口默认折叠", async ({ page
await expect(page.getByRole("link", { name: "差旅申请" })).toBeVisible();
});
test("Portal 新员工引导先显示欢迎弹窗,再显示快速上手清单", async ({ page }) => {
test("Portal 新员工只显示轻量欢迎入口,不再显示快速上手清单", async ({ page }) => {
await page.addInitScript(() => {
window.localStorage.setItem("hyb_oa_show_welcome", "1");
window.localStorage.setItem("hyb_oa_onboarding_active", "1");
@@ -583,14 +586,47 @@ test("Portal 新员工引导先显示欢迎弹窗,再显示快速上手清单"
await login(page, EMPLOYEE);
await expect(page.getByTestId(TEST_IDS.onboarding.welcomeDialog)).toBeVisible();
const welcomeDialog = page.getByTestId(TEST_IDS.onboarding.welcomeDialog);
await expect(welcomeDialog).toBeVisible();
await expect(welcomeDialog.getByRole("heading", { name: "常用入口" })).toBeVisible();
await expect(welcomeDialog.getByRole("link")).toHaveCount(3);
await expect(welcomeDialog.getByRole("link", { name: /处理待办/ })).toBeVisible();
await expect(welcomeDialog.getByRole("link", { name: /提交报销/ })).toBeVisible();
await expect(welcomeDialog.getByRole("link", { name: /请假/ })).toBeVisible();
await expect(welcomeDialog.getByRole("link", { name: /个人设置/ })).not.toBeVisible();
await expect(welcomeDialog.getByRole("link", { name: /通知中心/ })).not.toBeVisible();
await page.getByTestId(TEST_IDS.onboarding.welcomeClose).evaluate((element: HTMLButtonElement) => {
element.click();
});
await expect(page.getByTestId(TEST_IDS.onboarding.welcomeDialog)).not.toBeVisible();
await expect(page.getByTestId(TEST_IDS.onboarding.gettingStartedCard)).toBeVisible();
await page.getByTestId(TEST_IDS.onboarding.gettingStartedDismiss).click();
await expect(page.getByTestId(TEST_IDS.onboarding.gettingStartedCard)).not.toBeVisible();
await expect(page.getByText("快速上手")).not.toBeVisible();
await expect(page.getByText("完善个人资料")).not.toBeVisible();
await expect(page.getByText("了解请假流程")).not.toBeVisible();
await expect(page.getByText("查看通知中心")).not.toBeVisible();
await expect(page.getByRole("heading", { name: "今日任务" })).toBeVisible();
});
test("个人设置默认只展示账号通知和企业微信,不展示权限 code", async ({ page }) => {
await mockPasswordLogin(page);
await mockNavigation(page, "employee");
await mockPortalHome(page, "employee");
await mockAttendanceToday(page);
await mockNotificationList(page);
await mockMe(page, ["employee"], "Employee");
await login(page, EMPLOYEE);
await page.goto("/settings/profile");
await expect(page.getByRole("heading", { name: "个人设置" })).toBeVisible();
await expect(page.getByRole("heading", { name: "账号信息" })).toBeVisible();
await expect(page.getByRole("heading", { name: "通知设置" })).toBeVisible();
await expect(page.getByRole("heading", { name: "企业微信绑定" })).toBeVisible();
await expect(page.getByText("账号详情")).toBeVisible();
await expect(page.getByText("权限摘要")).not.toBeVisible();
await expect(page.getByText("expense.create")).not.toBeVisible();
await expect(page.getByText("leave.submit")).not.toBeVisible();
});
test("Portal bootstrap refresh 首次瞬时失败后重试成功仍保留登录态", async ({ page }) => {