Files
everything-is-suitable/everything-is-suitable-test/e2e/operationLog-mock.spec.ts
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

105 lines
4.9 KiB
TypeScript

import { test, expect } from './test-fixtures';
test.describe('操作日志 - 完全Mock模式', () => {
test.beforeEach(async ({ page, mockManager }) => {
mockManager.enableMock();
mockManager.configureMock({
mode: 'full',
delay: 100
});
mockManager.presetTestData({
operationLogs: [
{ id: 1, userId: 1, username: 'admin', module: '用户管理', operation: '查询', method: 'GET', path: '/sys/user/query', params: '{"page":1,"pageSize":10}', ip: '192.168.1.100', status: 'success', errorMsg: undefined, duration: 120, createdAt: '2024-01-01T10:00:00.000Z' },
{ id: 2, userId: 1, username: 'admin', module: '用户管理', operation: '新增', method: 'POST', path: '/sys/user/create', params: '{"username":"testuser"}', ip: '192.168.1.100', status: 'success', errorMsg: undefined, duration: 250, createdAt: '2024-01-01T11:00:00.000Z' },
{ id: 3, userId: 1, username: 'admin', module: '角色管理', operation: '修改', method: 'PUT', path: '/sys/role/update', params: '{"roleId":1,"name":"更新后的角色"}', ip: '192.168.1.100', status: 'success', errorMsg: undefined, duration: 180, createdAt: '2024-01-01T12:00:00.000Z' },
{ id: 4, userId: 2, username: 'user1', module: '菜单管理', operation: '删除', method: 'DELETE', path: '/sys/menu/delete', params: '{"menuId":5}', ip: '192.168.1.101', status: 'error', errorMsg: '操作失败:权限不足或参数错误', duration: 80, createdAt: '2024-01-01T13:00:00.000Z' },
{ id: 5, userId: 1, username: 'admin', module: '操作日志', operation: '导出', method: 'GET', path: '/sys/operationLog/export', params: '{"startDate":"2024-01-01","endDate":"2024-01-31"}', ip: '192.168.1.100', status: 'success', errorMsg: undefined, duration: 350, createdAt: '2024-01-01T14:00:00.000Z' }
]
});
await page.goto('/');
await page.fill('input[placeholder="请输入用户名"]', 'admin');
await page.fill('input[placeholder="请输入密码"]', 'admin123');
await page.click('button[type="submit"]');
await page.waitForURL(/.*dashboard/, { timeout: 10000 });
});
test.afterEach(async ({ mockManager }) => {
mockManager.clearPresets();
mockManager.disableMock();
});
test('应该显示操作日志列表', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
await expect(page.locator('.ant-table')).toBeVisible();
await expect(page.locator('text=用户管理')).toBeVisible();
await expect(page.locator('text=角色管理')).toBeVisible();
await expect(page.locator('text=菜单管理')).toBeVisible();
await expect(page.locator('text=操作日志')).toBeVisible();
});
test('应该能够按用户名搜索', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
await page.fill('input[placeholder="请输入用户名"]', 'admin');
await page.click('button:has-text("查询")');
await expect(page.locator('text=admin')).toBeVisible();
});
test('应该能够按模块搜索', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
await page.click('.ant-select-selector');
await page.click('text=用户管理');
await page.click('button:has-text("查询")');
await expect(page.locator('text=用户管理')).toBeVisible();
});
test('应该能够按日期范围搜索', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
await page.click('.ant-picker');
await page.click('text=今天');
await page.click('button:has-text("查询")');
await expect(page.locator('.ant-table')).toBeVisible();
});
test('应该能够导出操作日志', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
const downloadPromise = page.waitForEvent('download');
await page.click('button:has-text("导出")');
const download = await downloadPromise;
expect(download.suggestedFilename()).toContain('.xlsx');
});
test('应该能够查看日志详情', async ({ page }) => {
await page.goto('/operationLogs');
await page.waitForLoadState('networkidle');
await page.click('button:has-text("详情"):first');
await expect(page.locator('.ant-modal')).toBeVisible();
await expect(page.locator('text=用户名')).toBeVisible();
await expect(page.locator('text=模块')).toBeVisible();
await expect(page.locator('text=操作')).toBeVisible();
await expect(page.locator('text=请求方法')).toBeVisible();
await expect(page.locator('text=请求路径')).toBeVisible();
await expect(page.locator('text=请求参数')).toBeVisible();
await expect(page.locator('text=IP地址')).toBeVisible();
await expect(page.locator('text=状态')).toBeVisible();
await expect(page.locator('text=执行时长')).toBeVisible();
});
});