Story 12.1: 用户管理 Page Object
Status: ready-for-dev
Story
作为测试开发者,
我想要创建或增强用户管理的 Page Object,
以便组织用户管理相关的页面元素和操作,为后续的用户管理测试提供基础。
Acceptance Criteria
AC1: 创建或增强用户管理 Page Object 文件
- 文件位置:web/tests/e2e/pages/admin/user-management.page.ts
- 导出 UserManagementPage 类
- 继承 Epic 11 的成熟 Page Object 模式
AC2: 实现列表页面选择器和操作方法
- 页面标题、创建按钮、搜索输入、搜索按钮
- 用户表格、编辑按钮、删除按钮
- goto(), expectToBeVisible(), getUserCount(), getUserByUsername(), userExists() 方法
AC3: 实现创建用户对话框的选择器和操作方法
- createUser() 方法:填写用户表单并提交
- 支持字段:用户名、密码、昵称、邮箱、手机号、真实姓名
- 支持用户类型:EMPLOYER(需关联公司)、TALENT(需关联残疾人)、ADMIN
- 使用 TIMEOUTS 常量
AC4: 实现编辑用户对话框的选择器和操作方法
- editUser() 方法:编辑用户信息
- 支持编辑字段:昵称、邮箱、手机号、真实姓名
AC5: 实现删除功能(API 直接删除)
- 使用 API 直接删除策略(避免 UI 不稳定性)
- 参考 Epic 11 的模式
AC6: 实现表单填写和提交方法
- fillUserForm() 辅助方法
- 处理用户类型选择和关联
AC7: 实现搜索和验证方法
- searchUsers(), expectUserExists(), expectUserNotExists() 方法
AC8: 代码质量标准
- 使用 TIMEOUTS 常量
- 遵循 Epic 11 Page Object 模式
- TypeScript 严格类型检查
Tasks / Subtasks
[ ] 任务 1: 分析现有 UserManagementPage 并确定改进方向 (AC: #1, #8)
[ ] 任务 2: 实现列表页面选择器和基础方法 (AC: #2)
[ ] 任务 3: 实现创建用户对话框 (AC: #3, #6)
[ ] 任务 4: 实现编辑用户对话框 (AC: #4, #6)
[ ] 任务 5: 实现 API 删除方法 (AC: #5)
[ ] 任务 6: 实现搜索和验证方法 (AC: #7)
[ ] 任务 7: 定义 TypeScript 类型 (AC: #8)
[ ] 任务 8: 添加 JSDoc 注释 (AC: #8)
[ ] 任务 9: 验证代码质量 (AC: #8)
Dev Notes
Epic 11 关键经验
Page Object 模式(成熟,可直接复用):
- 参考 platform-management.page.ts, company-management.page.ts
- 选择器优先级:data-testid → role + label → text
- CRUD 方法:create, edit, delete, exists
- 使用 TIMEOUTS 常量
API 删除策略(关键):
- 使用 API 直接删除,绕过 UI 不稳定性
- 删除成功后刷新页面
测试数据唯一性:
用户类型和关联
- EMPLOYER:企业用户,需关联公司(Epic 11)
- TALENT:人才用户,需关联残疾人(Epic 9)
- ADMIN:管理员,无关联
项目结构
- 文件:web/tests/e2e/pages/admin/user-management.page.ts
- 导入:import { TIMEOUTS } from '../../utils/timeouts';
Dev Agent Record
Agent Model Used
Claude (d8d-model)
File List
- 12-1-user-page-object.md
- web/tests/e2e/pages/admin/user-management.page.ts (创建/增强)
- web/tests/e2e/pages/admin/platform-management.page.ts (参考)
- web/tests/e2e/utils/timeouts.ts (使用)