Status: done
作为测试开发者, 我想要创建 Platform(平台)管理的 Page Object, 以便为 Platform 管理功能的 E2E 测试封装页面元素和操作方法。
AC1: 创建 PlatformPageObject 类
web/tests/e2e/pages/admin/platform-management.page.tsAC2: 实现列表页元素定位
AC3: 实现创建/编辑对话框元素定位
AC4: 实现删除确认对话框元素定位
AC5: 提供常用操作方法
goto(): 导航到平台管理页面createPlatform(): 创建平台(完整流程)editPlatform(): 编辑平台(完整流程)deletePlatform(): 删除平台(完整流程)searchByName(): 按平台名称搜索platformExists(): 验证平台是否存在AC6: 代码质量标准
any 类型[x] 任务 1: 创建 PlatformPageObject 类基础结构 (AC: 1, 6)
web/tests/e2e/pages/admin/platform-management.page.ts[x] 任务 2: 实现列表页选择器 (AC: 2)
[x] 任务 3: 实现对话框相关选择器和方法 (AC: 3, 4)
[x] 任务 4: 实现基础导航和验证方法 (AC: 5, 6)
goto() 方法expectToBeVisible() 方法[x] 任务 5: 实现 CRUD 操作方法 (AC: 5)
createPlatform(data) 方法editPlatform(platformName, data) 方法deletePlatform(platformName) 方法[x] 任务 6: 实现搜索和验证方法 (AC: 5)
searchByName(name) 方法platformExists(platformName) 方法[x] 任务 7: 代码质量验证 (AC: 6)
Epic 11: 基础配置管理测试 (Epic F)
为平台、公司、渠道配置管理编写 E2E 测试,为后续用户管理和跨端测试提供必要的测试数据。
实体关系链:
Platform (平台)
↓ 1:N
Company (公司) - 必须 platformId
↓ 1:N
Order (订单) - 必须 companyId
重要性说明:
参考现有 Page Object 模式:
order-management.page.ts (web/tests/e2e/pages/admin/order-management.page.ts)
@d8d/e2e-test-utils 工具函数(如 selectRadixOption)region-management.page.ts (web/tests/e2e/pages/admin/region-management.page.ts)
关键模式总结:
| 模式 | 描述 | 示例 |
|---|---|---|
| 类型定义 | 定义常量和接口 | ORDER_STATUS, OrderData |
| 选择器定义 | 在构造函数中定义 Locator | this.pageTitle, this.addButton |
| 导航方法 | goto() 和 expectToBeVisible() | async goto() |
| CRUD 方法 | 提供完整流程方法 | async createOrder(data) |
| 表单处理 | 填写表单 + 提交验证 | async fillOrderForm(), submitForm() |
| 网络响应 | 监听 API 响应,返回结果 | responseHandler |
| Toast 验证 | 检查 sonner toast 消息 | errorToast, successToast |
组件路径: allin-packages/platform-management-ui/src/components/PlatformManagement.tsx
关键字段: | 字段 | 类型 | 必填 | data-testid | |------|------|------|-------------| | platformName | string | 是 | platform-name-input | | contactPerson | string | 否 | contact-person-input | | contactPhone | string | 否 | contact-phone-input | | contactEmail | string | 否 | contact-email-input |
关键 data-testid 属性:
create-platform-button: 创建平台按钮search-input: 搜索输入框search-button: 搜索按钮edit-button-{id}: 编辑按钮delete-button-{id}: 删除按钮create-platform-dialog-title: 创建对话框标题edit-platform-dialog-title: 编辑对话框标题create-submit-button: 创建提交按钮update-submit-button: 更新提交按钮confirm-delete-button: 确认删除按钮页面路径: /admin/platforms(待确认,可能需要通过实际访问验证)
API 端点:
GET /platforms: 获取平台列表POST /platforms: 创建平台POST /platforms/update: 更新平台POST /platforms/delete: 删除平台GET /platforms/search: 搜索平台Page Object 存放路径:
web/tests/e2e/pages/admin/
├── order-management.page.ts # 订单管理 Page Object (参考)
├── region-management.page.ts # 区域管理 Page Object (参考)
└── platform-management.page.ts # 平台管理 Page Object (本次创建)
测试文件路径(后续 Story 创建):
web/tests/e2e/specs/admin/
└── platform-*.spec.ts
根据 project-context.md:
any 类型createPlatform)遵循项目测试标准:
docs/standards/testing-standards.mddocs/standards/web-ui-testing-standards.md关键选择器策略:
data-testid 属性等待策略:
waitFor({ state: 'visible' })waitForLoadState('networkidle') 或 domcontentloadedEpic 11 内部依赖:
外部依赖:
@d8d/e2e-test-utils 包(已存在,提供 selectRadixOption 等工具)页面路由待确认:
/admin/platforms 或其他对话框处理:
isCreateForm 状态区分表单验证:
Claude (d8d-model)
无(初始创建)
实现完成时间: 2026-01-12
完成的工作:
PlatformManagementPage 类,遵循项目现有 Page Object 设计模式技术处理:
data-testid 和 ARIA role 选择器定位元素,与现有 Page Object 模式保持一致Response 类型进行网络响应监听Promise<void> 或 Promise<FormSubmitResult> 或 Promise<boolean>代码质量:
any 类型代码审查修复(AI-Review 2026-01-12):
新增文件:
web/tests/e2e/pages/admin/platform-management.page.ts