|
@@ -291,11 +291,17 @@ Error: Radix Select 等待超时
|
|
|
| FR 范围 | Epic | 描述 |
|
|
| FR 范围 | Epic | 描述 |
|
|
|
|--------|------|------|
|
|
|--------|------|------|
|
|
|
| FR1-FR6 | Epic 1 | Radix UI Select 测试支持(静态和异步) |
|
|
| FR1-FR6 | Epic 1 | Radix UI Select 测试支持(静态和异步) |
|
|
|
-| FR7-FR24 | Epic 2 | 扩展工具集(文件上传、表单、列表、对话框) |
|
|
|
|
|
| FR25-FR32 | Epic 1 | 包基础设施(package.json、类型定义、配置) |
|
|
| FR25-FR32 | Epic 1 | 包基础设施(package.json、类型定义、配置) |
|
|
|
-| FR33-FR40 | Epic 4 | 文档与开发者体验(README、示例、迁移指南) |
|
|
|
|
|
-| FR41-FR45 | Epic 3 | 质量与稳定性(残疾人管理验证、稳定性测试) |
|
|
|
|
|
-| FR46-FR50 | Epic 2 | 可扩展性设计(配置对象、版本升级兼容) |
|
|
|
|
|
|
|
+| FR7-FR24, FR46-FR50 | Epic 3 | 扩展工具集(文件上传、表单、列表、对话框、可扩展性) |
|
|
|
|
|
+| FR41-FR45 | Epic 2 & 4 | 质量与稳定性(Select 验证、全面验证、稳定性测试) |
|
|
|
|
|
+| FR33-FR40 | Epic 5 | 文档与开发者体验(README、示例、迁移指南) |
|
|
|
|
|
+
|
|
|
|
|
+**Epic 规划变更说明(2026-01-09):**
|
|
|
|
|
+- Epic 1: ✅ 已完成(Select 工具基础框架)
|
|
|
|
|
+- Epic 2: 🆕 新增(在现有 E2E 测试中验证 Select 工具)
|
|
|
|
|
+- Epic 3: 原 Epic 2(扩展工具集)
|
|
|
|
|
+- Epic 4: 原 Epic 3(全面验证工具包)
|
|
|
|
|
+- Epic 5: 原 Epic 4(完善文档与开发者体验)
|
|
|
|
|
|
|
|
## Epic List
|
|
## Epic List
|
|
|
|
|
|
|
@@ -495,13 +501,171 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## Epic 2: 扩展工具集(文件上传、表单、列表、对话框)
|
|
|
|
|
|
|
+## Epic 2: 在现有 E2E 测试中验证 Select 工具
|
|
|
|
|
+
|
|
|
|
|
+**目标:** 在 `web/tests/e2e/` 的现有残疾人管理测试中使用 Select 工具,验证工具在真实场景中的可用性和稳定性,收集实际使用反馈,为后续工具设计提供指导。
|
|
|
|
|
+
|
|
|
|
|
+**背景:** Epic 1 已完成 Select 工具的开发和单元测试,但尚未在真实 E2E 测试场景中验证。通过在现有测试中使用这些工具,我们可以:
|
|
|
|
|
+1. 验证工具在实际业务场景中的可用性
|
|
|
|
|
+2. 发现并修复潜在问题
|
|
|
|
|
+3. 收集使用体验反馈,改进 API 设计
|
|
|
|
|
+4. 为后续工具开发建立信心和经验
|
|
|
|
|
+
|
|
|
|
|
+**范围:**
|
|
|
|
|
+- ✅ 使用现有 `web/tests/e2e/` 测试基础设施
|
|
|
|
|
+- ✅ 使用现有的残疾人管理测试场景
|
|
|
|
|
+- ✅ 替换 Page Object 中现有的 Select 操作
|
|
|
|
|
+- ❌ 不创建新的测试应用
|
|
|
|
|
+- ❌ 不添加新功能(仅验证现有功能)
|
|
|
|
|
+
|
|
|
|
|
+**依赖:**
|
|
|
|
|
+- Epic 1: ✅ 已完成(Select 工具已开发)
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+1. Select 工具在至少 2 个真实 E2E 测试场景中使用
|
|
|
|
|
+2. 所有测试连续运行 10 次,100% 通过率
|
|
|
|
|
+3. 发现的问题已记录并修复(或列入待办)
|
|
|
|
|
+4. 收集的使用反馈已整理
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.1: 在 web 目录安装 @d8d/e2e-test-utils
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要在 web 目录安装 `@d8d/e2e-test-utils` 包,
|
|
|
|
|
+以便在 E2E 测试中使用 Select 工具。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+**Given** Epic 1 已完成,`@d8d/e2e-test-utils` 包已构建
|
|
|
|
|
+**When** 在 `web/package.json` 中添加 workspace 依赖
|
|
|
|
|
+**Then** 可以在 `web/tests/e2e/` 中导入 Select 工具
|
|
|
|
|
+**And** TypeScript 类型检查通过
|
|
|
|
|
+**And** 运行时无依赖错误
|
|
|
|
|
+
|
|
|
|
|
+**实现要点:**
|
|
|
|
|
+- 使用 `pnpm add -D @d8d/e2e-test-utils@workspace:*` 安装
|
|
|
|
|
+- 验证 `web/tests/e2e/` 中可以导入:`import { selectRadixOption } from '@d8d/e2e-test-utils'`
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.2: 使用 selectRadixOption 重写残疾类型选择
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要使用 `selectRadixOption()` 替换 Page Object 中的 Select 操作,
|
|
|
|
|
+以便验证工具在静态 Select 场景中的可用性。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+**Given** @d8d/e2e-test-utils 已安装
|
|
|
|
|
+**When** 修改 `web/tests/e2e/pages/admin/disability-person.page.ts`
|
|
|
|
|
+**Then** `fillBasicForm()` 中的残疾类型选择使用 `selectRadixOption()`
|
|
|
|
|
+**And** `fillBasicForm()` 中的残疾等级选择使用 `selectRadixOption()`
|
|
|
|
|
+**And** 移除原有的 `selectRadixOption()` 方法
|
|
|
|
|
+**And** 测试通过,功能正常
|
|
|
|
|
+
|
|
|
|
|
+**验证场景:**
|
|
|
|
|
+- 残疾类型:视力残疾、听力残疾、肢体残疾、言语残疾等(静态选项)
|
|
|
|
|
+- 残疾等级:一级、二级、三级、四级(静态选项)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.3: 使用 selectRadixOptionAsync 重写省份/城市选择
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要使用 `selectRadixOptionAsync()` 处理异步加载的 Select,
|
|
|
|
|
+以便验证工具在异步 Select 场景中的可用性。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+**Given** @d8d/e2e-test-utils 已安装
|
|
|
|
|
+**When** 修改 `web/tests/e2e/pages/admin/disability-person.page.ts`
|
|
|
|
|
+**Then** `fillBasicForm()` 中的省份选择使用 `selectRadixOptionAsync()`
|
|
|
|
|
+**And** `fillBasicForm()` 中的城市选择使用 `selectRadixOptionAsync()`
|
|
|
|
|
+**And** 移除 `waitForTimeout(500)` 等待城市加载的 hack
|
|
|
|
|
+**And** 测试通过,功能正常
|
|
|
|
|
+
|
|
|
|
|
+**验证场景:**
|
|
|
|
|
+- 省份选择(异步加载选项)
|
|
|
|
|
+- 城市选择(根据省份动态加载)
|
|
|
|
|
+
|
|
|
|
|
+**配置要点:**
|
|
|
|
|
+- 使用 `waitForOption: true` 等待选项加载
|
|
|
|
|
+- 使用合理的超时配置(5-10 秒)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.4: 运行测试并收集问题和改进建议
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要运行使用新工具的测试并收集反馈,
|
|
|
|
|
+以便发现潜在问题并改进工具。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+1. 运行 `web/tests/e2e/specs/admin/disability-person-complete.spec.ts`
|
|
|
|
|
+2. 记录所有问题(包括失败的测试、错误消息、使用体验)
|
|
|
|
|
+3. 分类问题:工具 bug vs 使用错误 vs 改进建议
|
|
|
|
|
+4. 整理成问题清单
|
|
|
|
|
+
|
|
|
|
|
+**关注点:**
|
|
|
|
|
+- 工具是否按预期工作?
|
|
|
|
|
+- 错误消息是否清晰?
|
|
|
|
|
+- API 是否简洁易用?
|
|
|
|
|
+- 是否有性能问题?
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.5: 修复发现的问题
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要修复 Story 2.4 中发现的问题,
|
|
|
|
|
+以便工具可以正常使用。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+- 所有标记为"工具 bug"的问题已修复
|
|
|
|
|
+- 所有测试通过
|
|
|
|
|
+- 修复已记录到 story 文件
|
|
|
|
|
+
|
|
|
|
|
+**优先级:**
|
|
|
|
|
+- HIGH: 影响测试结果的问题(如选择失败、超时)
|
|
|
|
|
+- MEDIUM: 影响开发体验的问题(如错误消息不清晰)
|
|
|
|
|
+- LOW: 优化建议(如性能改进)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 2.6: 稳定性验证
|
|
|
|
|
+
|
|
|
|
|
+作为测试开发者,
|
|
|
|
|
+我想要验证测试的稳定性,
|
|
|
|
|
+以便确保工具可以可靠地使用。
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+**Given** 所有问题已修复
|
|
|
|
|
+**When** 连续运行测试 10 次
|
|
|
|
|
+**Then** 所有测试 100% 通过
|
|
|
|
|
+**And** 无 flaky 失败
|
|
|
|
|
+**And** 平均执行时间 < 5 分钟
|
|
|
|
|
+
|
|
|
|
|
+**测试场景:**
|
|
|
|
|
+- `pnpm test:e2e:chromium disability-person-complete.spec.ts` 运行 10 次
|
|
|
|
|
+
|
|
|
|
|
+**成功标准:**
|
|
|
|
|
+- 10/10 次通过 = 100% 稳定性 ✅
|
|
|
|
|
+- 9/10 次通过 = 90% 稳定性,需要分析失败原因 ⚠️
|
|
|
|
|
+- < 9/10 次通过 = 稳定性不足,需要修复 ❌
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Epic 3: 扩展工具集(文件上传、表单、列表、对话框)
|
|
|
|
|
|
|
|
**目标:** 测试开发者可以使用完整的 6 个核心工具函数,覆盖所有常见 E2E 测试场景。
|
|
**目标:** 测试开发者可以使用完整的 6 个核心工具函数,覆盖所有常见 E2E 测试场景。
|
|
|
|
|
|
|
|
|
|
+**说明:** 本 Epic 原 Epic 2,已在 Epic 2 完成后重新编号。
|
|
|
|
|
+
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.1: 实现文件上传工具
|
|
|
|
|
|
|
+### Story 3.1: 实现文件上传工具
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要使用 `uploadFileToField()` 函数上传文件,
|
|
我想要使用 `uploadFileToField()` 函数上传文件,
|
|
@@ -519,7 +683,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.2: 实现表单辅助工具
|
|
|
|
|
|
|
+### Story 3.2: 实现表单辅助工具
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要使用 `fillMultiStepForm()` 和 `scrollToSection()` 函数,
|
|
我想要使用 `fillMultiStepForm()` 和 `scrollToSection()` 函数,
|
|
@@ -536,7 +700,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.3: 实现动态列表工具
|
|
|
|
|
|
|
+### Story 3.3: 实现动态列表工具
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要使用 `addDynamicListItem()` 和 `deleteDynamicListItem()` 函数,
|
|
我想要使用 `addDynamicListItem()` 和 `deleteDynamicListItem()` 函数,
|
|
@@ -554,7 +718,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.4: 实现对话框操作工具
|
|
|
|
|
|
|
+### Story 3.4: 实现对话框操作工具
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要使用 `handleDialog()`, `waitForDialogClosed()`, `cancelDialog()` 函数,
|
|
我想要使用 `handleDialog()`, `waitForDialogClosed()`, `cancelDialog()` 函数,
|
|
@@ -572,7 +736,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.5: 更新主导出和 Fixtures 示例
|
|
|
|
|
|
|
+### Story 3.5: 更新主导出和 Fixtures 示例
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要可以导入所有新增的工具函数,
|
|
我想要可以导入所有新增的工具函数,
|
|
@@ -590,7 +754,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 2.6: 扩展工具集单元测试
|
|
|
|
|
|
|
+### Story 3.6: 扩展工具集单元测试
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要所有扩展工具函数有充分的单元测试,
|
|
我想要所有扩展工具函数有充分的单元测试,
|
|
@@ -607,102 +771,86 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## Epic 3: 在残疾人管理中验证工具包
|
|
|
|
|
|
|
+## Epic 4: 在残疾人管理中验证工具包
|
|
|
|
|
|
|
|
**目标:** 工具包在真实的残疾人管理 E2E 测试中验证,证明工具函数可用且稳定,提供完整的参考示例。
|
|
**目标:** 工具包在真实的残疾人管理 E2E 测试中验证,证明工具函数可用且稳定,提供完整的参考示例。
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
+**说明:** 本 Epic 原 Epic 3,已在 Epic 2 完成后重新编号。
|
|
|
|
|
|
|
|
-### Story 3.1: 创建测试应用和集成测试基础设施
|
|
|
|
|
-
|
|
|
|
|
-作为测试开发者,
|
|
|
|
|
-我想要有一个独立的测试应用来验证工具函数,
|
|
|
|
|
-以便在真实环境中测试工具包的集成。
|
|
|
|
|
-
|
|
|
|
|
-**验收标准:**
|
|
|
|
|
-
|
|
|
|
|
-**Given** Epic 1-2 的工具函数已实现
|
|
|
|
|
-**When** 创建 `tests/test-app/` 独立测试应用
|
|
|
|
|
-**Then** 测试应用使用 Vite + React
|
|
|
|
|
-**And** 包含 Radix UI 组件页面(Select、Dialog、File Upload、Form、Dynamic List)
|
|
|
|
|
-**And** Playwright 配置自动启动测试应用服务器
|
|
|
|
|
-**And** 可以通过 `pnpm test` 运行集成测试
|
|
|
|
|
|
|
+**注意:** 原 Epic 3 的范围需要调整,因为 Epic 2 已涵盖 Select 工具的验证。
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 3.2: 照片上传功能测试
|
|
|
|
|
|
|
+### Story 4.2: 照片上传功能测试(使用现有测试)
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
-我想要使用工具函数测试残疾人管理的照片上传功能,
|
|
|
|
|
-以便验证文件上传工具的可用性。
|
|
|
|
|
|
|
+我想要在现有的残疾人管理 E2E 测试中使用文件上传工具,
|
|
|
|
|
+以便验证 `uploadFileToField()` 的可用性。
|
|
|
|
|
|
|
|
**验收标准:**
|
|
**验收标准:**
|
|
|
|
|
|
|
|
-**Given** 测试基础设施已创建
|
|
|
|
|
-**When** 编写照片上传 E2E 测试
|
|
|
|
|
-**Then** 使用 `uploadFileToField()` 上传身份证照片
|
|
|
|
|
-**And** 使用 `uploadFileToField()` 上传残疾证照片
|
|
|
|
|
|
|
+**Given** Epic 3 已完成,文件上传工具已实现
|
|
|
|
|
+**When** 在 `web/tests/e2e/specs/admin/disability-person-complete.spec.ts` 中使用 `uploadFileToField()`
|
|
|
|
|
+**Then** 上传身份证照片(正面、反面)
|
|
|
|
|
+**And** 上传残疾证照片
|
|
|
**And** 验证文件上传成功
|
|
**And** 验证文件上传成功
|
|
|
-**And** 测试覆盖多文件上传场景
|
|
|
|
|
-**And** 测试使用 fixtures 中的示例文件
|
|
|
|
|
|
|
+**And** 测试使用 `web/tests/e2e/fixtures/images/` 中的示例文件
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 3.3: 银行卡管理功能测试
|
|
|
|
|
|
|
+### Story 4.3: 银行卡管理功能测试(使用现有测试)
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
-我想要使用工具函数测试残疾人管理的银行卡管理功能,
|
|
|
|
|
-以便验证动态列表和对话框工具的可用性。
|
|
|
|
|
|
|
+我想要在现有的残疾人管理 E2E 测试中使用动态列表和对话框工具,
|
|
|
|
|
+以便验证这些工具的可用性。
|
|
|
|
|
|
|
|
**验收标准:**
|
|
**验收标准:**
|
|
|
|
|
|
|
|
-**Given** 测试基础设施已创建
|
|
|
|
|
-**When** 编写银行卡管理 E2E 测试
|
|
|
|
|
-**Then** 使用 `handleDialog()` 打开添加银行卡对话框
|
|
|
|
|
|
|
+**Given** Epic 3 已完成,对话框和动态列表工具已实现
|
|
|
|
|
+**When** 在现有测试中使用 `handleDialog()`, `addDynamicListItem()`, `deleteDynamicListItem()`
|
|
|
|
|
+**Then** 打开添加银行卡对话框
|
|
|
**And** 填写银行卡信息(银行名称、卡号、持卡人)
|
|
**And** 填写银行卡信息(银行名称、卡号、持卡人)
|
|
|
-**And** 使用 `addDynamicListItem()` 添加银行卡
|
|
|
|
|
-**And** 使用 `deleteDynamicListItem()` 删除银行卡
|
|
|
|
|
|
|
+**And** 添加银行卡到列表
|
|
|
**And** 验证列表状态变化
|
|
**And** 验证列表状态变化
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 3.4: 备注和回访功能测试
|
|
|
|
|
|
|
+### Story 4.4: 备注和回访功能测试(使用现有测试)
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
-我想要使用工具函数测试残疾人管理的备注和回访功能,
|
|
|
|
|
-以便验证表单和动态列表工具的综合使用。
|
|
|
|
|
|
|
+我想要在现有的残疾人管理 E2E 测试中使用表单辅助工具,
|
|
|
|
|
+以便验证表单工具的综合使用。
|
|
|
|
|
|
|
|
**验收标准:**
|
|
**验收标准:**
|
|
|
|
|
|
|
|
-**Given** 测试基础设施已创建
|
|
|
|
|
-**When** 编写备注和回访 E2E 测试
|
|
|
|
|
-**Then** 使用 `fillMultiStepForm()` 填写备注表单
|
|
|
|
|
-**And** 使用 `scrollToSection()` 滚动到回访区域
|
|
|
|
|
-**And** 使用 `addDynamicListItem()` 添加备注
|
|
|
|
|
|
|
+**Given** Epic 3 已完成,表单辅助工具已实现
|
|
|
|
|
+**When** 在现有测试中使用 `fillMultiStepForm()`, `scrollToSection()`
|
|
|
|
|
+**Then** 填写备注表单
|
|
|
|
|
+**And** 滚动到回访区域
|
|
|
|
|
+**And** 添加备注到列表
|
|
|
**And** 验证表单提交和列表更新
|
|
**And** 验证表单提交和列表更新
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 3.5: 完整流程测试
|
|
|
|
|
|
|
+### Story 4.5: 完整流程验证
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
-我想要有一个完整的残疾人管理流程测试,
|
|
|
|
|
|
|
+我想要在现有的完整流程测试中使用所有工具,
|
|
|
以便演示所有工具函数的综合使用。
|
|
以便演示所有工具函数的综合使用。
|
|
|
|
|
|
|
|
**验收标准:**
|
|
**验收标准:**
|
|
|
|
|
|
|
|
-**Given** 各功能测试已完成
|
|
|
|
|
-**When** 编写完整流程 E2E 测试
|
|
|
|
|
-**Then** 测试包含:基本信息填写(使用 `selectRadixOption` 选择静态和异步 Select)
|
|
|
|
|
-**And** 照片上传(使用 `uploadFileToField`)
|
|
|
|
|
-**And** 银行卡管理(使用 `handleDialog`, `addDynamicListItem`)
|
|
|
|
|
-**And** 备注添加(使用 `fillMultiStepForm`)
|
|
|
|
|
-**And** 表单提交和验证
|
|
|
|
|
-**And** 演示与 Page Object 模式的集成
|
|
|
|
|
|
|
+**Given** Epic 2-4 的所有工具已在部分测试中验证
|
|
|
|
|
+**When** 确保 `disability-person-complete.spec.ts` 使用所有工具
|
|
|
|
|
+**Then** 基本信息:使用 `selectRadixOption` 和 `selectRadixOptionAsync`
|
|
|
|
|
+**And** 照片上传:使用 `uploadFileToField`
|
|
|
|
|
+**And** 银行卡管理:使用 `handleDialog`, `addDynamicListItem`, `deleteDynamicListItem`
|
|
|
|
|
+**And** 备注添加:使用 `fillMultiStepForm`, `scrollToSection`, `addDynamicListItem`
|
|
|
|
|
+**And** 所有测试通过
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 3.6: 稳定性测试
|
|
|
|
|
|
|
+### Story 4.6: 稳定性测试(使用现有测试)
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要有稳定性测试验证工具包的可靠性,
|
|
我想要有稳定性测试验证工具包的可靠性,
|
|
@@ -720,13 +868,15 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## Epic 4: 完善文档与开发者体验
|
|
|
|
|
|
|
+## Epic 5: 完善文档与开发者体验
|
|
|
|
|
|
|
|
**目标:** 测试开发者可以在 30 分钟内上手使用工具包,有完整的文档、示例和迁移指南。
|
|
**目标:** 测试开发者可以在 30 分钟内上手使用工具包,有完整的文档、示例和迁移指南。
|
|
|
|
|
|
|
|
|
|
+**说明:** 本 Epic 原 Epic 4,已在 Epic 2 完成后重新编号。
|
|
|
|
|
+
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### Story 4.1: 完善 README、API 文档和示例
|
|
|
|
|
|
|
+### Story 5.1: 完善 README、API 文档和示例
|
|
|
|
|
|
|
|
作为测试开发者,
|
|
作为测试开发者,
|
|
|
我想要有完整的 README 和 API 文档,
|
|
我想要有完整的 README 和 API 文档,
|
|
@@ -734,7 +884,7 @@ Error: Radix Select 等待超时
|
|
|
|
|
|
|
|
**验收标准:**
|
|
**验收标准:**
|
|
|
|
|
|
|
|
-**Given** Epic 1-3 的所有功能已实现
|
|
|
|
|
|
|
+**Given** Epic 1-4 的所有功能已实现
|
|
|
**When** 完善 `README.md` 和 API 文档
|
|
**When** 完善 `README.md` 和 API 文档
|
|
|
**Then** README 包含:项目简介、安装说明、快速入门、API 文档
|
|
**Then** README 包含:项目简介、安装说明、快速入门、API 文档
|
|
|
**And** 每个工具函数都有完整的使用示例
|
|
**And** 每个工具函数都有完整的使用示例
|