You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4.4 KiB

登录上下文与个人中心 UI 契约测试报告

1. 测试结论

  • 测试日期:2026-08-11
  • 测试对象:http://127.0.0.1:6180/login/profile
  • 测试方式:Playwright Chromium;模拟公开登录上下文及已登录个人资料接口,不使用真实账号
  • 执行结果:11 项通过,0 项失败,0 项跳过
  • TypeScript 检查:通过
  • 数据影响:未提交登录请求,未写入数据库,无测试数据残留

本轮验证登录页面、账号菜单和个人中心与 Auth API 的 UI 契约,不替代真实 Auth API、数据库和 Redis 的集成测试。测试复用了执行前已经运行的 6180 前端实例,没有启动或重启任何前后端服务。

2. 契约数据

路由 mock 仅返回以下公开信息:

  • 默认身份:管理员 admin
  • 四个稳定身份按产品顺序展示:administrativeteacherstudentadmin
  • 身份名称、账号字段名称、组织选择模式与组织字段名称
  • 启用部门树的 id/code/name/parentId/children

mock 不包含用户、用户名、人员姓名、密码、令牌或权限数据,避免把匿名登录上下文变成账号枚举接口。

3. 用例结果

序号 用例 结果 关键检查
1 默认管理员且四个身份展示各自约定字段 通过 展示顺序为行政、教员、学员、管理员,但默认仍选中 admin;各身份账号字段与组织字段正确
2 行政身份按 SINGLE 模式只选择一个教学系 通过 只出现 login-department;只列顶层教学系;选择前禁止提交,选择后允许提交
3 教员身份按 CASCADE 模式支持教学系本级和直属教研室 通过 出现 login-organizationlogin-department;下级先禁用;选择上级后同时显示“本级”和直属子级
4 切换身份会清空账号密码和已选组织 通过 账号、密码、单级/级联组织路径均被清空,避免跨身份携带敏感输入
5 登录页不枚举账号且不会预填密码 通过 账号为自由输入框,无 datalist/账号下拉;四种身份初始值均为空;eye 图标可切换密码显隐
6 登录上下文失败时管理员账号密码入口仍可使用 通过 显示连接失败状态;管理员仍为默认身份;无组织依赖;填写账号密码后按钮可用
7 375px 响应式检查 通过 document、body 和登录卡片均未产生横向溢出
8 1024px 响应式检查 通过 document、body 和登录卡片均未产生横向溢出
9 1440px 响应式检查 通过 document、body 和登录卡片均未产生横向溢出
10 精简页头和账号菜单 通过 页头不高于 62px,不再展示英文副标题;账号菜单仅有“个人中心、退出登录”
11 个人资料与修改密码 通过 展示姓名、账号、部门、授权模式和当前角色;三个密码框有 eye 图标;请求体使用旧密码和新密码并在成功后清空

4. 真实登录辅助函数调整

tests/helpers.ts 已按真实角色补充条件组织选择:

  • 行政:读取 E2E_LOGIN_DEPARTMENT_NAME,选择单级教学系。
  • 教员:读取 E2E_LOGIN_PARENT_DEPARTMENT_NAMEE2E_LOGIN_DEPARTMENT_NAME,先选教学系,再选本级或直属教研室。
  • 管理员、学员:不读取组织配置,也不提交组织选择。
  • 若强制改密账号属于行政或教员但缺少相应组织环境变量,用例会给出明确原因并跳过,不会在登录按钮禁用时误判为业务失败。
  • 管理员错误身份校验改用无需组织字段的学员身份,避免该用例被组织完整性校验提前阻断。

本轮未提供真实行政/教员账号凭据,因此没有执行这两个身份的真实登录;辅助函数已通过 TypeScript 静态检查。

5. 执行记录

npm run typecheck
结果:通过

npm test -- auth-login-contract.spec.ts platform-account.spec.ts
结果:11 passed(登录 9 项与个人中心 2 项分别复跑均通过)

自动化产物:

  • HTML 报告:artifacts/html-report/index.html
  • JSON 报告:artifacts/results.json
  • 成功截图目录:artifacts/screenshots

本轮生成 10 张成功截图,覆盖四身份字段、行政 SINGLE、教员 CASCADE、身份切换清理、上下文失败降级、375/1024/1440 三档宽度,以及精简页头/账号菜单和个人中心资料/改密。