a05368d306
fix(表单验证): 为用户、角色和菜单管理添加表单验证规则 test(e2e): 增加页面导航超时时间和网络空闲等待 refactor(数据库): 移除Flyway配置并更新数据源配置
131 lines
5.0 KiB
TypeScript
131 lines
5.0 KiB
TypeScript
import { Page, Locator } from '@playwright/test';
|
|
|
|
export class DashboardPage {
|
|
readonly page: Page;
|
|
readonly userInfo: Locator;
|
|
readonly userManagementLink: Locator;
|
|
readonly roleManagementLink: Locator;
|
|
readonly menuManagementLink: Locator;
|
|
readonly systemConfigLink: Locator;
|
|
readonly noticeManagementLink: Locator;
|
|
readonly fileManagementLink: Locator;
|
|
readonly operationLogLink: Locator;
|
|
readonly loginLogLink: Locator;
|
|
readonly dictionaryLink: Locator;
|
|
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.userInfo = page.locator('.el-avatar');
|
|
this.userManagementLink = page.locator('.el-menu-item:has-text("用户管理")');
|
|
this.roleManagementLink = page.locator('.el-menu-item:has-text("角色管理")');
|
|
this.menuManagementLink = page.locator('.el-menu-item:has-text("菜单管理")');
|
|
this.systemConfigLink = page.locator('.el-menu-item:has-text("参数配置")');
|
|
this.noticeManagementLink = page.locator('.el-menu-item:has-text("通知公告")');
|
|
this.fileManagementLink = page.locator('.el-menu-item:has-text("文件列表")');
|
|
this.operationLogLink = page.locator('.el-menu-item:has-text("操作日志")');
|
|
this.loginLogLink = page.locator('.el-menu-item:has-text("登录日志")');
|
|
this.dictionaryLink = page.locator('.el-menu-item:has-text("字典管理")');
|
|
}
|
|
|
|
async goto() {
|
|
await this.page.goto('/dashboard');
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToUserManagement() {
|
|
const systemMenu = this.page.locator('.el-sub-menu__title:has-text("系统管理")');
|
|
await systemMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.userManagementLink.click();
|
|
await this.page.waitForURL('**/users', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToRoleManagement() {
|
|
const systemMenu = this.page.locator('.el-sub-menu__title:has-text("系统管理")');
|
|
await systemMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.roleManagementLink.click();
|
|
await this.page.waitForURL('**/roles', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToMenuManagement() {
|
|
const systemMenu = this.page.locator('.el-sub-menu__title:has-text("系统管理")');
|
|
await systemMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.menuManagementLink.click();
|
|
await this.page.waitForURL('**/menus', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToSystemConfig() {
|
|
const configMenu = this.page.locator('.el-sub-menu__title:has-text("系统配置")');
|
|
await configMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.systemConfigLink.click();
|
|
await this.page.waitForURL('**/sys/config', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToNoticeManagement() {
|
|
const notifyMenu = this.page.locator('.el-sub-menu__title:has-text("通知中心")');
|
|
await notifyMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.noticeManagementLink.click();
|
|
await this.page.waitForURL('**/notice', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToFileManagement() {
|
|
const fileMenu = this.page.locator('.el-sub-menu__title:has-text("文件管理")');
|
|
await fileMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.fileManagementLink.click();
|
|
await this.page.waitForURL('**/files', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToAudit() {
|
|
const auditMenu = this.page.locator('.el-sub-menu__title:has-text("审计中心")');
|
|
await auditMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
}
|
|
|
|
async navigateToOperationLog() {
|
|
await this.navigateToAudit();
|
|
await this.operationLogLink.click();
|
|
await this.page.waitForURL('**/oplog', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToLoginLog() {
|
|
await this.navigateToAudit();
|
|
await this.loginLogLink.click();
|
|
await this.page.waitForURL('**/loginlog', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToNotification() {
|
|
const notifyMenu = this.page.locator('.el-sub-menu__title:has-text("通知中心")');
|
|
await notifyMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.noticeManagementLink.click();
|
|
await this.page.waitForURL('**/notification', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async navigateToDictionary() {
|
|
const configMenu = this.page.locator('.el-sub-menu__title:has-text("系统配置")');
|
|
await configMenu.click();
|
|
await this.page.waitForTimeout(1000);
|
|
await this.dictionaryLink.click();
|
|
await this.page.waitForURL('**/dict', { timeout: 30000 });
|
|
await this.page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
async getUsername(): Promise<string | null> {
|
|
return await this.userInfo.textContent();
|
|
}
|
|
}
|