feat: extend operation log service and repository with pagination support

This commit is contained in:
张翔
2026-03-18 22:34:43 +08:00
parent 157aee2ffc
commit 8a0cd64829
81 changed files with 8842 additions and 509 deletions
+39 -25
View File
@@ -1,50 +1,64 @@
import { test, expect } from '@playwright/test';
import { LoginPage } from './pages/LoginPage';
import { DashboardPage } from './pages/DashboardPage';
test.describe('用户认证 E2E 测试', () => {
let loginPage: LoginPage;
let dashboardPage: DashboardPage;
test.beforeEach(async ({ page }) => {
await page.goto('/login');
loginPage = new LoginPage(page);
dashboardPage = new DashboardPage(page);
await loginPage.goto();
});
test('成功登录流程', async ({ page }) => {
await expect(page).toHaveTitle(/登录/);
await page.fill('input[placeholder*="用户名"]', 'admin');
await page.fill('input[type="password"]', 'admin123');
await loginPage.login('admin', 'password');
await page.click('button:has-text("登录")');
await page.waitForURL('**/dashboard');
await expect(page.locator('.user-info')).toContainText('admin');
await expect(page).toHaveURL(/.*dashboard/);
const username = await dashboardPage.getUsername();
expect(username).toContain('admin');
});
test('登录失败 - 无效凭证', async ({ page }) => {
await page.fill('input[placeholder*="用户名"]', 'invalid');
await page.fill('input[type="password"]', 'invalid');
await loginPage.login('invalid', 'invalid');
await page.click('button:has-text("登录")');
await expect(page.locator('.error-message')).toBeVisible();
await expect(page.locator('.error-message')).toContainText('用户名或密码错误');
const errorMessage = await loginPage.getErrorMessage();
expect(errorMessage).toContain('用户名或密码错误');
});
test('登录失败 - 缺少必填字段', async ({ page }) => {
await page.fill('input[name="username"]', 'admin');
await loginPage.usernameInput.fill('admin');
await loginPage.loginButton.click();
await page.click('button[type="submit"]');
await expect(page.locator('.error-message')).toBeVisible();
const errorMessage = await loginPage.getErrorMessage();
expect(errorMessage).toBeTruthy();
});
test('登出流程', async ({ page }) => {
await page.fill('input[name="username"]', 'admin');
await page.fill('input[name="password"]', 'admin123');
await page.click('button[type="submit"]');
await loginPage.login('admin', 'password');
await page.waitForURL('**/');
await loginPage.logout();
await page.click('text=登出');
await page.waitForURL('**/login');
await expect(page).toHaveURL(/.*login/);
await expect(page).toHaveTitle(/登录/);
});
});
test('登录后可以访问主要菜单', async ({ page }) => {
await loginPage.login('admin', 'password');
await dashboardPage.navigateToUserManagement();
await expect(page).toHaveURL(/.*users/);
await dashboardPage.navigateToRoleManagement();
await expect(page).toHaveURL(/.*roles/);
await dashboardPage.navigateToMenuManagement();
await expect(page).toHaveURL(/.*menus/);
await dashboardPage.navigateToSystemConfig();
await expect(page).toHaveURL(/.*sysconfig/);
});
});