import { test, expect } from '@playwright/test'; import { RoleFactory } from '../../roles/role-factory'; import { createAuthenticatedPage } from '../../shared/auth-helper'; import { getTestDataManager } from '../../shared/test-data-manager'; test.describe('管理员创建用户测试', () => { test.beforeEach(async ({ page, context }) => { await createAuthenticatedPage(page, context, 'admin'); getTestDataManager().setPage(page); }); test.afterEach(async () => { await getTestDataManager().cleanup('user'); }); test('管理员可以创建新用户', async ({ page }) => { await page.goto('/users'); await page.click('button:has-text("新增")'); const timestamp = Date.now(); const userData = { username: `testuser_${timestamp}`, password: 'Test@123', email: `testuser_${timestamp}@test.com`, phone: '13800138000', nickname: '测试用户', }; await page.fill('input[placeholder*="用户名"]', userData.username); await page.fill('input[placeholder*="密码"]', userData.password); await page.fill('input[placeholder*="邮箱"]', userData.email); await page.fill('input[placeholder*="手机号"]', userData.phone); await page.fill('input[placeholder*="昵称"]', userData.nickname); await page.click('button:has-text("确定")'); const successMessage = page.locator('text=/创建成功|操作成功/i'); await expect(successMessage).toBeVisible({ timeout: 10000 }); const createdUser = page.locator(`text=${userData.username}`); await expect(createdUser).toBeVisible(); }); test('管理员可以编辑用户信息', async ({ page }) => { await page.goto('/users'); const firstEditButton = page.locator('button:has-text("编辑")').first(); await firstEditButton.click(); const nicknameInput = page.locator('input[placeholder*="昵称"]'); await nicknameInput.fill('更新后的昵称'); await page.click('button:has-text("确定")'); const successMessage = page.locator('text=/更新成功|操作成功/i'); await expect(successMessage).toBeVisible({ timeout: 10000 }); }); test('管理员可以删除用户', async ({ page }) => { await page.goto('/users'); const firstDeleteButton = page.locator('button:has-text("删除")').first(); await firstDeleteButton.click(); const confirmButton = page.locator('button:has-text("确定")'); await confirmButton.click(); const successMessage = page.locator('text=/删除成功|操作成功/i'); await expect(successMessage).toBeVisible({ timeout: 10000 }); }); test('创建用户时用户名重复验证', async ({ page }) => { await page.goto('/users'); await page.click('button:has-text("新增")'); await page.fill('input[placeholder*="用户名"]', 'admin'); await page.fill('input[placeholder*="密码"]', 'Test@123'); await page.fill('input[placeholder*="邮箱"]', 'admin@test.com'); await page.click('button:has-text("确定")'); const errorMessage = page.locator('text=/用户名已存在|用户名重复/i'); await expect(errorMessage).toBeVisible({ timeout: 5000 }); }); test('创建用户时邮箱格式验证', async ({ page }) => { await page.goto('/users'); await page.click('button:has-text("新增")'); await page.fill('input[placeholder*="用户名"]', 'testuser'); await page.fill('input[placeholder*="密码"]', 'Test@123'); await page.fill('input[placeholder*="邮箱"]', 'invalid-email'); await page.click('button:has-text("确定")'); const errorMessage = page.locator('text=/邮箱格式不正确|请输入正确的邮箱/i'); await expect(errorMessage).toBeVisible({ timeout: 5000 }); }); });