# 测试用例 — 员工端结束会话固定按钮 > **关联需求编号**: REQ-用户-005 > **关联PRD**: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.1.md` > **关联技术方案**: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.1.md` > **版本**: v1.1 > **日期**: 2026-07-26 > **作者**: Simon > **测试类型**: 功能测试 --- ## 一、功能验收(7 项) ### TC-001 点击「结束会话」按钮弹出确认框 - **Given** 员工已登录,处于聊天页(`/h5/`) - **When** 点击标题栏头像右侧的「结束会话」按钮 - **Then** - [ ] 确认对话框(van-dialog)弹出 - [ ] 标题为"结束会话" - [ ] 消息含"退出后会话记录会清空" - [ ] 按钮:左侧"取消"(灰色),右侧"确定退出"(红色) ### TC-002 点击「取消」关闭确认框 - **Given** 确认对话框已弹出 - **When** 点击「取消」按钮 - **Then** - [ ] 对话框关闭 - [ ] 回到聊天页,会话状态不变 - [ ] 消息列表完整保留 - [ ] 不发起任何 API 请求 ### TC-003 确认退出 — 有活跃会话(完整流程) - **Given** 员工有活跃会话(AI 对话中),处于聊天页 - **When** 点击确定退出 - **Then** - [ ] Loading 状态显示(按钮 loading 或 toast) - [ ] 后端 `POST /h5/conversations/current/close` 被调用(检查 Network 面板) - [ ] 后端 `POST /api/auth/logout` 被调用 - [ ] 前端 Token 被清除(localStorage 中无 token) - [ ] 页面跳转到 `/h5/login`(或窗口关闭) - [ ] 总耗时 < 3 秒 ### TC-004 确认退出 — 无活跃会话 - **Given** 员工刚登录,尚未发起任何对话(无活跃会话) - **When** 点击确定退出 - **Then** - [ ] 不调用 `close` API(跳过步骤1) - [ ] 直接调用 `POST /api/auth/logout` - [ ] 流程正常完成,跳转 `/h5/login` - [ ] 无控制台报错 ### TC-005 「结束会话」按钮 hover 态视觉反馈(桌面端) - **Given** 桌面浏览器访问 H5 员工端 - **When** 鼠标悬停在「结束会话」按钮上 - **Then** - [ ] 光标变为手型(`cursor: pointer`) - [ ] 按钮背景填充红色(`#ee0a24`)、文字变白色 - [ ] 无布局抖动 ### TC-006 退出后 Token 失效 - **Given** 已完成退出流程,跳转到 `/h5/login` - **When** 手动在地址栏输入 `/h5/` 并回车 - **Then** - [ ] 路由守卫拦截,重定向到 `/h5/login` - [ ] 不闪现聊天页内容 ### TC-007 企微 WebView 真实环境退出 - **Given** 企微 APP 内打开 H5 员工端 - **When** 执行完整退出流程 - **Then** - [ ] 窗口成功关闭(或跳转登录页作为降级) - [ ] 不出现白屏或错误页 - [ ] 无 JS 报错 --- ## 二、边界验收(5 项) ### TC-008 close API 失败不阻塞退出 - **Given** 员工有活跃会话 - **When** 模拟网络故障(DevTools 阻断 `/h5/conversations/current/close`),然后点击确定退出 - **Then** - [ ] Toast 提示"会话关闭失败,继续退出…" - [ ] 流程继续执行(仍然调用 logout API) - [ ] 最终正常跳转 `/h5/login` ### TC-009 logout API 失败留在当前页 - **Given** 员工处于聊天页 - **When** 模拟网络故障(DevTools 阻断 `/api/auth/logout`),然后点击确定退出 - **Then** - [ ] Toast 提示"退出失败,请稍后重试" - [ ] 页面不跳转,停留在聊天页 - [ ] 用户可重新尝试退出 - [ ] Token 和会话状态未被清除 ### TC-010 防重复点击 - **Given** 确认对话框已弹出 - **When** 快速连续点击「确定退出」按钮 2 次以上 - **Then** - [ ] 只发起一次 API 调用流程 - [ ] 不出现重复的 close/logout 请求 - [ ] 不会同时跳转两次 ### TC-011 退出后 WebSocket 断开 - **Given** 退出前 WebSocket 连接正常 - **When** 完成退出流程 - **Then** - [ ] WebSocket 连接断开(DevTools Network WS 标签确认) - [ ] 无 WebSocket 重连尝试 - [ ] 无心跳包继续发送 ### TC-012 InputBar「结束咨询」按钮不受影响 - **Given** 人工服务态,InputBar 显示「结束咨询」按钮 - **When** 点击 InputBar 的「结束咨询」按钮 - **Then** - [ ] 流程与改造前完全一致(弹出评价 → 提交 → 会话关闭) - [ ] 头像菜单功能不影响此流程 - [ ] 两个出口独立运作,互不干扰 --- ## 三、暗黑模式(1 项) ### TC-013 暗黑模式下按钮和对话框样式正确 - **Given** 切换到深色主题 - **When** 查看「结束会话」按钮,然后点击触发确认对话框 - **Then** - [ ] 「结束会话」按钮颜色适配暗色(CSS 变量自动处理) - [ ] 按钮文字可读(对比度足够) - [ ] 确认对话框(van-dialog)适配暗色 --- ## 测试环境要求 | 环境 | 要求 | |------|------| | 浏览器 | Chrome / Edge 最新版 | | 移动端 | 企微 iOS/Android 最新版 | | 后端 | 开发环境或 staging,`/api/auth/logout` + `/h5/conversations/current/close` 可用 | | 网络 | 需能模拟断网/阻断特定请求(Chrome DevTools Network 面板) | --- ## 测试结果记录 | 用例编号 | 结果 | 测试人 | 日期 | 备注 | |----------|------|--------|------|------| | TC-001 | ⬜ 待测 | | | 点击按钮弹出确认框 | | TC-002 | ⬜ 待测 | | | 取消返回 | | TC-003 | ⬜ 待测 | | | 有活跃会话完整退出 | | TC-004 | ⬜ 待测 | | | 无活跃会话退出 | | TC-005 | ⬜ 待测 | | | 按钮 hover 态 | | TC-006 | ⬜ 待测 | | | Token 失效验证 | | TC-007 | ⬜ 待测 | | | 企微真实环境 | | TC-008 | ⬜ 待测 | | | close API 失败 | | TC-009 | ⬜ 待测 | | | logout API 失败 | | TC-010 | ⬜ 待测 | | | 防重复点击 | | TC-011 | ⬜ 待测 | | | WS 断开 | | TC-012 | ⬜ 待测 | | | InputBar 互不干扰 | | TC-013 | ⬜ 待测 | | | 暗黑模式 | --- *文档结束*