import { test, expect } from '@playwright/test'; // 原有测试用例保持不变... test('基础登录流程', async ({ page }) => { await page.goto('/login'); await page.fill('input[name="username"]', 'nkhs1'); await page.fill('input[name="password"]', '123456'); await page.click('button[type="submit"]'); await expect(page.locator('.el-menu')).toBeVisible(); }); // ================= 新增 Bug #544 回归测试 ================= test('@bug544 @regression 智能分诊队列应显示完诊状态且支持历史查询', async ({ page }) => { await page.goto('/triage/queue'); // 1. 验证默认加载当天队列,且包含“完诊”状态患者 await expect(page.locator('.el-table__body tr')).toHaveCountGreaterThan(0); const completedTag = page.getByText('完诊'); await expect(completedTag).toBeVisible(); // 2. 验证历史队列查询入口存在且默认值为当天 const dateRangePicker = page.getByPlaceholder('开始日期'); await expect(dateRangePicker).toBeVisible(); await expect(page.getByPlaceholder('结束日期')).toBeVisible(); // 3. 模拟切换历史日期并查询 await dateRangePicker.click(); await page.getByRole('button', { name: '2026-05-17' }).click(); // 假设历史日期 await page.getByRole('button', { name: '查询' }).click(); // 4. 验证查询后表格刷新且无报错 await expect(page.locator('.el-loading-mask')).toHaveCount(0); await expect(page.locator('.el-table__body tr')).toHaveCountGreaterThan(0); }); // ================= 新增 Bug #574 回归测试 ================= test('@bug574 @regression 预约签到缴费成功后排班号源状态应流转为3', async ({ page }) => { // 1. 登录系统 await page.goto('/login'); await page.fill('input[name="username"]', 'admin'); await page.fill('input[name="password"]', '123456'); await page.click('button[type="submit"]'); await expect(page.locator('.el-menu')).toBeVisible(); // 2. 进入门诊挂号/预约管理页面 await page.goto('/outpatient/registration'); await expect(page.locator('.page-title')).toContainText('门诊挂号'); // 3. 拦截支付成功接口,验证后端返回及状态流转逻辑 let slotStatusUpdated = false; await page.route('**/api/order/pay/success', async (route) => { const response = await route.fetch(); const json = await response.json(); // 模拟业务成功响应 await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 200, msg: '缴费成功', data: { success: true } }) }); }); // 4. 触发缴费并验证状态 await page.click('button:has-text("缴费")'); await expect(page.locator('.el-message--success')).toBeVisible(); expect(slotStatusUpdated).toBe(true); }); // ================= 新增 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.locator('.el-menu')).toBeVisible(); // 2. 执行一条临时/长期医嘱(模拟床旁执行) await page.goto('/nurse/order-execution'); await page.click('button:has-text("执行")'); await expect(page.locator('.el-message--success')).toBeVisible(); // 3. 切换至药房【住院发退药】界面,验证“需申请模式”下明细单与汇总单均不可见 await page.goto('/pharmacy/inpatient-dispensing'); await page.click('text=发药明细单'); await expect(page.locator('.el-table__empty-text')).toBeVisible(); // 明细单应为空 await page.click('text=发药汇总单'); await expect(page.locator('.el-table__empty-text')).toBeVisible(); // 汇总单应为空 // 4. 返回护士站,执行【汇总发药申请】 await page.goto('/nurse/summary-dispensing'); await page.click('button:has-text("汇总发药申请")'); await expect(page.locator('.el-message--success')).toBeVisible(); // 5. 再次切换至药房界面,验证明细单与汇总单同步显示且数据一致 await page.goto('/pharmacy/inpatient-dispensing'); await page.click('text=发药明细单'); await expect(page.locator('.el-table__body tr')).toHaveCountGreaterThan(0); await page.click('text=发药汇总单'); await expect(page.locator('.el-table__body tr')).toHaveCountGreaterThan(0); });