Skip to content

v1.1.5-E2E 测试体系与 test 目录分级

Choose a tag to compare

@imqi1-github imqi1-github released this 30 Sep 19:07
· 39 commits to master since this release

本次覆盖三层自动化测试的完整搭建:单元、集成(真 PostgreSQL)与浏览器端到端测试,并把 test/ 目录按层级重组。

  • 前期大量 commit 累计建成 test/unit/ 与 test/integration/ 两条主轴。unit/ 下按源码镜像成 app/、server/、shared/ 三个目录,外加 real/ 直接跑真实实现、不用 mock(验证码、Prisma 与 IP 归属地库的用例在这里);integration/ 用真实 PostgreSQL,db/ 直连 Prisma Client 验证表约束、外键级联、事务与关系查询,real/ 走完整接口 handler 流程,以管理员身份验证后台增删改查,_setup 默认在 ${DB_NAME}_test 旁路库建表。helpers/(Prisma 假件、登录态假件、Nitro 自动导入的运行时替身)、types/ 与 zz-late/(mock 泄漏兜底)保持顶层。
  • 期间真实集成测试还顺手暴露并修复了三个 bug:评论状态转换的 RMW race(comment_num +2 应为 +1)、search.get 的 cache stampede(50 并发 cold miss 落到 50 次 DB,缺 single-flight)、admin/cache/clear 的 redis 兜底缺失(scanAndUnlink 抛错冒泡)。每条 bug 都挂 fail 测试持续可见,修复后改 expect 即 PASS。
  • test/e2e/ 新增 Playwright 框架:复用 localhost:3001 上的常驻 dev,没有时按同端口自启,Chromium 走 npmmirror 镜像内置。测试专用依赖(happy-dom、bun-types、@playwright/test)隔离进 test/package.json,模式与 scripts/ 子包相同,根目录的 scripts/test.ts 忽略 test/e2e 与 test/node_modules,两套测试互不影响。
  • 用例按目录分组:admin/ 覆盖文章编辑与保存、分类、标签、评论管理、友链审批、订阅、旅行地点、附件上传、系统设置、账户资料;user-actions/ 覆盖登录、发表评论与嵌套回复、留言、搜索、友链申请、主题切换;根目录的 public-pages.spec.ts、api-smoke.spec.ts 与 not-found.spec.ts 检查公开页面渲染、公开接口可达性与 404 页面;smoke/ 收五项第三方服务只读冒烟(COS、高德、百度内容审核、SMTP、GitHub 限流),对应服务未配置时自动跳过。凭据与开发库不一致的用例会跳过而不是改开发库数据。