Files
his/tests/e2e/specs/bug-regression.spec.ts
2026-05-26 21:55:42 +08:00

94 lines
4.3 KiB
TypeScript
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('Bug #589 Regression: 出院带药医嘱类型与交互', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/login');
await page.fill('input[name="username"]', 'doctor1');
await page.fill('input[name="password"]', '123456');
await page.click('button[type="submit"]');
await page.waitForURL(/\/inpatient/);
await page.click('.patient-list-item:first-child');
await page.click('text=临床医嘱');
await page.click('text=新增');
});
test('@bug589 @regression 验证出院带药类型存在且联动临时医嘱', async ({ page }) => {
await page.click('.order-type-select .el-input__inner');
await expect(page.locator('.el-select-dropdown__item:has-text("出院带药")')).toBeVisible();
await page.click('.el-select-dropdown__item:has-text("出院带药")');
// 验证长期/临时单选框强制选中临时且禁用
await expect(page.locator('input[name="orderFrequency"][value="临时"]')).toBeChecked();
await expect(page.locator('input[name="orderFrequency"][value="长期"]')).toBeDisabled();
// 验证专属面板展开
await expect(page.locator('.discharge-med-panel')).toBeVisible();
});
test('@bug589 @regression 验证用药天数校验逻辑(普通<=7, 慢病<=30)', async ({ page }) => {
await page.click('.order-type-select .el-input__inner');
await page.click('.el-select-dropdown__item:has-text("出院带药")');
// 模拟输入普通药天数8
await page.fill('input[name="medicationDays"]', '8');
await page.click('.discharge-med-panel .el-button--primary');
await expect(page.locator('.el-message--error')).toContainText('非慢性病出院带药天数不得超过7天');
// 模拟慢病药天数31
await page.click('label:has-text("慢性病")');
await page.fill('input[name="medicationDays"]', '31');
await page.click('.discharge-med-panel .el-button--primary');
await expect(page.locator('.el-message--error')).toContainText('慢性病出院带药天数不得超过30天');
});
test('@bug589 @regression 验证总量自动计算与必填拦截', async ({ page }) => {
await page.click('.order-type-select .el-input__inner');
await page.click('.el-select-dropdown__item:has-text("出院带药")');
await page.fill('input[name="singleDosage"]', '2');
await page.fill('input[name="frequency"]', '3');
await page.fill('input[name="medicationDays"]', '5');
// 验证自动计算: 2 * 3 * 5 = 30
await expect(page.locator('input[name="totalAmount"]')).toHaveValue('30');
// 清空总量触发必填校验
await page.fill('input[name="totalAmount"]', '');
await page.click('.discharge-med-panel .el-button--primary');
await expect(page.locator('.el-message--error')).toContainText('总量为必填项');
});
});
test.describe('Bug #587 Regression: 医嘱开始时间字段与校验', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/login');
await page.fill('input[name="username"]', 'doctor1');
await page.fill('input[name="password"]', '123456');
await page.click('button[type="submit"]');
await page.waitForURL(/\/inpatient/);
await page.click('.patient-list-item:first-child');
await page.click('text=临床医嘱');
await page.click('text=新增');
});
test('@bug587 @regression 验证新增面板包含开始时间且默认当前时间', async ({ page }) => {
// 验证主表单中存在开始时间选择器
const startTimePicker = page.locator('input[name="startTime"]');
await expect(startTimePicker).toBeVisible();
// 验证默认值非空且符合 YYYY-MM-DD HH:mm:ss 格式
const defaultValue = await startTimePicker.inputValue();
expect(defaultValue).toMatch(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/);
});
test('@bug587 @regression 验证开始时间早于入院时间拦截', async ({ page }) => {
// 模拟输入早于入院时间(假设入院时间为 2026-05-20
await page.click('input[name="startTime"]');
await page.fill('input[name="startTime"]', '2026-05-19 08:00:00');
// 触发保存/确定
await page.click('.advice-form-container .el-button--primary');
await expect(page.locator('.el-message--error')).toContainText('医嘱开始时间不能早于患者入院时间');
});
});