Переглянути джерело

✅ test(admin): 优化用户管理E2E测试

- 移除多余的await关键字,修复expect断言语法
- 添加完整用户管理工作流测试,覆盖登录→创建→编辑→删除流程
- 新增边界条件测试,验证空搜索和特殊字符搜索场景
yourname 2 місяців тому
батько
коміт
ef3680defc
1 змінених файлів з 78 додано та 2 видалено
  1. 78 2
      tests/e2e/specs/admin/users.spec.ts

+ 78 - 2
tests/e2e/specs/admin/users.spec.ts

@@ -28,7 +28,7 @@ test.describe('用户管理 E2E 测试', () => {
 
     // 验证搜索结果包含admin用户
     const adminUser = await userManagementPage.getUserByUsername('admin');
-    await expect(adminUser).not.toBeNull();
+    expect(adminUser).not.toBeNull();
   });
 
   test('创建新用户', async ({ userManagementPage }) => {
@@ -70,7 +70,7 @@ test.describe('用户管理 E2E 测试', () => {
 
     // 验证用户信息已更新
     const userRow = await userManagementPage.getUserByUsername(testUsername);
-    await expect(userRow).not.toBeNull();
+    expect(userRow).not.toBeNull();
     await expect(userRow!).toContainText('更新后的昵称');
     await expect(userRow!).toContainText(`updated_${testUsername}@example.com`);
   });
@@ -147,4 +147,80 @@ test.describe('用户管理 E2E 测试', () => {
     await expect(userManagementPage.pageTitle).toBeVisible();
     await expect(userManagementPage.searchInput).toBeVisible();
   });
+
+  test('完整用户管理工作流 - 登录→创建→编辑→删除', async ({ adminLoginPage, userManagementPage, page }) => {
+    const testUsername = `workflow_${Date.now()}`;
+    const testPassword = 'Test123!@#';
+
+    // 1. 登录系统
+    await adminLoginPage.goto();
+    await adminLoginPage.login(testUsers.admin.username, testUsers.admin.password);
+
+    // 验证登录成功,跳转到Dashboard
+    await expect(page).toHaveURL(/.*dashboard/);
+    await expect(page.locator('text=仪表盘')).toBeVisible();
+
+    // 2. 导航到用户管理页面
+    await userManagementPage.goto();
+    await userManagementPage.expectToBeVisible();
+
+    // 3. 创建新用户
+    await userManagementPage.createUser({
+      username: testUsername,
+      password: testPassword,
+      nickname: '工作流测试用户',
+      email: `${testUsername}@example.com`,
+      phone: '13800138000',
+      name: '工作流测试'
+    });
+
+    // 验证用户创建成功
+    await userManagementPage.expectUserExists(testUsername);
+
+    // 4. 搜索并编辑用户
+    await userManagementPage.searchUsers(testUsername);
+    await userManagementPage.editUser(testUsername, {
+      nickname: '更新后的工作流用户',
+      email: `updated_${testUsername}@example.com`,
+      phone: '13900139000',
+      name: '更新工作流测试'
+    });
+
+    // 验证用户信息已更新
+    const userRow = await userManagementPage.getUserByUsername(testUsername);
+    await expect(userRow).toBeVisible();
+    await expect(userRow).toContainText('更新后的工作流用户');
+    await expect(userRow).toContainText(`updated_${testUsername}@example.com`);
+
+    // 5. 删除用户
+    await userManagementPage.deleteUser(testUsername);
+
+    // 验证用户已被删除
+    await userManagementPage.expectUserNotExists(testUsername);
+
+    // 6. 返回Dashboard验证状态
+    await page.goto('/admin/dashboard');
+    await expect(page.locator('text=仪表盘')).toBeVisible();
+    await expect(page.locator('text=欢迎回来')).toBeVisible();
+  });
+
+  test('边界条件测试 - 批量操作和错误处理', async ({ userManagementPage }) => {
+    // 测试空搜索
+    await userManagementPage.searchUsers('nonexistentuser12345');
+    const emptyCount = await userManagementPage.getUserCount();
+    expect(emptyCount).toBe(0);
+
+    // 验证空状态提示
+    await expect(userManagementPage.page.locator('text=暂无数据')).toBeVisible();
+
+    // 测试特殊字符搜索
+    await userManagementPage.searchUsers('@#$%');
+    const specialCharCount = await userManagementPage.getUserCount();
+    expect(specialCharCount).toBe(0);
+
+    // 清除搜索
+    await userManagementPage.searchUsers('');
+    const normalCount = await userManagementPage.getUserCount();
+    expect(normalCount).toBeGreaterThan(0);
+  });
 });