worklist-double-click-enter-exam.cy.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /**
  2. * 测试文件: 阶段3-进入检查
  3. * 路径: 路径1.1-Worklist双击进入
  4. *
  5. * 路径分析:
  6. * - POM: LoginPage, MainPage, WorklistPage, ExamPage
  7. * - Mock:
  8. * - mockLoginSuccess() - 登录成功
  9. * - mockFetchTwoWorks() - 获取工作列表
  10. * - mockGetStudyArrived() - 获取检查信息
  11. * - 规格:
  12. * ✓ 登录成功
  13. * ✓ 导航到工作列表
  14. * ✓ 工作列表显示至少2条记录
  15. * ✓ 双击第一条记录
  16. * ✓ 系统加载任务信息
  17. * ✓ 进入检查界面
  18. * - 需要新建: ExamPage POM(已创建)
  19. * - 需要添加: 检查界面元素的data-testid: exam-patient-info, exam-toolbar等
  20. * - 已有的data-testid:
  21. * - WorklistTable: row-0, row-1 - 表格行
  22. * - MainPage: patient_management, worklist, exam - 导航按钮
  23. */
  24. import { mockLoginSuccess } from '../../support/mock/handlers/user';
  25. import { mockFetchTwoWorks } from '../../support/mock/handlers/worklist';
  26. import { mockGetStudyArrived } from '../../support/mock/handlers/study';
  27. import LoginPage from '../../support/pageObjects/LoginPage';
  28. import MainPage from '../../support/pageObjects/MainPage';
  29. import WorklistPage from '../../support/pageObjects/WorklistPage';
  30. import ExamPage from '../../support/pageObjects/ExamPage';
  31. describe('阶段3:进入检查 - 路径1.1:Worklist双击进入', () => {
  32. const loginPage = new LoginPage();
  33. const mainPage = new MainPage();
  34. const worklistPage = new WorklistPage();
  35. const examPage = new ExamPage();
  36. beforeEach(() => {
  37. // 设置所有必要的Mock
  38. mockLoginSuccess();
  39. mockFetchTwoWorks();
  40. mockGetStudyArrived();
  41. });
  42. it('应该通过双击Worklist条目进入检查界面', () => {
  43. /**
  44. * Given: 用户已登录
  45. * 步骤1(前置): 打开登录界面,完成登录
  46. */
  47. loginPage.visit();
  48. loginPage.getUsernameInput().should('be.visible');
  49. loginPage.login('admin', '123456');
  50. // 等待登录成功
  51. cy.wait('@loginSuccess');
  52. cy.contains('登录成功').should('be.visible', { timeout: 10000 });
  53. /**
  54. * When: 导航到Worklist
  55. * 步骤1: 打开 Worklist
  56. */
  57. mainPage.clickPatientManagementButton();
  58. mainPage.clickWorklistButton();
  59. /**
  60. * Then: 系统加载Worklist任务信息
  61. * 步骤2(前置): 验证工作列表加载
  62. */
  63. cy.wait('@fetchTwoWorks').then((interception) => {
  64. expect(interception.response?.statusCode).to.eq(200);
  65. });
  66. // 验证工作列表显示(至少2条记录)
  67. worklistPage.getTable().should('be.visible');
  68. worklistPage.getTable().find('tr').should('have.length.at.least', 2);
  69. /**
  70. * When: 用户双击第一条任务
  71. * 步骤2: 双击任务条目
  72. */
  73. worklistPage.findTableAndDoubleClickFirstRow();
  74. /**
  75. * Then: 系统加载任务信息,进入检查界面
  76. * 步骤3: 系统加载任务信息
  77. * 步骤4: 进入检查界面
  78. */
  79. cy.wait('@getStudyArrived').then((interception) => {
  80. expect(interception.response?.statusCode).to.eq(200);
  81. // 验证返回的数据包含检查信息
  82. expect(interception.response?.body.data).to.have.property('StudyID');
  83. });
  84. /**
  85. * Then: 验证进入检查界面
  86. * 注意:当前需要在实际的检查页面组件中添加data-testid
  87. * TODO: 添加检查界面的实际验证
  88. *
  89. * 预期验证(待实现):
  90. * - examPage.verifyExamPageLoaded();
  91. * - examPage.getPatientInfo().should('be.visible');
  92. * - examPage.getToolbar().should('be.visible');
  93. */
  94. // 临时验证:确保离开了worklist页面
  95. // 一旦检查页面添加了data-testid,可以替换为具体的检查页面验证
  96. cy.url().should('not.include', 'worklist');
  97. });
  98. });