talent-detail-sync.spec.ts 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. import { TIMEOUTS } from '../../utils/timeouts';
  2. import { test, expect } from '../../utils/test-setup';
  3. import { EnterpriseMiniPage } from '../../pages/mini/enterprise-mini.page';
  4. /**
  5. * 跨端数据同步 E2E 测试 - 人才详情页完整性验证 (Story 13.10)
  6. *
  7. * 测试目标:验证企业小程序人才详情页显示完整、准确的信息
  8. *
  9. * 测试流程:
  10. * 1. 小程序登录 → 导航到人才列表 → 点击人才卡片 → 验证详情页各区域信息
  11. *
  12. * 测试要点:
  13. * - 验证基本信息、工作信息、薪资信息、历史工作记录的显示
  14. * - 使用 data-testid 选择器
  15. * - 遵循项目测试规范
  16. */
  17. // 测试常量
  18. const TEST_TALENT_NAME = '测试残疾人_1768346782426_12_8219'; // 测试残疾人姓名
  19. const MINI_LOGIN_PHONE = '13800001111'; // 小程序登录手机号
  20. const MINI_LOGIN_PASSWORD = process.env.TEST_ENTERPRISE_PASSWORD || 'password123'; // 小程序登录密码
  21. /**
  22. * 企业小程序登录辅助函数(暂未使用,保留供后续测试使用)
  23. */
  24. // eslint-disable-next-line @typescript-eslint/no-unused-vars
  25. async function _loginMini(page: any) {
  26. const miniPage = new EnterpriseMiniPage(page);
  27. await miniPage.goto();
  28. await miniPage.login(MINI_LOGIN_PHONE, MINI_LOGIN_PASSWORD);
  29. await miniPage.expectLoginSuccess();
  30. console.debug('[小程序] 登录成功');
  31. }
  32. test.describe.serial('跨端数据同步测试 - 人才详情页完整性验证 (Story 13.10)', () => {
  33. // 每个测试使用独立的浏览器上下文
  34. test.use({ storageState: undefined });
  35. /**
  36. * AC1: 测试场景 - 基本信息同步验证
  37. */
  38. test('应该在小程序人才详情页显示基本信息', async ({ enterpriseMiniPage: miniPage }) => {
  39. // 1. 登录
  40. await miniPage.goto();
  41. await miniPage.login(MINI_LOGIN_PHONE, MINI_LOGIN_PASSWORD);
  42. await miniPage.expectLoginSuccess();
  43. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  44. // 2. 导航到人才列表页面
  45. await miniPage.clickBottomNav('talent');
  46. await miniPage.expectUrl('/pages/yongren/talent/list/index');
  47. console.debug('[小程序] 导航到人才列表页面');
  48. // 3. 等待人才列表加载
  49. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  50. // 4. 点击测试人才卡片进入详情页
  51. await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
  52. await miniPage.expectUrl('/pages/yongren/talent/detail/index');
  53. console.debug('[小程序] 打开人才详情页');
  54. // 5. 验证人才姓名显示在详情页头部
  55. await miniPage.expectTalentDetailHeader({
  56. name: TEST_TALENT_NAME
  57. });
  58. console.debug(`[小程序] 人才姓名 "${TEST_TALENT_NAME}" 显示正确 ✓`);
  59. // 6. 验证详情页包含残疾人姓名
  60. const pageContent = await miniPage.page.textContent('body') || '';
  61. expect(pageContent).toContain(TEST_TALENT_NAME);
  62. console.debug('[小程序] 人才详情页基本信息同步验证完成 ✓');
  63. });
  64. /**
  65. * AC2: 测试场景 - 工作信息同步验证
  66. */
  67. test('应该在小程序人才详情页显示工作信息', async ({ enterpriseMiniPage: miniPage }) => {
  68. // 1. 登录
  69. await miniPage.goto();
  70. await miniPage.login(MINI_LOGIN_PHONE, MINI_LOGIN_PASSWORD);
  71. await miniPage.expectLoginSuccess();
  72. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  73. // 2. 导航到人才列表页面
  74. await miniPage.clickBottomNav('talent');
  75. await miniPage.expectUrl('/pages/yongren/talent/list/index');
  76. console.debug('[小程序] 导航到人才列表页面');
  77. // 3. 等待人才列表加载
  78. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  79. // 4. 点击测试人才卡片进入详情页
  80. await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
  81. await miniPage.expectUrl('/pages/yongren/talent/detail/index');
  82. console.debug('[小程序] 打开人才详情页');
  83. // 5. 验证工作信息区域显示
  84. const pageContent = await miniPage.page.textContent('body') || '';
  85. const hasWorkInfo = pageContent.includes('入职') || pageContent.includes('工作状态') || pageContent.includes('在职');
  86. if (hasWorkInfo) {
  87. console.debug('[小程序] 人才详情页工作信息显示 ✓');
  88. } else {
  89. console.debug('[小程序] 工作信息未显示(可能未关联订单)');
  90. }
  91. });
  92. /**
  93. * AC3: 测试场景 - 薪资信息同步验证
  94. */
  95. test('应该在小程序人才详情页显示薪资信息', async ({ enterpriseMiniPage: miniPage }) => {
  96. // 1. 登录
  97. await miniPage.goto();
  98. await miniPage.login(MINI_LOGIN_PHONE, MINI_LOGIN_PASSWORD);
  99. await miniPage.expectLoginSuccess();
  100. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  101. // 2. 导航到人才列表页面
  102. await miniPage.clickBottomNav('talent');
  103. await miniPage.expectUrl('/pages/yongren/talent/list/index');
  104. console.debug('[小程序] 导航到人才列表页面');
  105. // 3. 等待人才列表加载
  106. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  107. // 4. 点击测试人才卡片进入详情页
  108. await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
  109. await miniPage.expectUrl('/pages/yongren/talent/detail/index');
  110. console.debug('[小程序] 打开人才详情页');
  111. // 5. 验证薪资信息区域显示
  112. const pageContent = await miniPage.page.textContent('body') || '';
  113. const hasSalaryInfo = pageContent.includes('薪资') || pageContent.includes('工资') || pageContent.includes('元');
  114. if (hasSalaryInfo) {
  115. console.debug('[小程序] 人才详情页薪资信息显示 ✓');
  116. } else {
  117. console.debug('[小程序] 薪资信息未显示(可能未设置薪资)');
  118. }
  119. });
  120. /**
  121. * AC4: 测试场景 - 历史工作记录验证
  122. */
  123. test('应该在小程序人才详情页显示历史工作记录', async ({ enterpriseMiniPage: miniPage }) => {
  124. // 1. 登录
  125. await miniPage.goto();
  126. await miniPage.login(MINI_LOGIN_PHONE, MINI_LOGIN_PASSWORD);
  127. await miniPage.expectLoginSuccess();
  128. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  129. // 2. 导航到人才列表页面
  130. await miniPage.clickBottomNav('talent');
  131. await miniPage.expectUrl('/pages/yongren/talent/list/index');
  132. console.debug('[小程序] 导航到人才列表页面');
  133. // 3. 等待人才列表加载
  134. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  135. // 4. 点击测试人才卡片进入详情页
  136. await miniPage.clickTalentCardFromList(TEST_TALENT_NAME);
  137. await miniPage.expectUrl('/pages/yongren/talent/detail/index');
  138. console.debug('[小程序] 打开人才详情页');
  139. // 5. 验证历史工作记录区域显示
  140. const pageContent = await miniPage.page.textContent('body') || '';
  141. const hasWorkHistory = pageContent.includes('历史') || pageContent.includes('记录');
  142. if (hasWorkHistory) {
  143. console.debug('[小程序] 人才详情页历史工作记录显示 ✓');
  144. } else {
  145. console.debug('[小程序] 历史工作记录未显示(可能未关联多个订单)');
  146. }
  147. });
  148. });