From a6b2bfd4dcfa2ed6bf68399cef88a1773963db1b Mon Sep 17 00:00:00 2001 From: CieanYau Date: Fri, 6 Nov 2026 01:51:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8E=E7=9A=84=E6=B5=8B=E8=AF=95=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E4=B8=8E=E9=AA=8C=E6=94=B6=E8=BE=B9=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- tests/README.md | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index aeb0377..f757ee9 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,8 @@ CHROME_PATH=/absolute/path/to/chrome npm test ``` 离线场景覆盖登录协议、短信倒计时、路由保护、会话失效、双标签页退出、SSH 密钥管理、 -请求超时、支付期限及旧登录入口,并逐步补充安全组、工单、镜像购买和商品字段回归。 +请求超时、支付期限及旧登录入口;还覆盖安全组批量规则、旧工单切换、镜像订单重试、 +级联配置、商品字段校验、安全随机密码和三态主题。 测试产物保存在被忽略的 `tests/fixtures/runs/`。 详细使用方式见 [测试说明](tests/README.md)。 diff --git a/tests/README.md b/tests/README.md index 6df0aa6..ba4fc84 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,11 +1,14 @@ # 浏览器端到端验收 先在项目根目录执行 `npm ci` 安装锁定依赖,执行 `npm run build`,再执行 `npm test`。 -测试使用 Node 自带的 `node:test`,直接操作实际构建后的页面,不替换项目内部模块。 +测试使用 Node 自带的 `node:test`。浏览器场景直接操作实际构建后的页面,不替换项目内部模块; +规则适配与随机密码另有公开模块入口的隔离失败模式测试,不能代替浏览器验收。 -测试会自动启动两个仅监听 `127.0.0.1` 的独立进程:构建后的 Nuxt 预览服务和 HTTP 假后端。 +每个浏览器测试文件会自动启动两个仅监听 `127.0.0.1` 的独立进程:构建后的 Nuxt 预览服务和 HTTP 假后端。 后端地址仅通过生产已有的 `NUXT_PUBLIC_API_BASE` 注入。不会读取 `.env`,不会请求生产服务; 浏览器访问两个本地 origin 之外的任何 HTTP 地址都会被阻断并让场景失败。 +共享启动、登录、清单和清理逻辑位于 `tests/helpers/console-browser.mjs`;专项场景仅在已配置的 +后端 HTTP 边界提供响应,不替换应用内部函数或预置 JWT。 默认 Chrome 路径是 macOS 的 `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`。 其他平台通过 `CHROME_PATH` 指定 Chromium/Chrome 可执行文件,或指定已安装的 Playwright Chromium: @@ -28,4 +31,14 @@ CHROME_PATH=/absolute/path/to/chrome npm test 以及使用同一浏览器真实存储事件的双标签页退出同步;所有会话都来自实际登录或临时凭证入口,不预置 JWT。 模板改写的回归场景还覆盖短信发送协议、60 秒倒计时、登录方式禁用配置及 SSH 新增/编辑保存/删除末页恢复。 支付超时使用浏览器的外部时钟推进,不添加测试专用产品配置。假后端数据契约来自现有部署产物。 + +专项回归按行为分组: + +- `review-routes.e2e.test.mjs`:安全组方向大小写、非法枚举整批拒绝;旧工单 query 切换后草稿重置且只操作新工单。 +- `review-purchase.e2e.test.mjs`:镜像订单未付复用、取消后重建、已付授权延迟不重复收费;级联候选与默认、结算、购物车恢复一致。 +- `review-fields.e2e.test.mjs`:常见 ASCII 规则本地拦截、PCRE 专有规则交后端校验;实例随机密码实际提交及安全源失效、无偏采样边界。 +- `review-theme.e2e.test.mjs`:认证页三态主题文案、持久化与跟随系统变化。 + +可针对单组执行,例如 `node --test tests/review-routes.e2e.test.mjs`;仍需先构建当前源码。 +随机密码场景只记录性质与是否一致,不把密码或安全随机值写入验收附件。 真实服务器联调、真实支付渠道、短信/邮件投递、第三方 CAPTCHA 及完整安全挑战流程不在离线验收范围内。