claude-coder 1.8.3 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-coder",
3
- "version": "1.8.3",
3
+ "version": "1.8.4",
4
4
  "description": "Claude Coder — Autonomous coding agent harness powered by Claude Code SDK. Scan, plan, code, validate, git-commit in a loop.",
5
5
  "bin": {
6
6
  "claude-coder": "bin/cli.js"
@@ -8,6 +8,7 @@
8
8
  "files": [
9
9
  "bin/",
10
10
  "src/",
11
+ "recipes/",
11
12
  "templates/"
12
13
  ],
13
14
  "scripts": {
@@ -0,0 +1,11 @@
1
+ # 角色:开发者
2
+
3
+ ## Plan 阶段提示
4
+ 用户是有经验的开发者。请注意:
5
+ - 方案可包含技术细节:API 设计、数据模型、组件结构
6
+ - 尊重用户指定的技术约束(框架、组件库、API 风格等)
7
+ - 如用户未指定,根据项目现有技术栈推荐
8
+
9
+ ## Task 分解提示
10
+ - steps 可包含具体的技术步骤
11
+ - 验证步骤使用技术命令:curl、Playwright、lint 检查等
@@ -0,0 +1,12 @@
1
+ # 角色:产品经理
2
+
3
+ ## Plan 阶段提示
4
+ 用户是非技术产品经理。请注意:
5
+ - 用简单语言描述方案,避免技术术语
6
+ - 技术选型自动采用项目现有方案或最佳推荐,不需要用户确认
7
+ - 关注功能完整性和用户体验,而非实现细节
8
+ - 生成方案后,输出一个功能确认清单(纯业务语言)
9
+
10
+ ## Task 分解提示
11
+ - steps 描述侧重"做什么"而非"怎么做"
12
+ - 验证步骤用业务语言描述:"能看到用户列表"而非"curl GET /api/users → 200"
@@ -0,0 +1,12 @@
1
+ # 角色:测试
2
+
3
+ ## Plan 阶段提示
4
+ 用户关注测试覆盖和质量保障。请注意:
5
+ - 方案重点描述验收标准和测试场景
6
+ - 每个功能点需列出正向 + 异常场景
7
+ - 关注边界条件:空数据、超长输入、并发操作
8
+
9
+ ## Task 分解提示
10
+ - 每个功能对应的 test 任务应详细列出测试用例
11
+ - steps 用 P0/P1/P2 标记优先级
12
+ - 包含:正向流程、异常流程、边界测试
@@ -0,0 +1,86 @@
1
+ # 测试报告输出规范
2
+
3
+ 测试任务完成后,必须输出两个报告文件。
4
+
5
+ ## 1. 结构化数据:.claude-coder/test-report.json
6
+
7
+ ```json
8
+ {
9
+ "project": "项目名",
10
+ "timestamp": "ISO-8601 时间戳",
11
+ "summary": {
12
+ "total": 10,
13
+ "passed": 8,
14
+ "failed": 2,
15
+ "skipped": 0
16
+ },
17
+ "duration_ms": 45000,
18
+ "cases": [
19
+ {
20
+ "id": "TC-001",
21
+ "name": "列表加载",
22
+ "priority": "P0",
23
+ "status": "passed",
24
+ "duration_ms": 2300,
25
+ "steps": [
26
+ { "description": "导航到列表页", "status": "passed" },
27
+ { "description": "验证表格存在", "status": "passed" }
28
+ ],
29
+ "error": null
30
+ },
31
+ {
32
+ "id": "TC-002",
33
+ "name": "新建功能",
34
+ "priority": "P0",
35
+ "status": "failed",
36
+ "duration_ms": 5200,
37
+ "steps": [
38
+ { "description": "点击新建按钮", "status": "passed" },
39
+ { "description": "填写表单", "status": "passed" },
40
+ { "description": "提交", "status": "failed" }
41
+ ],
42
+ "error": "表单校验未触发,直接提交成功"
43
+ }
44
+ ],
45
+ "environment": {
46
+ "browser": "chromium",
47
+ "baseUrl": "http://localhost:xxxx"
48
+ }
49
+ }
50
+ ```
51
+
52
+ ## 2. 可读报告:.claude-coder/test-report.md
53
+
54
+ 格式模板:
55
+
56
+ ```markdown
57
+ # 测试报告 — {项目名}
58
+
59
+ > 时间: {timestamp} | 通过率: {passed}/{total} | 耗时: {duration}s
60
+
61
+ ## 摘要
62
+
63
+ | 指标 | 数值 |
64
+ |------|------|
65
+ | 总用例 | {total} |
66
+ | 通过 | {passed} |
67
+ | 失败 | {failed} |
68
+ | 跳过 | {skipped} |
69
+
70
+ ## 详细结果
71
+
72
+ ### ✅ [P0] 列表加载 — PASSED (2.3s)
73
+ 1. 导航到列表页 ✓
74
+ 2. 验证表格存在 ✓
75
+
76
+ ### ❌ [P0] 新建功能 — FAILED (5.2s)
77
+ 1. 点击新建按钮 ✓
78
+ 2. 填写表单 ✓
79
+ 3. 提交 ✗ — 表单校验未触发
80
+
81
+ ## 失败用例汇总
82
+
83
+ | 用例 | 优先级 | 失败原因 |
84
+ |------|--------|----------|
85
+ | 新建功能 | P0 | 表单校验未触发 |
86
+ ```
@@ -0,0 +1,27 @@
1
+ # 后端服务 — 基础食谱
2
+
3
+ ## 任务分解模式
4
+
5
+ 后端服务按以下标准拆分:
6
+
7
+ 1. **infra**: 项目结构(如未有后端框架,需初始化)
8
+ - steps:框架搭建、目录结构、数据库连接、中间件配置
9
+ - 验证:服务启动成功,健康检查接口返回 200
10
+
11
+ 2. **backend**: 数据模型 + API 接口
12
+ - steps:Model 定义、CRUD Service、Controller/Router、参数校验
13
+ - 验证:curl 测试所有接口返回正确响应
14
+
15
+ 3. **backend**: 业务逻辑(复杂场景单独拆分)
16
+ - steps:业务规则、数据转换、关联查询
17
+ - 验证:curl 测试边界场景
18
+
19
+ 4. **test**: API 测试
20
+ - steps:正向流程、参数校验、权限校验、边界测试
21
+
22
+ ## 通用规则
23
+
24
+ - 一个资源(如 users)的完整 CRUD 合为一个 backend 任务
25
+ - 认证鉴权如果与 CRUD 无关,拆为独立任务
26
+ - 每个接口必须有参数校验
27
+ - 错误响应格式统一
@@ -0,0 +1,18 @@
1
+ # 认证鉴权
2
+
3
+ ## 任务分解指导
4
+ 认证鉴权拆为独立 backend 任务,不与 CRUD 混合。
5
+
6
+ ## 实现要点
7
+ - 注册:用户名/邮箱 + 密码,密码 hash 存储
8
+ - 登录:验证凭证,返回 JWT token 或设置 session
9
+ - Token 验证中间件:拦截受保护路由
10
+ - 角色权限:admin / editor / viewer 等,按路由或按操作控制
11
+ - Token 刷新/续期机制
12
+
13
+ ## 验证策略
14
+ - curl 注册 → 201
15
+ - curl 登录 → 200 + token
16
+ - curl 无 token 访问受保护路由 → 401
17
+ - curl 带 token 访问 → 200
18
+ - curl 权限不足 → 403
@@ -0,0 +1,18 @@
1
+ # RESTful CRUD API
2
+
3
+ ## 任务分解指导
4
+ 一个资源的完整 CRUD 合为一个 backend 任务。
5
+
6
+ ## 实现要点
7
+ - RESTful 风格:GET /资源(列表)、GET /资源/:id(详情)、POST(创建)、PUT(更新)、DELETE(删除)
8
+ - 列表分页:`?page=1&pageSize=10`,返回 `{ data: [], total: N }`
9
+ - 搜索过滤:`?keyword=xxx&status=active`
10
+ - 排序:`?sortBy=createdAt&order=desc`
11
+ - 参数校验:必填项、类型、长度、格式
12
+ - 错误响应统一格式:`{ code: 400, message: "xxx" }`
13
+
14
+ ## 验证策略
15
+ - curl POST 创建 → 201 + 返回创建的数据
16
+ - curl GET 列表 → 200 + 分页结构正确
17
+ - curl PUT 更新 → 200 + 数据变更
18
+ - curl DELETE → 200 + 再 GET 确认已删除
@@ -0,0 +1,15 @@
1
+ # 文件服务
2
+
3
+ ## 任务分解指导
4
+ 文件服务如逻辑简单可合入 CRUD 任务,复杂时独立拆分。
5
+
6
+ ## 实现要点
7
+ - 上传接口:multipart/form-data,校验类型和大小
8
+ - 存储:本地文件系统 / 对象存储(S3/OSS)
9
+ - 下载/访问:静态文件服务或签名 URL
10
+ - 文件元信息:原始名、大小、MIME 类型、上传时间
11
+
12
+ ## 验证策略
13
+ - curl 上传文件 → 200 + 返回 fileId/URL
14
+ - curl 访问上传的文件 → 200 + 内容正确
15
+ - curl 上传超限文件 → 400 + 错误提示
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "backend",
3
+ "name": "后端服务",
4
+ "description": "后端 API 服务开发(RESTful CRUD、认证鉴权、文件服务等)",
5
+ "base": "base.md",
6
+ "components": [
7
+ { "id": "crud-api", "label": "CRUD API", "description": "RESTful 增删改查接口 + 分页 + 过滤", "file": "components/crud-api.md", "default": true },
8
+ { "id": "auth", "label": "认证鉴权", "description": "登录注册、JWT/Session、角色权限", "file": "components/auth.md", "default": false },
9
+ { "id": "file-service", "label": "文件服务", "description": "文件上传下载、存储、类型校验", "file": "components/file-service.md", "default": false }
10
+ ],
11
+ "test": {
12
+ "file": "test/api-test.md",
13
+ "defaultEnabled": true
14
+ },
15
+ "defaults": {
16
+ "components": ["crud-api"],
17
+ "role": "developer",
18
+ "test": true
19
+ }
20
+ }
@@ -0,0 +1,25 @@
1
+ # API 测试步骤模板
2
+
3
+ ## 标准测试用例
4
+
5
+ ### 【P0】CRUD 正向流程
6
+ 1. POST 创建资源 → 验证 201 + 返回数据
7
+ 2. GET 列表 → 验证新数据在列表中
8
+ 3. GET 详情 → 验证数据正确
9
+ 4. PUT 更新 → 验证数据变更
10
+ 5. DELETE 删除 → 验证 GET 返回 404
11
+
12
+ ### 【P0】分页和搜索
13
+ 1. 创建多条数据
14
+ 2. GET 列表 ?page=1&pageSize=2 → 验证分页字段正确
15
+ 3. GET 列表 ?keyword=xxx → 验证过滤结果
16
+
17
+ ### 【P1】参数校验
18
+ 1. POST 缺少必填字段 → 验证 400
19
+ 2. POST 字段格式错误 → 验证 400
20
+ 3. PUT 不存在的 ID → 验证 404
21
+
22
+ ### 【P1】认证鉴权(如适用)
23
+ 1. 无 token 访问 → 验证 401
24
+ 2. 错误 token → 验证 401
25
+ 3. 权限不足 → 验证 403
@@ -0,0 +1,37 @@
1
+ # Console 管理后台 — 基础食谱
2
+
3
+ ## 任务分解模式
4
+
5
+ 管理后台 CRUD 页面按以下标准拆分任务(1 session = 1 task):
6
+
7
+ 1. **backend**: API 接口层(RESTful CRUD + 分页 + 搜索过滤)
8
+ - steps 包含:路由定义、Controller、Service、数据模型
9
+ - 验证:curl 请求返回正确状态码和分页结构
10
+
11
+ 2. **frontend**: 列表页面(表格 + 搜索栏 + 分页组件)
12
+ - steps 包含:页面组件、数据请求、状态管理
13
+ - 验证:Playwright snapshot 验证页面元素存在
14
+
15
+ 3. **frontend**: 弹窗/表单(新建 + 编辑弹窗 + 表单校验)
16
+ - steps 包含:弹窗组件、表单项、校验规则、提交逻辑
17
+ - 验证:Playwright 点击按钮 → snapshot 验证弹窗打开
18
+
19
+ 4. **fullstack**: 联调(前后端串通 + 错误处理 + loading 状态)
20
+ - steps 包含:接口联调、错误提示、空状态处理
21
+ - 验证:Playwright 完整 CRUD 流程
22
+
23
+ 5. **test**: E2E 测试(可选,参考 test/crud-e2e.md)
24
+
25
+ ## 通用规则
26
+
27
+ - 搜索框 + 表格 + 分页合并为一个 frontend 任务(不要拆太碎)
28
+ - 弹窗 + 表单作为独立 frontend 任务(UI 和逻辑较复杂)
29
+ - 后端 API 作为独立 backend 任务
30
+ - 前后端联调作为 fullstack 任务
31
+ - 每个任务必须有可执行的验证步骤
32
+
33
+ ## 反面案例
34
+
35
+ - "搜索框"、"表格"、"分页"各拆为独立任务 → 太碎,合并
36
+ - "全部前端"合为一个任务 → 太大(弹窗应独立)
37
+ - 忽略验证步骤 → 每个 task 的 steps 最后一步必须是验证命令
@@ -0,0 +1,20 @@
1
+ # 弹窗 + 表单
2
+
3
+ ## 任务分解指导
4
+ 弹窗和表单作为独立的 frontend 任务。
5
+ steps 中应包含:弹窗组件 → 表单项 → 校验规则 → 提交 → 关闭 → 列表刷新。
6
+
7
+ ## 实现要点
8
+ - 新建弹窗:表单为空,提交调用 POST API
9
+ - 编辑弹窗:表单回填已有数据,提交调用 PUT API
10
+ - 共用同一个弹窗组件(通过 mode 区分新建/编辑)
11
+ - 表单校验:必填项、格式校验(邮箱、手机号等)、长度限制
12
+ - 提交 loading:防重复提交
13
+ - 提交成功后:关闭弹窗 + 刷新列表 + 提示消息
14
+ - 提交失败:显示错误信息,不关闭弹窗
15
+
16
+ ## 验证策略
17
+ - 点击新建按钮 → snapshot 验证弹窗打开 + 表单元素存在
18
+ - 不填必填项直接提交 → 验证校验提示出现
19
+ - 正确填写并提交 → 验证弹窗关闭 + 列表数据更新
20
+ - 点击编辑 → 验证弹窗打开 + 数据回填
@@ -0,0 +1,17 @@
1
+ # 分页组件
2
+
3
+ ## 任务分解指导
4
+ 分页与表格合并为一个 frontend 任务,不单独拆分。
5
+ steps 中应包含:分页参数 → 分页 UI → 翻页请求 → 总数显示。
6
+
7
+ ## 实现要点
8
+ - 分页模式:offset + limit(如 `?page=1&pageSize=10`)
9
+ - 总数显示:从 API 响应中取 total 字段
10
+ - 默认每页条数:10 条(可配置)
11
+ - 页码变化触发重新请求
12
+ - URL 同步:当前页码反映在 URL query 中(可选)
13
+
14
+ ## 验证策略
15
+ - 验证分页组件渲染(页码、上一页/下一页按钮)
16
+ - 点击第 2 页 → 验证数据变化
17
+ - 验证总数显示正确
@@ -0,0 +1,17 @@
1
+ # 搜索组件
2
+
3
+ ## 任务分解指导
4
+ 搜索功能通常与列表任务合并为一个 frontend 任务,不单独拆分。
5
+ steps 中应包含:搜索框 UI → 防抖处理 → API 请求参数拼接 → 列表刷新。
6
+
7
+ ## 实现要点
8
+ - 输入防抖 300ms,避免频繁请求
9
+ - 搜索关键词作为 query 参数传给列表 API(如 `?keyword=xxx`)
10
+ - 支持清空搜索恢复全量数据
11
+ - 搜索时显示 loading 状态
12
+ - 如有多个筛选条件,使用表单组合(日期范围、下拉选择、关键词等)
13
+
14
+ ## 验证策略
15
+ - 输入已知关键词 → snapshot 验证列表数据过滤
16
+ - 清空搜索 → 验证恢复全量
17
+ - 快速连续输入 → 验证只发一次请求(防抖生效)
@@ -0,0 +1,18 @@
1
+ # 数据表格
2
+
3
+ ## 任务分解指导
4
+ 表格是列表页的核心,与搜索和分页合并为一个 frontend 任务。
5
+ steps 中应包含:列定义 → 数据请求 → 渲染 → 操作列按钮。
6
+
7
+ ## 实现要点
8
+ - 列定义清晰:字段名、显示名、宽度、对齐方式、渲染方式
9
+ - 操作列:编辑、删除按钮(按业务需求扩展)
10
+ - 空状态:无数据时显示友好提示
11
+ - Loading 状态:请求中显示骨架屏或 spinner
12
+ - 如需行选择:checkbox 列 + 批量操作栏
13
+ - 如需排序:列头排序图标 + API 排序参数
14
+
15
+ ## 验证策略
16
+ - snapshot 验证表格元素存在(table/thead/tbody)
17
+ - 验证至少有 1 行数据(或空状态文案)
18
+ - 验证操作列按钮可点击
@@ -0,0 +1,14 @@
1
+ # 标签页
2
+
3
+ ## 任务分解指导
4
+ 标签页通常作为页面布局的一部分,合并到对应页面的 frontend 任务中。
5
+
6
+ ## 实现要点
7
+ - Tab 切换:点击切换内容区域
8
+ - 路由联动:Tab 与 URL hash/query 同步
9
+ - 懒加载:未激活的 Tab 不渲染内容
10
+ - 徽标/计数:Tab 标题旁显示数量
11
+
12
+ ## 验证策略
13
+ - 点击各 Tab → 验证内容切换
14
+ - 刷新页面 → 验证 Tab 状态保持(路由联动)
@@ -0,0 +1,15 @@
1
+ # 树形结构
2
+
3
+ ## 任务分解指导
4
+ 树形通常与列表替换使用,作为独立 frontend 任务。
5
+
6
+ ## 实现要点
7
+ - 树形数据格式:id + parentId 或嵌套 children
8
+ - 展开/折叠:默认展开第一级
9
+ - 懒加载:大数据量时按需加载子节点
10
+ - 操作:点击节点 → 右侧显示详情或触发其他交互
11
+ - 搜索/过滤:树节点过滤 + 高亮匹配节点
12
+
13
+ ## 验证策略
14
+ - snapshot 验证树形结构渲染
15
+ - 点击展开 → 验证子节点显示
@@ -0,0 +1,15 @@
1
+ # 文件上传
2
+
3
+ ## 任务分解指导
4
+ 文件上传通常嵌入弹窗表单中,不单独拆任务。如上传逻辑较复杂(多文件、进度条、预览),可拆为独立 frontend 任务。
5
+
6
+ ## 实现要点
7
+ - 文件类型限制:accept 属性 + 前端校验
8
+ - 文件大小限制:前端校验 + 后端校验
9
+ - 上传进度:progress bar(XMLHttpRequest 或 fetch + ReadableStream)
10
+ - 上传成功后:显示文件名/预览图 + 返回 fileId
11
+ - 多文件上传:列表展示已上传文件,支持删除
12
+
13
+ ## 验证策略
14
+ - 选择超限文件 → 验证拒绝提示
15
+ - 上传正确文件 → 验证成功提示 + 预览显示
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": "console",
3
+ "name": "管理后台",
4
+ "description": "企业级管理后台页面开发(搜索、列表、分页、弹窗等 CRUD 场景)",
5
+ "base": "base.md",
6
+ "components": [
7
+ { "id": "search", "label": "搜索框", "description": "关键词搜索、筛选条件、防抖", "file": "components/search.md", "default": true },
8
+ { "id": "table", "label": "数据表格", "description": "列定义、排序、行选择、批量操作", "file": "components/table-list.md", "default": true },
9
+ { "id": "pagination", "label": "分页", "description": "分页导航、每页条数、总数显示", "file": "components/pagination.md", "default": true },
10
+ { "id": "modal", "label": "弹窗/表单", "description": "新建/编辑弹窗、表单校验、提交回填", "file": "components/modal-form.md", "default": true },
11
+ { "id": "upload", "label": "文件上传", "description": "文件类型限制、大小限制、上传进度", "file": "components/upload.md", "default": false },
12
+ { "id": "tree", "label": "树形结构", "description": "树形数据展示、懒加载、展开折叠", "file": "components/tree.md", "default": false },
13
+ { "id": "tabs", "label": "标签页", "description": "多标签切换、路由联动、懒加载", "file": "components/tabs.md", "default": false }
14
+ ],
15
+ "test": {
16
+ "file": "test/crud-e2e.md",
17
+ "defaultEnabled": true
18
+ },
19
+ "defaults": {
20
+ "components": ["search", "table", "pagination", "modal"],
21
+ "role": "developer",
22
+ "test": true
23
+ }
24
+ }
@@ -0,0 +1,47 @@
1
+ # Console CRUD E2E 测试步骤模板
2
+
3
+ ## 任务分解指导
4
+ E2E 测试作为独立 test 类任务。steps 用优先级标签标记。
5
+
6
+ ## 标准测试用例
7
+
8
+ ### 【P0】列表加载
9
+ 1. 导航到列表页
10
+ 2. Playwright snapshot 验证表格存在
11
+ 3. 验证至少有 1 行数据(或空状态文案)
12
+
13
+ ### 【P0】搜索功能
14
+ 1. 在搜索框输入已知关键词
15
+ 2. 等待列表更新(waitForLoadState)
16
+ 3. snapshot 验证结果数量变化
17
+
18
+ ### 【P1】分页
19
+ 1. 点击第 2 页
20
+ 2. 验证页码高亮变化
21
+ 3. 验证数据不同于第 1 页
22
+
23
+ ### 【P0】新建
24
+ 1. 点击新建按钮
25
+ 2. snapshot 验证弹窗打开
26
+ 3. 填写表单各字段
27
+ 4. 提交
28
+ 5. 验证弹窗关闭 + 列表出现新数据
29
+
30
+ ### 【P1】编辑
31
+ 1. 点击某行编辑按钮
32
+ 2. 验证弹窗打开且回填数据正确
33
+ 3. 修改某字段,提交
34
+ 4. 验证列表数据更新
35
+
36
+ ### 【P1】删除
37
+ 1. 点击删除按钮
38
+ 2. 验证确认弹窗出现
39
+ 3. 确认删除
40
+ 4. 验证列表数据减少
41
+
42
+ ### 【P2】表单校验
43
+ 1. 打开新建弹窗
44
+ 2. 不填必填项直接提交
45
+ 3. 验证校验提示出现
46
+ 4. 填入格式错误的数据(如邮箱格式)
47
+ 5. 验证格式校验提示
@@ -0,0 +1,26 @@
1
+ # H5 活动页 — 基础食谱
2
+
3
+ ## 任务分解模式
4
+
5
+ H5 活动页按以下标准拆分:
6
+
7
+ 1. **infra**: 项目脚手架(如未有移动端模板,需要初始化)
8
+ - steps:脚手架搭建、移动端适配(viewport + rem/vw)、基础样式
9
+ - 验证:页面在移动端视口正常显示
10
+
11
+ 2. **frontend**: 页面主体(布局 + 核心交互组件)
12
+ - steps:页面结构、组件集成、数据对接
13
+ - 验证:Playwright 移动端 viewport snapshot
14
+
15
+ 3. **frontend**: 分享/营销功能(如需要)
16
+ - steps:分享配置、海报生成、统计埋点
17
+ - 验证:分享链接正确、海报生成成功
18
+
19
+ 4. **test**: 多端兼容测试
20
+ - steps:iOS Safari、Android Chrome、微信内置浏览器
21
+
22
+ ## 通用规则
23
+
24
+ - H5 页面通常较轻量,2-3 个任务即可
25
+ - 优先保证移动端适配(viewport meta + 响应式)
26
+ - 注意性能:图片懒加载、动画性能、首屏加载速度
@@ -0,0 +1,11 @@
1
+ # 动画效果
2
+
3
+ ## 实现要点
4
+ - 入场动画:元素进入视口时触发(Intersection Observer)
5
+ - 滚动动画:视差滚动、进度条等
6
+ - 交互动效:点击反馈、状态切换过渡
7
+ - 性能:使用 transform/opacity 动画,避免触发 layout
8
+
9
+ ## 验证策略
10
+ - snapshot 验证动画元素存在
11
+ - 滚动页面 → 验证动画触发
@@ -0,0 +1,11 @@
1
+ # 倒计时组件
2
+
3
+ ## 实现要点
4
+ - 服务端时间同步(避免客户端时间篡改)
5
+ - 天/时/分/秒 格式化显示
6
+ - 倒计时结束回调(如切换页面状态)
7
+ - requestAnimationFrame 或 setInterval 驱动
8
+
9
+ ## 验证策略
10
+ - snapshot 验证倒计时数字显示
11
+ - 等待数秒 → 验证数字递减
@@ -0,0 +1,11 @@
1
+ # 分享功能
2
+
3
+ ## 实现要点
4
+ - 微信 JS-SDK 分享配置(标题、描述、图片、链接)
5
+ - 浏览器原生 Web Share API 兜底
6
+ - 分享海报生成(html2canvas / canvas 绘制)
7
+ - 分享统计埋点
8
+
9
+ ## 验证策略
10
+ - 验证分享按钮可点击
11
+ - 验证海报生成成功(如适用)
@@ -0,0 +1,11 @@
1
+ # 轮播组件
2
+
3
+ ## 实现要点
4
+ - 图片/卡片横向轮播,支持触摸滑动
5
+ - 自动播放 + 手动暂停
6
+ - 指示器(圆点或数字)
7
+ - 图片懒加载,优化首屏性能
8
+
9
+ ## 验证策略
10
+ - snapshot 验证轮播容器和指示器存在
11
+ - 滑动/点击 → 验证切换到下一张
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "h5",
3
+ "name": "H5 活动页",
4
+ "description": "移动端 H5 活动页面开发(轮播、倒计时、分享、动画等营销场景)",
5
+ "base": "base.md",
6
+ "components": [
7
+ { "id": "swiper", "label": "轮播", "description": "图片/卡片轮播、自动播放、指示器", "file": "components/swiper.md", "default": true },
8
+ { "id": "countdown", "label": "倒计时", "description": "活动倒计时、服务端时间同步", "file": "components/countdown.md", "default": false },
9
+ { "id": "share", "label": "分享", "description": "微信/浏览器分享、海报生成", "file": "components/share.md", "default": true },
10
+ { "id": "animation", "label": "动画效果", "description": "入场动画、滚动动画、交互动效", "file": "components/animation.md", "default": false }
11
+ ],
12
+ "test": {
13
+ "file": "test/h5-e2e.md",
14
+ "defaultEnabled": true
15
+ },
16
+ "defaults": {
17
+ "components": ["swiper", "share"],
18
+ "role": "developer",
19
+ "test": true
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ # H5 活动页 E2E 测试步骤模板
2
+
3
+ ## 标准测试用例
4
+
5
+ ### 【P0】页面加载
6
+ 1. 使用移动端 viewport 导航到页面
7
+ 2. snapshot 验证页面主体内容渲染
8
+ 3. 验证无 JS 报错(console.error)
9
+
10
+ ### 【P0】核心交互
11
+ 1. 操作页面核心功能(如轮播滑动、按钮点击)
12
+ 2. 验证交互响应正确
13
+
14
+ ### 【P1】分享功能
15
+ 1. 点击分享按钮
16
+ 2. 验证分享面板/海报出现
17
+
18
+ ### 【P1】适配验证
19
+ 1. 切换不同 viewport(iPhone SE / iPhone 14 / Android)
20
+ 2. 验证布局无溢出、元素无遮挡