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

98 lines
4.2 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 { test, expect } from '@playwright/test';
// 假设文件原有内容...
test.describe('HIS 系统回归测试集', () => {
test('基础登录流程', async ({ page }) => {
await page.goto('/login');
await expect(page).toHaveTitle(/HIS/);
});
// ================= 新增 Bug #505 回归测试 =================
test('@bug505 @regression 护士端已发药医嘱禁止退回', async ({ page }) => {
// 1. 登录护士账号
await page.goto('/login');
await page.fill('input[name="username"]', 'wx');
await page.fill('input[name="password"]', '123456');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/.*dashboard.*/);
// 2. 进入医嘱校对模块 -> 已校对页签
await page.click('text=医嘱校对');
await page.click('text=已校对');
await page.waitForLoadState('networkidle');
// 3. 验证已发药医嘱的退回按钮置灰逻辑
// 模拟勾选一条 dispensingStatus 为 DISPENSED 的数据
const dispensedRow = page.locator('tr:has-text("已发药")').first();
await dispensedRow.locator('input[type="checkbox"]').check();
const returnBtn = page.locator('button:has-text("退回")');
const isDisabled = await returnBtn.isDisabled();
// 预期:按钮应置灰不可点击
expect(isDisabled).toBe(true);
// 4. 若前端未置灰,验证点击拦截与提示文案
if (!isDisabled) {
await returnBtn.click();
await expect(page.locator('.el-message--error')).toContainText(
'该药品已由药房发放,请先执行退药处理,不可直接退回'
);
}
});
// ================= 新增 Bug #503 回归测试 =================
test('@bug503 @regression 住院发退药明细与汇总单触发时机同步校验', async ({ page }) => {
// 前置:确保字典配置为“需申请模式”(默认)
// 1. 护士登录并执行医嘱
await page.goto('/login');
await page.fill('input[name="username"]', 'wx');
await page.fill('input[name="password"]', '123456');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/.*dashboard.*/);
await page.click('text=医嘱执行');
await page.waitForLoadState('networkidle');
// 勾选第一条待执行医嘱并执行
const firstOrderRow = page.locator('.el-table__body-wrapper tbody tr').first();
await firstOrderRow.locator('input[type="checkbox"]').check();
await page.click('button:has-text("执行")');
});
// ================= 新增 Bug #550 回归测试 =================
test('@bug550 @regression 门诊检查申请项目选择交互优化:解耦勾选、名称提示与明细折叠', async ({ page }) => {
await page.goto('/login');
await page.fill('input[name="username"]', 'doctor');
await page.fill('input[name="password"]', '123456');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/.*dashboard.*/);
// 进入门诊医生站 -> 检查申请单
await page.click('text=门诊医生站');
await page.click('text=检查申请单');
await page.waitForLoadState('networkidle');
// 1. 验证联动解耦:勾选项目不应自动勾选检查方法
await page.click('text=彩超');
await page.click('.exam-item-checkbox:has-text("128线排")');
const methodCheckbox = page.locator('.method-checkbox').first();
await expect(methodCheckbox).not.toBeChecked();
// 2. 验证卡片显示名称截断与Tooltip提示无冗余“套餐”字样
const selectedCard = page.locator('.selected-card').first();
await expect(selectedCard.locator('.item-name')).toHaveText(/128线排/);
await expect(selectedCard.locator('.item-name')).not.toContainText('套餐');
// 悬停验证Tooltip完整名称
await selectedCard.locator('.item-name').hover();
await expect(page.locator('.el-tooltip__popper')).toBeVisible();
// 3. 验证结构化展示与折叠交互:默认收起,点击展开/收起
await expect(page.locator('.card-details')).not.toBeVisible();
await selectedCard.locator('.card-header').click();
await expect(page.locator('.card-details')).toBeVisible();
await selectedCard.locator('.card-header').click();
await expect(page.locator('.card-details')).not.toBeVisible();
});
});