- 重写LoginPage,修复登录状态清除和跳转等待逻辑 - 新增workflow-full.spec.ts覆盖20个核心页面 - 修复login.spec.ts密码可见性测试placeholder不匹配 - 所有导航超时增至60秒,适配重页面加载 - 已验证通过: 登录4/4 + 全流程20/20 = 24/24
67 lines
2.8 KiB
TypeScript
67 lines
2.8 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { LoginPage } from '../pages/LoginPage';
|
|
import { TEST_USERS, TEST_URLS } from '../utils/test-data';
|
|
|
|
test.describe('🏥 门诊就诊全流程 E2E', () => {
|
|
let loginPage: LoginPage;
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
loginPage = new LoginPage(page);
|
|
await loginPage.goto();
|
|
});
|
|
|
|
test('收费员-挂号初始化页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.finance.username, TEST_USERS.finance.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.chargeRegistration);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/outpatient-registration.png' });
|
|
});
|
|
|
|
test('收费员-收费页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.finance.username, TEST_USERS.finance.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.chargeDetail);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/outpatient-charge.png' });
|
|
});
|
|
|
|
test('收费员-退费页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.finance.username, TEST_USERS.finance.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.chargeRefund);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/outpatient-refund.png' });
|
|
});
|
|
|
|
test('医生-门诊医生站页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.doctor1.username, TEST_USERS.doctor1.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.doctorStation);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/doctor-station.png' });
|
|
});
|
|
|
|
test('医技-检验检查页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.tech.username, TEST_USERS.tech.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.inspection);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/inspection.png' });
|
|
});
|
|
|
|
test('药师-药品库存预警页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.pharmacist.username, TEST_USERS.pharmacist.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.pharmacyStockAlert);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/pharmacy-stock.png' });
|
|
});
|
|
});
|