Some checks failed
- Backend: FastAPI + SQLite (WAL mode), 22 tables, ~40 API endpoints - Frontend: Vue 3 + Vite + Pinia + Vue Router, 8 views, 3 stores - Database: migrate from JSON file to SQLite with proper schema - Dockerfile: multi-stage build (node + python) - Deploy: K8s manifests (namespace, deployment, service, ingress, pvc, backup) - CI/CD: Gitea Actions (test, deploy, PR preview at pr-$id.planner.oci.euphon.net) - Tests: 20 Cypress E2E test files, 196 test cases, ~85% coverage - Doc: test-coverage.md with full feature coverage report Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14 KiB
14 KiB
前端功能点测试覆盖表
基于 Vue 3 + Vite + Pinia 重构后的前端,对照原始 vanilla JS 单文件实现的所有功能点。
测试类型说明
- e2e = Cypress E2E 测试 (真实浏览器 + 后端 API)
- none = 尚未覆盖
1. 应用加载 (App)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 未登录显示登录遮罩 | e2e | app-load.cy.js |
| 登录框有密码输入和按钮 | e2e | app-load.cy.js |
| 错误密码显示错误提示 | e2e | app-load.cy.js |
| 登录后显示主界面 | e2e | app-load.cy.js |
| 显示 7 个导航 Tab | e2e | app-load.cy.js |
| 菜单按钮打开下拉菜单 | e2e | app-load.cy.js |
| 下拉菜单包含导出/改密/备份/退出 | e2e | app-load.cy.js |
2. 认证与登录 (Auth)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 过期 session 跳转登录 | e2e | auth-flow.cy.js |
| 回车键提交登录 | e2e | auth-flow.cy.js |
| 正确密码登录并存储 session | e2e | auth-flow.cy.js |
| 退出登录清除 session | e2e | auth-flow.cy.js |
| Session 刷新后保持 | e2e | auth-flow.cy.js |
| 修改密码 | none | — |
3. 导航与路由 (Navigation)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 默认 Tab 为随手记 | e2e | navigation.cy.js |
| 点击 Tab 跳转正确路由 | e2e | navigation.cy.js |
| 直接 URL 访问各路由 | e2e | navigation.cy.js |
| 浏览器后退按钮 | e2e | navigation.cy.js |
| 未知路由 SPA 回退 | e2e | navigation.cy.js |
| Sleep Buddy 路由 | e2e | navigation.cy.js |
4. 随手记 (Notes)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示输入区和发送按钮 | e2e | notes-flow.cy.js |
| 显示 8 个标签按钮 | e2e | notes-flow.cy.js |
| 切换标签选中状态 | e2e | notes-flow.cy.js |
| 创建笔记(点击按钮) | e2e | notes-flow.cy.js |
| 创建带标签的笔记 | e2e | notes-flow.cy.js |
| 回车键创建笔记 | e2e | notes-flow.cy.js |
| 创建后清空输入框 | e2e | notes-flow.cy.js |
| 不创建空笔记 | e2e | notes-flow.cy.js |
| 搜索过滤笔记 | e2e | notes-flow.cy.js |
| 按标签筛选笔记 | e2e | notes-flow.cy.js |
| 编辑笔记 | e2e | notes-flow.cy.js |
| 删除笔记 | e2e | notes-flow.cy.js |
| 显示空状态提示 | e2e | notes-flow.cy.js |
| 显示笔记时间 | e2e | notes-flow.cy.js |
| 自动识别内容归档文档 | none | — |
5. 待办事项 (Tasks)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示 3 个子 Tab(待办/目标/清单) | e2e | tasks-flow.cy.js |
| 默认子 Tab 为待办 | e2e | tasks-flow.cy.js |
| 子 Tab 切换 | e2e | tasks-flow.cy.js |
| 收集箱输入 | e2e | tasks-flow.cy.js |
| 添加收集箱条目 | e2e | tasks-flow.cy.js |
| 收集箱分配到象限按钮 | e2e | tasks-flow.cy.js |
| 移入四象限 | e2e | tasks-flow.cy.js |
| 显示 4 个象限 | e2e | tasks-flow.cy.js |
| 直接添加到象限 | e2e | tasks-flow.cy.js |
| 切换完成状态 | e2e | tasks-flow.cy.js |
| 删除待办 | e2e | tasks-flow.cy.js |
| 搜索过滤待办 | e2e | tasks-flow.cy.js |
| 创建目标 | e2e | tasks-flow.cy.js |
| 删除目标 | e2e | tasks-flow.cy.js |
| 创建清单 | e2e | tasks-flow.cy.js |
| 添加清单项目 | e2e | tasks-flow.cy.js |
| 切换清单项完成 | e2e | tasks-flow.cy.js |
| 删除清单 | e2e | tasks-flow.cy.js |
| 目标打卡日历 | none | — |
6. 提醒 (Reminders)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示页面和新增按钮 | e2e | reminders-flow.cy.js |
| 打开新增表单 | e2e | reminders-flow.cy.js |
| 创建带时间的提醒 | e2e | reminders-flow.cy.js |
| 不同重复选项 | e2e | reminders-flow.cy.js |
| 切换启用/禁用 | e2e | reminders-flow.cy.js |
| 删除提醒 | e2e | reminders-flow.cy.js |
| 取消按钮关闭表单 | e2e | reminders-flow.cy.js |
| 空状态提示 | e2e | reminders-flow.cy.js |
| 浏览器通知推送 | none | — |
| Service Worker 后台通知 | none | — |
7. 健康打卡 (Body - Health)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示 4 个子 Tab | e2e | body-health.cy.js |
| 默认健康打卡 Tab | e2e | body-health.cy.js |
| 显示今日日期 | e2e | body-health.cy.js |
| 添加健康项目到池 | e2e | body-health.cy.js |
| 切换项目到月计划 | e2e | body-health.cy.js |
| 打卡项目 | e2e | body-health.cy.js |
| 取消打卡 | e2e | body-health.cy.js |
| 删除池中项目 | e2e | body-health.cy.js |
| 空状态提示 | e2e | body-health.cy.js |
| 月度日历视图 | none | — |
| 年度热力图 | none | — |
| 健康日记 | none | — |
8. 睡眠记录 (Body - Sleep)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示输入框 | e2e | body-sleep.cy.js |
| HH:MM 格式记录 | e2e | body-sleep.cy.js |
| 中文格式记录(10点半) | e2e | body-sleep.cy.js |
| 无法识别时显示错误 | e2e | body-sleep.cy.js |
| 删除睡眠记录 | e2e | body-sleep.cy.js |
| 显示记录明细表 | e2e | body-sleep.cy.js |
| 空状态提示 | e2e | body-sleep.cy.js |
| 睡眠趋势图表 (Canvas) | none | — |
| 月度切换 | none | — |
| 年度热力图 | none | — |
| 目标入睡时间 | none | — |
| "我去睡觉啦"按钮 | none | — |
9. 健身记录 (Body - Gym)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示页面和新增按钮 | e2e | body-gym.cy.js |
| 打开新增表单 | e2e | body-gym.cy.js |
| 创建健身记录 | e2e | body-gym.cy.js |
| 删除健身记录 | e2e | body-gym.cy.js |
| 取消关闭表单 | e2e | body-gym.cy.js |
10. 经期记录 (Body - Period)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示页面和新增按钮 | e2e | body-period.cy.js |
| 打开新增表单 | e2e | body-period.cy.js |
| 创建经期记录(有结束日期) | e2e | body-period.cy.js |
| 创建进行中记录(无结束日期) | e2e | body-period.cy.js |
| 删除经期记录 | e2e | body-period.cy.js |
| 经期周期预测 | none | — |
11. 音乐打卡 (Music)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示今日日期 | e2e | music-flow.cy.js |
| 显示练习项目区 | e2e | music-flow.cy.js |
| 添加音乐项目 | e2e | music-flow.cy.js |
| 切换到月计划 | e2e | music-flow.cy.js |
| 打卡练习 | e2e | music-flow.cy.js |
| 取消打卡 | e2e | music-flow.cy.js |
| 删除项目 | e2e | music-flow.cy.js |
| 空状态提示 | e2e | music-flow.cy.js |
| 月度日历视图 | none | — |
| 年度热力图 | none | — |
12. 个人文档 (Docs)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示页面头部和描述 | e2e | docs-flow.cy.js |
| 显示新建文档按钮 | e2e | docs-flow.cy.js |
| 打开新建表单 | e2e | docs-flow.cy.js |
| 创建文档 | e2e | docs-flow.cy.js |
| 新文档显示 0 条 | e2e | docs-flow.cy.js |
| 点击打开文档详情 | e2e | docs-flow.cy.js |
| 关闭文档详情 | e2e | docs-flow.cy.js |
| 编辑文档信息 | e2e | docs-flow.cy.js |
| 删除文档 | e2e | docs-flow.cy.js |
| 取消不保存 | e2e | docs-flow.cy.js |
| 图标选择器 | e2e | docs-flow.cy.js |
| 提取规则下拉 | e2e | docs-flow.cy.js |
| 文档条目添加 | none | — (API 层已覆盖) |
| 文档条目删除 | none | — (API 层已覆盖) |
13. 日程规划 (Planning - Schedule)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示 3 个子 Tab | e2e | planning-schedule.cy.js |
| 默认日程子 Tab | e2e | planning-schedule.cy.js |
| 显示模块池和时间线 | e2e | planning-schedule.cy.js |
| 显示 18 个时间段 (6-23) | e2e | planning-schedule.cy.js |
| 日期导航 | e2e | planning-schedule.cy.js |
| 切换上/下一天 | e2e | planning-schedule.cy.js |
| 添加活动模块 | e2e | planning-schedule.cy.js |
| 颜色选择器 | e2e | planning-schedule.cy.js |
| 删除活动模块 | e2e | planning-schedule.cy.js |
| 清空当天日程 | e2e | planning-schedule.cy.js |
| 模块可拖拽 | e2e | planning-schedule.cy.js |
| 拖拽放置到时间段 | none | — (Cypress 不支持原生 drag) |
| 导出日程为文本 | none | — |
14. 每周模板 (Planning - Template)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示 7 天按钮 | e2e | planning-template.cy.js |
| 默认选中天 | e2e | planning-template.cy.js |
| 切换不同天 | e2e | planning-template.cy.js |
| 显示模板提示 | e2e | planning-template.cy.js |
| 时间线渲染 | none | — |
| 模板编辑保存 | none | — |
15. 周回顾 (Planning - Review)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 显示回顾表单 | e2e | planning-review.cy.js |
| 表单有 3 个区域 | e2e | planning-review.cy.js |
| 保存回顾 | e2e | planning-review.cy.js |
| 历史回顾标题 | e2e | planning-review.cy.js |
| 历史展开/折叠 | e2e | planning-review.cy.js |
16. 睡眠打卡 (Sleep Buddy)
| 功能点 | 测试 | 文件 |
|---|---|---|
| 未登录显示登录表单 | e2e | sleep-buddy.cy.js |
| 登录表单有用户名密码 | e2e | sleep-buddy.cy.js |
| 登录/注册模式切换 | e2e | sleep-buddy.cy.js |
| 注册显示确认密码 | e2e | sleep-buddy.cy.js |
| 密码不一致报错 | e2e | sleep-buddy.cy.js |
| 注册后自动登录 | e2e | sleep-buddy.cy.js |
| 登录后显示主界面 | e2e | sleep-buddy.cy.js |
| 显示目标时间 | e2e | sleep-buddy.cy.js |
| 显示记录输入 | e2e | sleep-buddy.cy.js |
| 记录睡眠时间 | e2e | sleep-buddy.cy.js |
| 无法识别报错 | e2e | sleep-buddy.cy.js |
| "我去睡觉啦"按钮 | e2e | sleep-buddy.cy.js |
| 用户菜单退出 | e2e | sleep-buddy.cy.js |
| 退出返回登录 | e2e | sleep-buddy.cy.js |
| 数据对比统计 | none | — |
| 睡眠趋势图 (Canvas) | none | — |
| 修改目标时间 | none | — |
| 删除记录 | none | — (API 已覆盖) |
17. API 健康检查
| 功能点 | 测试 | 文件 |
|---|---|---|
| GET /api/notes 返回数组 | e2e | api-health.cy.js |
| GET /api/todos 返回数组 | e2e | api-health.cy.js |
| GET /api/inbox 返回数组 | e2e | api-health.cy.js |
| GET /api/reminders 返回数组 | e2e | api-health.cy.js |
| GET /api/goals 返回数组 | e2e | api-health.cy.js |
| GET /api/checklists 返回数组 | e2e | api-health.cy.js |
| GET /api/sleep 返回数组 | e2e | api-health.cy.js |
| GET /api/gym 返回数组 | e2e | api-health.cy.js |
| GET /api/period 返回数组 | e2e | api-health.cy.js |
| GET /api/docs 返回数组 | e2e | api-health.cy.js |
| GET /api/bugs 返回数组 | e2e | api-health.cy.js |
| GET /api/reviews 返回数组 | e2e | api-health.cy.js |
| GET /api/schedule-modules 返回数组 | e2e | api-health.cy.js |
| GET /api/schedule-slots 返回数组 | e2e | api-health.cy.js |
| GET /api/weekly-template 返回数组 | e2e | api-health.cy.js |
| GET /api/health-items 返回数组 | e2e | api-health.cy.js |
| GET /api/health-plans 返回数组 | e2e | api-health.cy.js |
| GET /api/health-checks 返回数组 | e2e | api-health.cy.js |
| GET /api/backups 返回数组 | e2e | api-health.cy.js |
| GET /api/sleep-buddy 返回对象 | e2e | api-health.cy.js |
| POST /api/login 错误密码 401 | e2e | api-health.cy.js |
18. API CRUD 操作
| 功能点 | 测试 | 文件 |
|---|---|---|
| Notes: 创建/删除 | e2e | api-crud.cy.js |
| Todos: 创建/更新(upsert)/删除 | e2e | api-crud.cy.js |
| Inbox: 创建/清空 | e2e | api-crud.cy.js |
| Reminders: 创建/删除 | e2e | api-crud.cy.js |
| Goals: 创建/更新 | e2e | api-crud.cy.js |
| Checklists: 创建 | e2e | api-crud.cy.js |
| Sleep: 创建/Upsert/删除 | e2e | api-crud.cy.js |
| Gym: 创建 | e2e | api-crud.cy.js |
| Period: 创建 | e2e | api-crud.cy.js |
| Docs: 创建 + 创建条目 + 验证嵌套 | e2e | api-crud.cy.js |
| Bugs: 创建/删除 | e2e | api-crud.cy.js |
| Schedule Modules: 创建 | e2e | api-crud.cy.js |
| Schedule Slots: 创建 | e2e | api-crud.cy.js |
| Reviews: 创建 | e2e | api-crud.cy.js |
| Health Items: 创建 | e2e | api-crud.cy.js |
| Health Plans: 保存 | e2e | api-crud.cy.js |
| Health Checks: 切换 | e2e | api-crud.cy.js |
| Backup: 触发备份 | e2e | api-crud.cy.js |
19. 响应式布局
| 功能点 | 测试 | 文件 |
|---|---|---|
| 手机端 (375px) 渲染 | e2e | responsive.cy.js |
| 平板端 (768px) 渲染 | e2e | responsive.cy.js |
| 桌面端 (1280px) 渲染 | e2e | responsive.cy.js |
| 宽屏 (1920px) 渲染 | e2e | responsive.cy.js |
| 手机端 Tab 可滚动 | e2e | responsive.cy.js |
| 手机端四象限垂直堆叠 | e2e | responsive.cy.js |
| 手机端日程垂直堆叠 | e2e | responsive.cy.js |
20. 性能
| 功能点 | 测试 | 文件 |
|---|---|---|
| 页面加载 < 5s | e2e | performance.cy.js |
| API 响应 < 1s | e2e | performance.cy.js |
| Tab 切换瞬时 | e2e | performance.cy.js |
| 批量数据不崩溃 | e2e | performance.cy.js |
覆盖统计
| 指标 | 数量 |
|---|---|
| 功能点总数 | ~148 |
| 已覆盖功能点 | ~126 |
| Cypress E2E 测试 | 196 |
| 测试文件数 | 20 |
| 功能点覆盖率 | ~85% |
未覆盖的高风险功能
| 优先级 | 功能 | 风险 | 说明 |
|---|---|---|---|
| P0 | Canvas 图表渲染 (睡眠趋势) | HIGH | 原版有 Canvas 图表,新版尚未实现 |
| P0 | 拖拽放置到时间段 | HIGH | Cypress 不支持原生 HTML5 DnD |
| P1 | 浏览器通知推送 | MED | Service Worker + 权限 API |
| P1 | 修改密码功能 | MED | 涉及安全敏感操作 |
| P1 | 健康/音乐月度日历 | MED | 日历视图尚未完整实现 |
| P1 | 年度热力图 | MED | 健康/音乐/睡眠的年度视图 |
| P2 | 经期周期预测 | MED | 统计计算逻辑 |
| P2 | Sleep Buddy 数据对比 | MED-LOW | 多用户对比统计 |
| P2 | 自动识别内容归档文档 | MED-LOW | 关键词匹配 + 提取规则 |
| P3 | 导出日程为文本 | LOW | 简单格式化 |
| P3 | 健康日记 | LOW | 额外输入区域 |
覆盖最充分的功能
- API CRUD 全覆盖 — 27 tests 覆盖所有 18 个资源的增删改查
- API 健康检查 — 21 tests 验证全部 20+ 端点返回正确格式
- 随手记 (Notes) — 14 tests 覆盖创建/编辑/删除/搜索/筛选
- 待办系统 (Tasks) — 18 tests 覆盖收集箱/四象限/目标/清单
- 睡眠打卡 (Sleep Buddy) — 14 tests 覆盖注册/登录/记录/通知
- 文档管理 (Docs) — 12 tests 覆盖创建/编辑/删除/详情/图标
- 响应式布局 — 7 tests 覆盖 4 种视口