Files
his/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts
2026-05-27 04:07:27 +08:00

114 lines
4.7 KiB
TypeScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
})
})
})