feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
import { test as base, expect, Page } from '@playwright/test';
|
||||
import { LoginPage } from '../pages/login-page';
|
||||
import { DashboardPage } from '../pages/dashboard-page';
|
||||
import { UserManagementPage } from '../pages/user-management-page';
|
||||
import { testConfig } from '../core/test-config';
|
||||
|
||||
export type UATFixtures = {
|
||||
uatLogin: LoginPage;
|
||||
uatDashboard: DashboardPage;
|
||||
uatUserManagement: UserManagementPage;
|
||||
};
|
||||
|
||||
export const test = base.extend<UATFixtures>({
|
||||
uatLogin: async ({ page }, use) => {
|
||||
const loginPage = new LoginPage(page);
|
||||
await use(loginPage);
|
||||
},
|
||||
uatDashboard: async ({ page }, use) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await use(dashboardPage);
|
||||
},
|
||||
uatUserManagement: async ({ page }, use) => {
|
||||
const userManagementPage = new UserManagementPage(page);
|
||||
await use(userManagementPage);
|
||||
}
|
||||
});
|
||||
|
||||
test.describe.configure({
|
||||
mode: 'serial',
|
||||
timeout: 60000
|
||||
});
|
||||
|
||||
export const UATTestSteps = {
|
||||
async completeUserRegistrationFlow(page: Page, username: string, password: string) {
|
||||
const loginPage = new LoginPage(page);
|
||||
|
||||
await test.step('用户打开登录页面', async () => {
|
||||
await page.goto(testConfig.getBaseURL());
|
||||
await expect(page).toHaveTitle(/登录/);
|
||||
});
|
||||
|
||||
await test.step('用户输入用户名和密码', async () => {
|
||||
await loginPage.login(username, password);
|
||||
});
|
||||
|
||||
await test.step('验证用户成功登录并跳转到仪表盘', async () => {
|
||||
await expect(page).toHaveURL(/.*dashboard/);
|
||||
});
|
||||
},
|
||||
|
||||
async completeUserManagementFlow(page: Page, username: string, email: string, role: string) {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
const userManagementPage = new UserManagementPage(page);
|
||||
|
||||
await test.step('用户导航到用户管理页面', async () => {
|
||||
await dashboardPage.navigateToUserManagement();
|
||||
await expect(page).toHaveURL(/.*users/);
|
||||
});
|
||||
|
||||
await test.step('用户点击新增用户按钮', async () => {
|
||||
await userManagementPage.clickAddUser();
|
||||
});
|
||||
|
||||
await test.step('用户填写用户信息', async () => {
|
||||
await userManagementPage.fillUserForm({
|
||||
username,
|
||||
email,
|
||||
password: 'Test@123456',
|
||||
confirmPassword: 'Test@123456',
|
||||
role,
|
||||
status: 'ACTIVE'
|
||||
});
|
||||
});
|
||||
|
||||
await test.step('用户提交表单', async () => {
|
||||
await userManagementPage.submitUserForm();
|
||||
});
|
||||
|
||||
await test.step('验证用户创建成功', async () => {
|
||||
await expect(page.locator('.ant-message-success')).toBeVisible();
|
||||
});
|
||||
},
|
||||
|
||||
async completeAlmanacQueryFlow(page: Page, date: string) {
|
||||
await test.step('用户打开黄历查询页面', async () => {
|
||||
await page.goto(`${testConfig.getBaseURL()}/almanac`);
|
||||
});
|
||||
|
||||
await test.step('用户选择日期', async () => {
|
||||
await page.fill('[data-testid="date-picker"]', date);
|
||||
});
|
||||
|
||||
await test.step('用户点击查询按钮', async () => {
|
||||
await page.click('[data-testid="query-button"]');
|
||||
});
|
||||
|
||||
await test.step('验证黄历信息显示', async () => {
|
||||
await expect(page.locator('[data-testid="almanac-result"]')).toBeVisible();
|
||||
await expect(page.locator('[data-testid="suitable-activities"]')).toBeVisible();
|
||||
await expect(page.locator('[data-testid="unsuitable-activities"]')).toBeVisible();
|
||||
});
|
||||
},
|
||||
|
||||
async completeFortuneAnalysisFlow(page: Page) {
|
||||
await test.step('用户打开运势分析页面', async () => {
|
||||
await page.goto(`${testConfig.getBaseURL()}/fortune`);
|
||||
});
|
||||
|
||||
await test.step('用户查看每日运势', async () => {
|
||||
await expect(page.locator('[data-testid="daily-fortune"]')).toBeVisible();
|
||||
});
|
||||
|
||||
await test.step('用户查看每月运势', async () => {
|
||||
await page.click('[data-testid="monthly-fortune-tab"]');
|
||||
await expect(page.locator('[data-testid="monthly-fortune"]')).toBeVisible();
|
||||
});
|
||||
|
||||
await test.step('用户查看每年运势', async () => {
|
||||
await page.click('[data-testid="yearly-fortune-tab"]');
|
||||
await expect(page.locator('[data-testid="yearly-fortune"]')).toBeVisible();
|
||||
});
|
||||
},
|
||||
|
||||
async completeZiweiChartGenerationFlow(page: Page, birthDate: string, birthTime: string) {
|
||||
await test.step('用户打开紫微斗数页面', async () => {
|
||||
await page.goto(`${testConfig.getBaseURL()}/ziwei`);
|
||||
});
|
||||
|
||||
await test.step('用户输入出生日期和时间', async () => {
|
||||
await page.fill('[data-testid="birth-date"]', birthDate);
|
||||
await page.fill('[data-testid="birth-time"]', birthTime);
|
||||
});
|
||||
|
||||
await test.step('用户选择性别', async () => {
|
||||
await page.click('[data-testid="gender-male"]');
|
||||
});
|
||||
|
||||
await test.step('用户点击生成命盘按钮', async () => {
|
||||
await page.click('[data-testid="generate-chart-button"]');
|
||||
});
|
||||
|
||||
await test.step('验证命盘生成成功', async () => {
|
||||
await expect(page.locator('[data-testid="ziwei-chart"]')).toBeVisible();
|
||||
await expect(page.locator('[data-testid="palace-grid"]')).toBeVisible();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const UATAssertions = {
|
||||
assertPageTitle(page: Page, expectedTitle: string) {
|
||||
return expect(page).toHaveTitle(new RegExp(expectedTitle));
|
||||
},
|
||||
|
||||
assertElementVisible(page: Page, selector: string) {
|
||||
return expect(page.locator(selector)).toBeVisible();
|
||||
},
|
||||
|
||||
assertElementText(page: Page, selector: string, expectedText: string) {
|
||||
return expect(page.locator(selector)).toHaveText(expectedText);
|
||||
},
|
||||
|
||||
assertSuccessMessage(page: Page, message: string) {
|
||||
return expect(page.locator('.ant-message-success')).toContainText(message);
|
||||
},
|
||||
|
||||
assertErrorMessage(page: Page, message: string) {
|
||||
return expect(page.locator('.ant-message-error')).toContainText(message);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user