Files
his/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts
2026-05-26 23:58:37 +08:00

94 lines
4.2 KiB
TypeScript
Executable File

import { describe, it, cy } from 'cypress'
describe('HIS System Regression Tests', () => {
beforeEach(() => {
cy.login('nkhs1', '123456')
})
it('should verify basic login and dashboard load', () => {
cy.visit('/')
cy.get('.dashboard-container').should('be.visible')
})
// @bug544 @regression
describe('Bug #544: Triage Queue List & Historical Query', () => {
it('should display completed status patients and support historical date query', () => {
cy.visit('/triage/queue')
// 1. 验证默认加载当天数据
cy.get('[data-cy="queue-table"]').should('exist')
cy.get('[data-cy="date-range-picker"]').should('contain', new Date().toISOString().slice(0, 10))
// 2. 验证可筛选“完诊”状态患者
cy.get('[data-cy="status-select"]').select('完诊')
cy.get('[data-cy="search-btn"]').click()
cy.get('[data-cy="queue-table"] tbody tr').should('have.length.greaterThan', 0)
cy.get('[data-cy="queue-table"] .status-tag').should('contain', '完诊')
// 3. 验证历史队列查询功能(按时间范围检索)
cy.get('[data-cy="start-date"]').clear().type('2026-05-01')
cy.get('[data-cy="end-date"]').clear().type('2026-05-02')
cy.get('[data-cy="search-btn"]').click()
cy.get('[data-cy="queue-table"]').should('exist')
cy.url().should('include', 'startDate=2026-05-01')
cy.url().should('include', 'endDate=2026-05-02')
})
})
// @bug550 @regression
describe('Bug #550: Exam Item Selection Interaction Optimization', () => {
it('should decouple item/method selection, display full names without "套餐" prefix, and show hierarchical collapsed details', () => {
cy.visit('/outpatient/examination/apply')
// 1. 展开分类并勾选项目
cy.get('[data-cy="category-tree"]').contains('彩超').click()
cy.get('[data-cy="item-list"]').contains('128线排').parent().find('input[type="checkbox"]').check()
// 2. 验证联动解耦:检查方法区域未被自动勾选
cy.get('[data-cy="method-list"]').find('input[type="checkbox"]:checked').should('have.length', 0)
// 3. 验证已选卡片显示:名称完整/提示,去除“套餐”冗余前缀
cy.get('[data-cy="selected-area"]').should('be.visible')
cy.get('[data-cy="selected-card"]').should('contain', '128线排')
cy.get('[data-cy="selected-card"]').should('not.contain', '套餐')
// 4. 验证默认收起状态及层级结构(项目 > 检查方法)
cy.get('[data-cy="selected-card"] .details-panel').should('not.be.visible') // 默认收起
cy.get('[data-cy="selected-card"] .card-header').click() // 点击展开
cy.get('[data-cy="selected-card"] .details-panel').should('be.visible')
cy.get('[data-cy="selected-card"] .details-panel').should('contain', '检查方法')
cy.get('[data-cy="selected-card"] .details-panel').should('not.contain', '项目套餐明细') // 验证冗余标签已移除
})
})
// @bug503 @regression
describe('Bug #503: Inpatient Dispensing Detail & Summary Sync', () => {
it('should align detail list visibility with summary list based on dispensing mode', () => {
cy.visit('/pharmacy/inpatient-dispensing')
// 拦截并模拟需申请模式(mode=1)下的接口返回
cy.intercept('GET', '/api/pharmacy/dispensing/detail?mode=1', {
statusCode: 200,
body: [] // 未申请时明细应为空
}).as('getDetailsMode1')
cy.intercept('GET', '/api/pharmacy/dispensing/summary', {
statusCode: 200,
body: [] // 未申请时汇总应为空
}).as('getSummary')
// 切换至需申请模式并刷新
cy.get('[data-cy="dispensing-mode-select"]').select('1')
cy.get('[data-cy="refresh-btn"]').click()
cy.wait('@getDetailsMode1').its('request.query').should('have.property', 'mode', '1')
cy.wait('@getSummary')
// 验证:需申请模式下,明细单与汇总单数据量必须严格一致(业务脱节风险已消除)
cy.get('[data-cy="summary-table"] tbody tr').its('length').then(summaryCount => {
cy.get('[data-cy="detail-table"] tbody tr').its('length').should('eq', summaryCount)
})
})
})
})