feat: implement core UAT test scenarios
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { Page, Locator } from '@playwright/test';
|
||||
import { UserManagementPage as BaseUserManagementPage } from '../../../novalon-manage-web/e2e/pages/UserManagementPage';
|
||||
|
||||
export class UserManagementPage extends BaseUserManagementPage {
|
||||
readonly logoutButton: Locator;
|
||||
|
||||
constructor(page: Page) {
|
||||
super(page);
|
||||
this.logoutButton = page.getByRole('button', { name: '退出登录' }).or(page.locator('.logout-button'));
|
||||
}
|
||||
|
||||
async navigateTo() {
|
||||
await this.goto();
|
||||
}
|
||||
|
||||
async logout() {
|
||||
await this.logoutButton.click();
|
||||
await this.page.waitForURL(/.*login/);
|
||||
}
|
||||
|
||||
async approveUser(username: string) {
|
||||
await this.search(username);
|
||||
await this.page.waitForTimeout(500);
|
||||
|
||||
const row = this.table.locator(`tbody tr:has-text("${username}")`);
|
||||
const approveButton = row.getByRole('button', { name: '审批' }).or(row.locator('.approve-button'));
|
||||
|
||||
if (await approveButton.count() > 0) {
|
||||
await approveButton.click();
|
||||
await this.page.waitForTimeout(500);
|
||||
await this.page.getByRole('button', { name: '确定' }).click();
|
||||
}
|
||||
}
|
||||
|
||||
async createUser(userData: {
|
||||
username: string;
|
||||
nickname?: string;
|
||||
email: string;
|
||||
phone?: string;
|
||||
department?: string;
|
||||
manager?: string;
|
||||
password: string;
|
||||
confirmPassword?: string;
|
||||
}) {
|
||||
await this.clickCreateUser();
|
||||
await this.fillUserForm(userData);
|
||||
await this.submitForm();
|
||||
}
|
||||
|
||||
async updateUser(userId: number, userData: {
|
||||
nickname?: string;
|
||||
email?: string;
|
||||
phone?: string;
|
||||
department?: string;
|
||||
}) {
|
||||
await this.editUser(userId);
|
||||
|
||||
if (userData.nickname) {
|
||||
await this.page.locator('.el-dialog').locator('input').nth(1).fill(userData.nickname);
|
||||
}
|
||||
if (userData.email) {
|
||||
await this.page.locator('.el-dialog').locator('input').nth(3).fill(userData.email);
|
||||
}
|
||||
|
||||
await this.submitForm();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user