- 重写LoginPage,修复登录状态清除和跳转等待逻辑 - 新增workflow-full.spec.ts覆盖20个核心页面 - 修复login.spec.ts密码可见性测试placeholder不匹配 - 所有导航超时增至60秒,适配重页面加载 - 已验证通过: 登录4/4 + 全流程20/20 = 24/24
146 lines
6.4 KiB
TypeScript
146 lines
6.4 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.doctor1.username, TEST_USERS.doctor1.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.tcmTraditional);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/tcm-traditional.png' });
|
|
});
|
|
|
|
test('医生-体质辨识页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.doctor1.username, TEST_USERS.doctor1.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.tcmConstitution);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/tcm-constitution.png' });
|
|
});
|
|
});
|
|
|
|
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.tech.username, TEST_USERS.tech.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.qualityEnhanced);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/quality-enhanced.png' });
|
|
});
|
|
|
|
test('医技-质量统计页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.tech.username, TEST_USERS.tech.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.qualityStatistics);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/quality-statistics.png' });
|
|
});
|
|
});
|
|
|
|
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.doctor1.username, TEST_USERS.doctor1.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.consultationApplication);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/consultation-application.png' });
|
|
});
|
|
|
|
test('专家-会诊确认页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.consultant.username, TEST_USERS.consultant.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.consultationConfirmation);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/consultation-confirmation.png' });
|
|
});
|
|
});
|
|
|
|
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.pharmacist.username, TEST_USERS.pharmacist.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.rationalDrugStatistics);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/rational-drug.png' });
|
|
});
|
|
|
|
test('药师-药品追溯页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.pharmacist.username, TEST_USERS.pharmacist.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.drugTrace);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/drug-trace.png' });
|
|
});
|
|
});
|
|
|
|
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.admin.username, TEST_USERS.admin.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.dashboard);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/dashboard.png' });
|
|
});
|
|
|
|
test('管理员-用户管理页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.admin.username, TEST_USERS.admin.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.systemUser);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/system-user.png' });
|
|
});
|
|
|
|
test('管理员-角色管理页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.admin.username, TEST_USERS.admin.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.systemRole);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/system-role.png' });
|
|
});
|
|
|
|
test('管理员-菜单管理页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.admin.username, TEST_USERS.admin.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.systemMenu);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/system-menu.png' });
|
|
});
|
|
|
|
test('管理员-数据字典页面加载', async ({ page }) => {
|
|
await loginPage.login(TEST_USERS.admin.username, TEST_USERS.admin.password);
|
|
await loginPage.expectLoginSuccess();
|
|
await page.goto(TEST_URLS.dataDictionary);
|
|
await page.waitForLoadState('networkidle');
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
await page.screenshot({ path: 'tests/e2e/report/data-dictionary.png' });
|
|
});
|
|
});
|