fec-testing-strategylisted
Install: claude install-skill bovinphang/frontend-craft
# 前端测试策略
## Purpose
按“离代码多近 / 覆盖风险层级”选择测试方法,避免把所有风险都塞进组件测试或 E2E。
## Procedure
1. 识别改动类型:纯逻辑、UI 组件、跨模块流程、浏览器能力、视觉稳定性、专项质量风险或发布门禁。
2. 建立测试层级矩阵,至少区分:
- 静态检查:TypeScript、ESLint、格式、依赖安全、构建。
- 单元测试:utils、hooks/composables、状态逻辑、schema、纯函数。
- 组件测试:props/emits、用户交互、loading/error/empty、mock 边界。
- 轻量集成测试:表单 + API mock + 路由/Store/Provider 上下文。
- E2E:真实浏览器、跨页面关键旅程、鉴权、支付、权限、CI artifacts。
- 视觉/交互文档:Storybook interaction、Chromatic、视觉回归基线。
- 专项质量:a11y、安全、性能、兼容性。
3. 按风险分配覆盖:高频核心路径优先 E2E,复杂组件状态优先组件测试,纯逻辑优先单元测试,跨 provider 协作用轻量集成测试。
4. 用测试金字塔控制维护成本:
- 越靠近纯逻辑,测试越多、越快、越稳定。
- E2E 只覆盖用户关键旅程和真实浏览器风险,不覆盖每个分支。
- 视觉、a11y、安全和性能属于专项质量层,不塞进普通组件测试。
5. 检查是否已有命令、测试框架、目录约定和 CI 门禁;沿用项目现状,不为策略文档引入不必要工具。
6. 规划失败证据:每个高风险项要说明失败时如何定位,例如断言、截图、trace、coverage、日志或报告。
7. 设计测试数据与 mock 策略:共享 fixture 表达业务场景,测试数据 builder 只封装噪声字段,避免每个测试手写随机对象。
8. 管理 flaky 风险:把时间、网络、动画、随机数、并发和外部服务标为不稳定来源,并指定隔离、重试和证据产物。
9. 输出可执行的最小测试计划:每层覆盖什么、不覆盖什么、优先级、建议命令和责任 skill。
## Constraints
- 不把测试策略写成泛泛的“多写测试”;每个建议必须对应具体风险。
- 不要求所有项目都补齐完整测试金字塔;按业务风险和团队维护能力裁剪。
- 不把 E2E 当作单元/组件测试的替代品;不把组件测试当作真实浏览器兼容保证。
- 不为小改动强制引入新框架;优先复用仓库已有工具和脚本。
- 不追求没有风险说明的覆盖率数字;覆盖率只能辅助判断,不能替代场景覆盖。
- 不把随机 fixture、共享全局状态或依赖执行顺序的测试纳入主干门禁。
## Expected Output
输出测试分层建议、风险到测试层的映射、优先级、建议命令、需新增或调整的测试文件范围,以及明确分流到哪些专项 skill 或 agent。