import { describe, it, cy } from 'cypress' describe('HIS System Regression Tests', () => { it('should handle normal login flow', () => { cy.login('doctor1', '123456') cy.url().should('include', '/dashboard') }) // ... 其他历史回归用例 ... }) // ========================================================================= // Bug #562 Regression Test // ========================================================================= describe('Bug #562: 门诊医生工作站-待写病历加载性能与状态修复', { tags: ['@bug562', '@regression'] }, () => { it('should load pending medical records within 2 seconds and clear loading state', () => { cy.login('doctor1', '123456') cy.visit('/outpatient/doctor-workstation') // 进入待写病历模块 cy.get('[data-cy="menu-pending-records"]').click() // 验证加载动画出现 cy.get('[data-cy="loading-spinner"]').should('be.visible') // 核心断言:2秒内加载完成且状态清除 cy.get('[data-cy="loading-spinner"]', { timeout: 2000 }).should('not.exist') // 验证数据列表正常渲染 cy.get('[data-cy="record-list"]').should('be.visible') cy.get('[data-cy="record-item"]').should('have.length.greaterThan', 0) }) it('should clear loading state on API timeout or error', { tags: ['@bug562', '@regression'] }, () => { cy.login('doctor1', '123456') cy.visit('/outpatient/doctor-workstation') cy.get('[data-cy="menu-pending-records"]').click() // 拦截并模拟接口超时/失败 cy.intercept('GET', '**/api/medical-record/pending*', { statusCode: 500, delay: 3000 }).as('pendingRecordsFail') cy.get('[data-cy="loading-spinner"]').should('be.visible') cy.wait('@pendingRecordsFail') // 即使接口失败/超时,loading 也必须被清除 cy.get('[data-cy="loading-spinner"]', { timeout: 1000 }).should('not.exist') cy.get('[data-cy="record-list"]').should('be.visible') }) }) // ========================================================================= // Bug #550 Regression Test // ========================================================================= describe('Bug #550: 门诊医生站-检查申请项目选择交互优化', { tags: ['@bug550', '@regression'] }, () => { it('should decouple item and method selection', () => { cy.login('doctor1', '123456') cy.visit('/outpatient/examination-application') // ... 原有测试逻辑 ... }) }) // ========================================================================= // Bug #503 Regression Test // ========================================================================= describe('Bug #503: 住院发退药明细与汇总单数据触发时机同步', { tags: ['@bug503', '@regression'] }, () => { it('should sync detail and summary lists based on application mode', () => { // 前置:确保系统处于“需申请模式” cy.login('admin', '123456') cy.visit('/system/dict-manage') cy.get('[data-cy="dict-search"]').type('病区护士执行提交药品模式{enter}') cy.get('[data-cy="dict-edit-btn"]').first().click() cy.get('[data-cy="dict-value-input"]').clear().type('1') // 1=需申请模式 cy.get('[data-cy="dict-save-btn"]').click() cy.logout() // 1. 护士执行医嘱 cy.login('wx', '123456') cy.visit('/inpatient/nurse-workstation') cy.get('[data-cy="order-list"] .order-item').first().click() cy.get('[data-cy="btn-execute-order"]').click() cy.get('[data-cy="execute-confirm"]').click() cy.logout() // 2. 药房查看:需申请模式下,执行后明细单与汇总单均不应显示 cy.login('yjk1', '123456') cy.visit('/pharmacy/inpatient-dispensing') cy.get('[data-cy="dispensing-detail-list"]').should('be.empty') cy.get('[data-cy="dispensing-summary-list"]').should('be.empty') cy.logout() // 3. 护士站提交汇总发药申请 cy.login('wx', '123456') cy.visit('/inpatient/nurse-workstation') cy.get('[data-cy="btn-summary-dispensing-app"]').click() cy.get('[data-cy="app-select-all"]').click() cy.get('[data-cy="app-confirm"]').click() cy.logout() // 4. 药房再次查看:明细与汇总应同步出现,数据一致 cy.login('yjk1', '123456') cy.visit('/pharmacy/inpatient-dispensing') cy.get('[data-cy="dispensing-detail-list"]').should('have.length.greaterThan', 0) cy.get('[data-cy="dispensing-summary-list"]').should('have.length.greaterThan', 0) // 验证数量一致性(防脱节核心断言) cy.get('[data-cy="detail-count"]').invoke('text').then(detailCount => { cy.get('[data-cy="summary-count"]').invoke('text').should('eq', detailCount) }) }) })