Skip to content

-
-分钟

E2E 测试框架

公开站点审计结论和已修复问题见 docs/public-audit.md;后台本地运行模型和安全边界见 project-admin/DESIGN.md

测试遵循 project-admin 的实际运行模型:后台是只监听 127.0.0.1 的本地单用户工具,开发模式是主要工作流,不测试登录或多用户权限。

运行

先分别启动公开站点和后台开发服务:

bash
pnpm dev -- --port 2212
pnpm --dir project-admin dev

然后分别执行:

bash
pnpm test:blog:e2e
pnpm test:admin:e2e
pnpm test:admin:unit

pnpm test:e2e 保留为公开站点 E2E 的兼容别名。公开站点测试位于 test/blog/,后台 E2E 和安全/单元测试位于 test/admin/

公开站点默认使用 http://localhost:2212,可通过 E2E_BASE_URL 覆盖;后台默认使用 http://127.0.0.1:8888,可通过 ADMIN_E2E_BASE_URL 覆盖。

覆盖范围

  • 公开站点:首页、主导航、主题切换、开始浏览、归档、标签、电台列表/详情、记忆、圈子、关于、文章详情和移动端横向溢出。
  • 公开站点回归:首页“流浪星球”快捷卡片、电台随机播放跳转、记忆卡片数量与标题一致、离线预览状态灯,以及电台详情 ended 事件单次绑定。
  • 后台开发模式:概览、文章、电台、回忆、友链、设置、主要 GET API 和移动端横向溢出。
  • 后台单元/安全回归:Express 5 fallback、文章路径边界、HTML 清洗、外部 URL 限制、上传资源限制和 SFTP 错误映射。
  • 后台 E2E 明确针对开发模式。构建和生产模式静态 fallback 仅在验收阶段做冒烟检查,不代表后台是可部署服务。
  • 文章路径边界、HTML 清洗、外部 URL 限制、上传类型和资源上限由 node:test 回归测试覆盖。

浏览器测试只做可回滚的浏览和交互验证;会修改真实博客内容或触发外部任务的写操作不在 E2E 中直接执行,相关边界使用隔离单测和审计验证。

公开站点回归断言

  • 电台详情音频结束时只注册并执行下一曲监听器,不触发上一曲。
  • 首页趣味功能区显示“流浪星球”并保留其可点击操作。
  • 电台列表的“随机播放”在动画选中节目后跳转到对应节目详情页。
  • 记忆页标题数量与 .memory-card 数量一致,首条记忆可从列表打开。
  • 记忆预览根据浏览器在线状态显示绿色或红色状态灯。

报告

每次运行生成的 JSON 结果和 Markdown 审计报告位于项目根目录的 test-report/。该目录已加入 .gitignore,不会提交到仓库。

上次更新:

正在连接 GitHub评论区马上就来...