浏览器端到端验收
先在项目根目录执行 npm ci 安装锁定依赖,执行 npm run build,再执行 npm test。
测试使用 Node 自带的 node:test,直接操作实际构建后的页面,不替换项目内部模块。
测试会自动启动两个仅监听 127.0.0.1 的独立进程:构建后的 Nuxt 预览服务和 HTTP 假后端。
后端地址仅通过生产已有的 NUXT_PUBLIC_API_BASE 注入。不会读取 .env,不会请求生产服务;
浏览器访问两个本地 origin 之外的任何 HTTP 地址都会被阻断并让场景失败。
默认 Chrome 路径是 macOS 的 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome。
其他平台通过 CHROME_PATH 指定 Chromium/Chrome 可执行文件,或指定已安装的 Playwright Chromium:
CHROME_PATH=/absolute/path/to/chrome npm test
默认测试当前项目的 .output。如需验证其他工作树中已经构建的前端,可设置
E2E_APP_ROOT=/absolute/path/to/project;测试依赖仍从当前工作树解析。
每次运行在 tests/fixtures/runs/run-* 下生成截图和 manifest.json。
清单只包含稳定的场景结果、行为观察、请求形状以及浏览器错误/网络越界;不包含随机端口、
时间戳、请求顺序、密码或令牌。该目录被忽略,不会提交生成物。
另有各场景的 .requests.json 诊断附件,保留请求先后顺序和是否携带认证,不保存凭证值。
覆盖登录协议、未登录/失效会话保护、空菜单权威性、SSH 搜索的 10/10/5 分页与重置、 挂起退出接口时立即清理本地登录、危险返回地址、支付成功及挂起状态请求下的独立支付期限。 还覆盖临时登录凭证的首次验证、已有会话再验证、失败时地址脱敏及原页面重试,打开支付页时退出/失效不重新初始化, 以及使用同一浏览器真实存储事件的双标签页退出同步;所有会话都来自实际登录或临时凭证入口,不预置 JWT。 模板改写的回归场景还覆盖短信发送协议、60 秒倒计时、登录方式禁用配置及 SSH 新增/编辑保存/删除末页恢复。 支付超时使用浏览器的外部时钟推进,不添加测试专用产品配置。假后端数据契约来自现有部署产物。 真实服务器联调、真实支付渠道、短信/邮件投递、第三方 CAPTCHA 及完整安全挑战流程不在离线验收范围内。