Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

7.4 KiB

接口错误 Message 回归报告

主回归:9/9 通过。17 张截图,58 次模拟 API 请求,0 个未捕获页面异常。

认证附加:3 项通过,2 项旧改密入口受当前路由契约阻断。原始失败保留,未计为通过。总状态:PASS_WITH_LEGACY_BLOCKERS。

资料

按本轮“接口错误使用 Message,不保留常驻错误横条”的要求检查。沿用已确认的教学业务边界:离线识别回放、观察模式、步骤反馈和表单校验仍需可见。

原型

错误发生时顶部短暂提示;可以手动关闭,约 4.5 秒自动消失。同一错误合并展示;失败后仍可重新加载,已成功取得的数据不因后续刷新失败消失。

设计

共享 Message 处理负责统一展示与缓存页面生命周期;请求层保留业务错误码、HTTP 状态和 requestId,静默请求不会自行弹窗。未取得数据与空结果保持区分。

开发

代表性覆盖内容制作、系统用户与教学实施,包括训练编辑器加载失败的重试入口。接口异常详情仅在 Message 中展示;表单必填错误、项目编码说明和离线运行模式继续保留。

测试

使用真实 Vue / Element Plus 页面、Edge 无头浏览器和浏览器级 API mock。覆盖本机与局域网入口。身份及接口数据均为合成测试数据;不登录真实账号、不写业务库,不将本轮测试称为真实服务端或设备联调。

浏览器结果

1. 内容列表:错误自动消失、重试恢复、再次失败保留旧数据

状态:PASS。耗时 12.8 秒。

01-content-error-message

02-content-old-data-retained

2. 系统用户:并行同错合并一条,重复搜索可再次提示

状态:PASS。耗时 12.7 秒。

03-users-grouped-message

04-users-retry-without-banner

3. 训练编辑器:加载失败提示消失后保留重新加载按钮

状态:PASS。耗时 6.4 秒。

05-legacy-training-message

06-legacy-training-retry

4. 实装预览:任务上下文错误用 Message,离线与教员模式持续可见

状态:PASS。耗时 6.5 秒。

07-physical-context-message

08-physical-mode-preserved

5. 新建训练:业务说明与必填校验保留,不发起创建请求

状态:PASS。耗时 2.5 秒。

09-create-validation-preserved

6. 缓存列表:失活时晚到错误不弹出,返回不重放旧错误

状态:PASS。耗时 1.9 秒。

10-inactive-page-no-message

11-reactivated-no-stale-message

7. HTTP 合同:真实 Axios 超时中文化,403/409 元数据保留,静默请求不自动弹窗

状态:PASS。耗时 1.9 秒。

12-http-silent-errors

15-business-message-keeps-original-text

8. 局域网教学列表:既有 ElMessage.error 使用全局关闭和自动消失配置

状态:PASS。耗时 6.9 秒。

13-lan-teaching-message

14-lan-teaching-after-dismiss

9. 模型桥接 DOM 合同:初次错误与晚写详情转为重试说明,ready 恢复交互

状态:PASS。耗时 0.8 秒。

16-model-bridge-neutral-retry

17-model-bridge-ready

认证附加回归(独立统计)

共实际运行 5 项:3 项通过;2 项旧强制改密用例受当前路由契约阻断,未验证到原断言。主报告 9 项结果单独统计。

859:无可登录教员时账号选择器禁用

状态:PASS。保留业务空态,选择器不可展开。

无教员业务空态

861:旧强制改密不一致校验

状态:BLOCKED;Playwright 原始状态:failed。当前 /change-password 对已认证用户重定向 /dashboard;旧 fixture 只有强制改密标记而无工作台权限,后续导航取消,停留在启动页,未进入改密表单。该旧用例不适用于当前路由契约,本次未改路由、未跳过或记为通过。

旧改密入口阻断

864:旧强制改密停用账号提示

状态:BLOCKED;Playwright 原始状态:failed。与 861 相同的既有路由契约阻断,未能提交初始改密接口,也未验证一次性登录提示。原始失败证据保留。

旧停用账号流程阻断

普通会话过期不泄露后端内部详情

状态:PASS。跳转登录页,登录错误栏为空,不显示内部会话或刷新令牌详情,仅发起一次刷新请求。

当前管理员登录 API 401 错误使用自动消失的 Message

状态:PASS。实际点击登录;mock POST /auth/login 返回 401。只出现一条 .el-message--error,#login-error 始终为空;未点击关闭,Message 自动消失。登录请求 1 次,刷新请求 0 次。

登录失败 Message

Message 自动消失后

  • 仅模拟认证接口与浏览器交互,不使用真实账号,不验证后端认证规则或真实密码修改。
  • 未运行依赖真实账号的 auth.spec.ts 全量;仅更新其中接口错误提示的断言选择器。
  • 两条旧强制改密用例没有通过,不能作为当前改密功能验证证据;既有路由策略不在本轮提示展示调整范围。

认证汇总证据

范围与复现

  • 这是接口失败展示的聚焦浏览器回归,未逐一遍历所有业务页面。
  • 页面渲染、Element Plus Message、缓存路由和 Axios 超时均运行于真实浏览器;服务端响应由测试模拟。
  • 模型 iframe 项为真实宿主桥接的 DOM 合同测试,使用空画布夹具,不代表完整 GLB 模型加载测试。
  • 保留训练业务状态、表单校验与重试入口。未扩大教学流程、权限或接口合同。

pnpm run build:PASS。最终 vue-tsc、Vite 与 legacy iframe public/dist 哈希校验通过;仍有既有 chunk 体积提示。

node --test tools/scene-cover-api.test.mjs tools/guide-error-message.test.mjs:PASS。20/20 通过,包含保存失败只提示一次、阻断发布与离开,以及指导书/场景错误提示回归。

pnpm exec tsc --noEmit --target ES2022 --module ESNext --moduleResolution Bundler --strict --types ‘node,@playwright/test’ tests/api-error-messages.spec.ts api-error-messages.config.ts:PASS。本轮新增浏览器测试与配置类型检查通过。

git diff --check:PASS。主任务检查通过;报告生成后再次核验本轮文件。

pnpm exec playwright test -c api-error-messages.config.ts
node tools/build-api-error-message-report.mjs

测试开始:2026-09-05T17:32:19.650Z。报告生成:2026-09-05T17:36:20.720Z。