hr-flow.spec.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { expect, test } from '@playwright/test'
  2. test('核心业务流可通过真实表单操作', async ({ page }) => {
  3. await page.goto('/login')
  4. await page.getByTestId('username').fill('sys_admin')
  5. await page.getByTestId('password').fill('ChangeMe123!')
  6. await page.getByTestId('login-button').click()
  7. await expect(page.getByText('工作台')).toBeVisible()
  8. await page.getByText('员工档案').click()
  9. await page.getByTestId('new-employee').click()
  10. await page.getByTestId('employee-no').fill(`E${Date.now().toString().slice(-6)}`)
  11. await page.getByTestId('employee-name').fill('员工自动化')
  12. await page.getByTestId('save-employee').click()
  13. await expect(page.getByText('员工已保存')).toBeVisible()
  14. await page.getByText('招聘管理').click()
  15. await page.getByTestId('new-candidate').click()
  16. await page.getByTestId('candidate-name').fill('候选人自动化')
  17. await page.getByTestId('candidate-email').fill(`candidate${Date.now()}@example.local`)
  18. await page.getByTestId('candidate-phone').fill('13900000001')
  19. await page.getByTestId('save-candidate').click()
  20. await expect(page.getByText('候选人已保存')).toBeVisible()
  21. await page.getByText('候选人').click()
  22. await page.getByRole('button', { name: '安排面试' }).first().click()
  23. await page.getByTestId('submit-interview').click()
  24. await expect(page.getByText('面试已安排')).toBeVisible()
  25. await page.getByTestId('candidate-more').first().click()
  26. await page.getByText('面试结果').click()
  27. await page.getByTestId('save-interview-result').click()
  28. await expect(page.getByText('面试结果已保存')).toBeVisible()
  29. await page.getByTestId('candidate-more').first().click()
  30. await page.getByText('发 Offer').click()
  31. await expect(page.getByText('Offer 已发放')).toBeVisible()
  32. await page.getByTestId('candidate-more').first().click()
  33. await page.getByText('接受 Offer').click()
  34. await expect(page.getByText('Offer 已接受')).toBeVisible()
  35. await page.getByTestId('candidate-more').first().click()
  36. await page.getByTestId('convert-onboarding').click()
  37. await expect(page.getByText('已转入职')).toBeVisible()
  38. await page.getByText('入离职').click()
  39. await page.getByRole('button', { name: '编辑清单' }).first().click()
  40. await page.getByRole('checkbox', { name: /资料确认/ }).check()
  41. await page.getByRole('checkbox', { name: /账号准备/ }).check()
  42. await page.getByRole('checkbox', { name: /岗位确认/ }).check()
  43. await page.getByRole('button', { name: '保存' }).click()
  44. await expect(page.getByText('入职单已保存')).toBeVisible()
  45. await page.getByTestId('complete-onboarding').first().click()
  46. await page.getByRole('button', { name: '确认' }).click()
  47. await expect(page.getByText('入职流程已完成')).toBeVisible()
  48. await page.getByText('考勤请假').click()
  49. await page.getByTestId('new-leave').click()
  50. await page.getByRole('button', { name: '提交' }).click()
  51. await expect(page.getByText('请假申请已提交')).toBeVisible()
  52. await page.getByTestId('approve-leave').first().click()
  53. await expect(page.getByText('请假申请已同意')).toBeVisible()
  54. await page.getByText('薪酬工资').click()
  55. await page.getByTestId('submit-payroll').click()
  56. await expect(page.getByText('核算已提交')).toBeVisible()
  57. await page.getByText('绩效管理').click()
  58. await page.getByTestId('new-cycle').click()
  59. await page.getByRole('button', { name: '保存' }).click()
  60. await expect(page.getByText('绩效周期已保存')).toBeVisible()
  61. await page.getByText('报表导出').click()
  62. await page.getByTestId('export-headcount').click()
  63. await expect(page.getByText('导出任务已创建')).toBeVisible()
  64. })