Files
user-system/docs/guides/TESTING.md

4.0 KiB
Raw Permalink Blame History

测试指南

更新日期2026-03-24

本文档只描述当前项目已落地、已验证的测试路径。

1. 环境要求

  • Go 1.25+
  • Node.js 20+
  • Windows PowerShell 环境下,如 npm.ps1 被策略拦截,请使用 npm.cmd

如果本机 Go 全局缓存目录受限,建议在执行 Go 命令前显式指定本地缓存目录:

$env:GOMODCACHE = "D:\project\.cache\gomod"
$env:GOPATH = "D:\project\.cache\gopath"
$env:GOCACHE = "D:\project\.cache\go-build"

2. 后端验证

单元与集成测试

go test ./... -count=1

如需执行默认回归之外的大并发压力测试,请显式开启:

$env:RUN_STRESS_TESTS = "1"
go test ./... -count=1

静态检查

go vet ./...

构建验证

go build ./cmd/server

健康检查验证

启动服务后可验证:

curl http://localhost:8080/health
curl http://localhost:8080/health/live
curl http://localhost:8080/health/ready

说明:

  • /health 兼容历史探针,语义等同 readiness
  • /health/live 只验证进程存活
  • /health/ready 会检查数据库可用性

3. 前端验证

frontend/admin 下执行:

npm.cmd run test:run
npm.cmd run lint
npm.cmd run build

当前已补充并验证的前端重点包括:

  • 认证服务契约测试
  • 登录页按 auth/capabilities 动态展示登录方式
  • 忘记密码入口按 password_reset 能力显隐

4. 真实浏览器验证

当前环境下 playwright test runner 会因 spawn EPERM 受限,因此真实浏览器验证主路径不是 runner而是“外部启动真实浏览器 + Playwright 库经 CDP 接管”。 当前 CDP 验证脚本会把以下信号视为失败:

  • console error
  • native dialog
  • popup page
  • page error
  • request failure
  • 401 响应
  • 被前端 window guard 拦截的 alert/confirm/prompt/open

Windows 下 e2e:full:wine2e:auth-smoke:win 都会自动把 Go 缓存写到 %TEMP%\\ums-e2e-cache,避免工作区权限问题。

全量真实浏览器 E2E

cd D:\project\frontend\admin
npm.cmd run e2e:full:win

当前覆盖:

  • login-surface
    • 登录页能力展示
    • 未登录访问受保护路由重定向
  • auth-workflow
    • 真实登录
    • 用户列表
    • 用户详情抽屉
    • 分配角色弹窗
    • 角色页
    • 分配权限弹窗
    • Dashboard
    • 真实登出与登出后重定向
  • responsive-login
    • desktop / tablet / mobile 视口渲染与横向溢出检查
  • desktop-mobile-navigation
    • 桌面侧边导航
    • 移动端抽屉导航

补充页面与路由 smoke

cd D:\project\frontend\admin
npm.cmd run e2e:smoke:win

当前覆盖:

  • 未登录访问 /dashboard/users 会重定向到 /login
  • 登录页按后端能力动态显示可用登录方式
  • 忘记密码入口按能力显隐
  • 多视口下页面可正常渲染

补充真实认证链路 smoke

cd D:\project\frontend\admin
npm.cmd run e2e:auth-smoke:win

当前覆盖:

  • 从受保护路由跳转到登录页
  • 真实登录后回到目标页面
  • 用户列表加载
  • 用户详情抽屉打开
  • 分配角色弹窗打开
  • 角色管理页跳转
  • 分配权限弹窗打开
  • Dashboard 加载
  • 真实登出后再次访问受保护页面会被重定向到登录页

5. 边界说明

  • 当前支持的 CDP 路径已经是浏览器级真实验证,不是 DOM mock。
  • 当前支持的 CDP 路径不是完整 OS 级自动化。
    • 不覆盖系统文件选择器、原生桌面弹窗、操作系统级权限窗口等行为。
  • e2e:full:win 是当前受支持的主验收路径;smoke 脚本保留为补充诊断,不代表产品运行时仍依赖 smoke。
  • 测试层的 smoke 脚本和 mock helper 是允许的,但它们不应继续进入产品运行时。
  • 认证相关接口当前会统一返回 Cache-Control: no-store 等响应头;如果在抓包或浏览器开发者工具中看不到缓存命中,这是预期行为。