|
@@ -0,0 +1,187 @@
|
|
|
|
|
+# Story 2.4: 运行测试并收集问题和改进建议
|
|
|
|
|
+
|
|
|
|
|
+Status: ready-for-dev
|
|
|
|
|
+
|
|
|
|
|
+<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
|
|
|
+
|
|
|
|
|
+## Story
|
|
|
|
|
+
|
|
|
|
|
+As a E2E 测试开发者,
|
|
|
|
|
+I want 运行使用新工具的完整测试并收集所有问题和改进建议,
|
|
|
|
|
+so that 可以系统地发现潜在问题并改进 E2E 测试工具包的用户体验。
|
|
|
|
|
+
|
|
|
|
|
+## Background
|
|
|
|
|
+
|
|
|
|
|
+在 Epic 2 的前三个 Story 中:
|
|
|
|
|
+- **Story 2.1**: 已安装 E2E 测试工具包并验证类型安全
|
|
|
|
|
+- **Story 2.2**: 已将静态 Select 操作迁移到新工具(残疾类型、残疾等级、银行名称、银行卡类型、回访类型)
|
|
|
|
|
+- **Story 2.3**: 已将异步 Select 操作迁移到新工具(省份、城市),移除了 `waitForTimeout(500)` hack
|
|
|
|
|
+
|
|
|
|
|
+现在需要运行完整的 E2E 测试来验证所有修改是否正确工作,并收集使用过程中的问题和改进建议。
|
|
|
|
|
+
|
|
|
|
|
+## Acceptance Criteria
|
|
|
|
|
+
|
|
|
|
|
+1. **运行完整测试**: 执行 `web/tests/e2e/specs/admin/disability-person-complete.spec.ts` 测试套件
|
|
|
|
|
+2. **记录所有问题**: 包括失败的测试、错误消息、意外行为
|
|
|
|
|
+3. **问题分类**: 将问题分为三类
|
|
|
|
|
+ - 工具 bug: 工具包本身的缺陷
|
|
|
|
|
+ - 使用错误: 测试代码中的误用
|
|
|
|
|
+ - 改进建议: API 设计、文档或体验方面的建议
|
|
|
|
|
+4. **问题清单**: 整理成结构化的问题清单文档,包含
|
|
|
|
|
+ - 问题描述
|
|
|
|
|
+ - 复现步骤(如适用)
|
|
|
|
|
+ - 严重程度(高/中/低)
|
|
|
|
|
+ - 建议的解决方案
|
|
|
|
|
+
|
|
|
|
|
+## Tasks / Subtasks
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 准备测试环境 (AC: #1)
|
|
|
|
|
+ - [ ] 确保所有依赖已安装
|
|
|
|
|
+ - [ ] 检查测试数据库状态
|
|
|
|
|
+- [ ] 运行完整 E2E 测试套件 (AC: #1, #2)
|
|
|
|
|
+ - [ ] 执行 `pnpm test:e2e:chromium disability-person-complete`
|
|
|
|
|
+ - [ ] 收集所有测试输出和错误信息
|
|
|
|
|
+- [ ] 分析测试失败原因 (AC: #3)
|
|
|
|
|
+ - [ ] 区分工具 bug、使用错误、环境问题
|
|
|
|
|
+ - [ ] 记录每个失败的详细上下文
|
|
|
|
|
+- [ ] 评估工具使用体验 (AC: #3, #4)
|
|
|
|
|
+ - [ ] API 是否简洁易用?
|
|
|
|
|
+ - [ ] 错误消息是否清晰?
|
|
|
|
|
+ - [ ] 是否有性能问题?
|
|
|
|
|
+- [ ] 整理问题清单文档 (AC: #4)
|
|
|
|
|
+ - [ ] 按类别组织问题
|
|
|
|
|
+ - [ ] 标记严重程度
|
|
|
|
|
+ - [ ] 提供改进建议
|
|
|
|
|
+
|
|
|
|
|
+## Dev Notes
|
|
|
|
|
+
|
|
|
|
|
+### 目标测试文件
|
|
|
|
|
+
|
|
|
|
|
+**文件路径**: `web/tests/e2e/specs/admin/disability-person-complete.spec.ts`
|
|
|
|
|
+
|
|
|
|
|
+此测试覆盖了完整的残疾人管理流程,使用了多个 Select 工具:
|
|
|
|
|
+- 静态 Select: 残疾类型、残疾等级、回访类型
|
|
|
|
|
+- 异步 Select: 省份、城市
|
|
|
|
|
+- 文件上传: 照片上传
|
|
|
|
|
+- 表单填写: 多个文本字段
|
|
|
|
|
+
|
|
|
|
|
+### 关键关注点
|
|
|
|
|
+
|
|
|
|
|
+1. **工具功能验证**
|
|
|
|
|
+ - `selectStaticOption` 是否正确选择静态选项?
|
|
|
|
|
+ - `selectAsyncOption` 是否正确处理异步加载?
|
|
|
|
|
+ - 选项定位逻辑是否健壮?
|
|
|
|
|
+
|
|
|
|
|
+2. **错误处理**
|
|
|
|
|
+ - 当选项不存在时的错误消息是否清晰?
|
|
|
|
|
+ - 超时处理是否合理?
|
|
|
|
|
+
|
|
|
|
|
+3. **性能和稳定性**
|
|
|
|
|
+ - 是否有 flaky test(间歇性失败)?
|
|
|
|
|
+ - 等待时间是否合理?
|
|
|
|
|
+ - 是否有不必要的延迟?
|
|
|
|
|
+
|
|
|
|
|
+4. **API 设计**
|
|
|
|
|
+ - 参数顺序是否直观?
|
|
|
|
|
+ - 是否有过多的配置选项?
|
|
|
|
|
+ - 命名是否清晰?
|
|
|
|
|
+
|
|
|
|
|
+### 问题分类标准
|
|
|
|
|
+
|
|
|
|
|
+| 类别 | 定义 | 示例 |
|
|
|
|
|
+|------|------|------|
|
|
|
|
|
+| **工具 bug** | 工具包本身的缺陷 | 选项定位逻辑错误、超时计算错误 |
|
|
|
|
|
+| **使用错误** | 测试代码中的误用 | 参数顺序错误、元素选择器错误 |
|
|
|
|
|
+| **改进建议** | 体验优化建议 | API 更简洁、更好的错误消息、文档改进 |
|
|
|
|
|
+
|
|
|
|
|
+### 严重程度定义
|
|
|
|
|
+
|
|
|
|
|
+| 级别 | 定义 | 示例 |
|
|
|
|
|
+|------|------|------|
|
|
|
|
|
+| **高** | 阻塞测试通过或导致误报 | 核心功能失败、错误选择选项 |
|
|
|
|
|
+| **中** | 影响使用体验但不阻塞结果 | 错误消息不清楚、API 不直观 |
|
|
|
|
|
+| **低** | 小优化或改进建议 | 命名优化、文档补充 |
|
|
|
|
|
+
|
|
|
|
|
+### 输出格式
|
|
|
|
|
+
|
|
|
|
|
+问题清单应保存为 Markdown 格式,包含:
|
|
|
|
|
+
|
|
|
|
|
+```markdown
|
|
|
|
|
+# E2E 测试工具包 - 问题与改进建议
|
|
|
|
|
+
|
|
|
|
|
+生成日期: YYYY-MM-DD
|
|
|
|
|
+测试文件: disability-person-complete.spec.ts
|
|
|
|
|
+
|
|
|
|
|
+## 执行摘要
|
|
|
|
|
+
|
|
|
|
|
+- 测试总数: X
|
|
|
|
|
+- 通过: X
|
|
|
|
|
+- 失败: X
|
|
|
|
|
+- 执行时间: X
|
|
|
|
|
+
|
|
|
|
|
+## 问题清单
|
|
|
|
|
+
|
|
|
|
|
+### 1. [Bug/错误/建议] 问题标题
|
|
|
|
|
+
|
|
|
|
|
+**类别**: 工具 bug / 使用错误 / 改进建议
|
|
|
|
|
+**严重程度**: 高 / 中 / 低
|
|
|
|
|
+**状态**: 待修复 / 已验证
|
|
|
|
|
+
|
|
|
|
|
+**问题描述**:
|
|
|
|
|
+详细描述问题...
|
|
|
|
|
+
|
|
|
|
|
+**复现步骤**:
|
|
|
|
|
+1. 步骤一
|
|
|
|
|
+2. 步骤二
|
|
|
|
|
+
|
|
|
|
|
+**预期行为**:
|
|
|
|
|
+应该发生什么...
|
|
|
|
|
+
|
|
|
|
|
+**实际行为**:
|
|
|
|
|
+实际发生了什么...
|
|
|
|
|
+
|
|
|
|
|
+**错误信息**:
|
|
|
|
|
+```
|
|
|
|
|
+错误输出...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**建议解决方案**:
|
|
|
|
|
+如何修复...
|
|
|
|
|
+
|
|
|
|
|
+## 改进建议汇总
|
|
|
|
|
+
|
|
|
|
|
+1. API 设计建议...
|
|
|
|
|
+2. 文档改进建议...
|
|
|
|
|
+3. 性能优化建议...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Project Structure Notes
|
|
|
|
|
+
|
|
|
|
|
+本 Story 主要涉及:
|
|
|
|
|
+- **测试执行**: `web/tests/e2e/specs/admin/disability-person-complete.spec.ts`
|
|
|
|
|
+- **工具源码**: `packages/e2e-test-utils/src/`
|
|
|
|
|
+- **问题文档**: 输出到 `_bmad-output/implementation-artifacts/`
|
|
|
|
|
+
|
|
|
|
|
+## References
|
|
|
|
|
+
|
|
|
|
|
+- [E2E 测试工具包 README][1]
|
|
|
|
|
+- [项目上下文 - 测试规则][2]
|
|
|
|
|
+- [Story 2.2 - 静态 Select 重写][3]
|
|
|
|
|
+- [Story 2.3 - 异步 Select 重写][4]
|
|
|
|
|
+
|
|
|
|
|
+[1]: /mnt/code/188-179-template-6/packages/e2e-test-utils/README.md
|
|
|
|
|
+[2]: /mnt/code/188-179-template-6/_bmad-output/project-context.md#%E6%B5%8B%E8%AF%95%E8%A7%84%E5%88%99
|
|
|
|
|
+[3]: /mnt/code/188-179-template-6/_bmad-output/implementation-artifacts/2-2-rewrite-static-select.md
|
|
|
|
|
+[4]: /mnt/code/188-179-template-6/_bmad-output/implementation-artifacts/2-3-rewrite-async-select.md
|
|
|
|
|
+
|
|
|
|
|
+## Dev Agent Record
|
|
|
|
|
+
|
|
|
|
|
+### Agent Model Used
|
|
|
|
|
+
|
|
|
|
|
+Claude Opus 4 (claude-opus-4-20250514)
|
|
|
|
|
+
|
|
|
|
|
+### Debug Log References
|
|
|
|
|
+
|
|
|
|
|
+### Completion Notes List
|
|
|
|
|
+
|
|
|
|
|
+### File List
|