Files
EchoChat/.playwright-mcp/task16/manual-regression.md
bujinyuan 5ed14c2aac docs(meeting): Task 16 E2E 剧本落盘 + .gitignore 精细化
Playwright MCP 4 场景剧本(.playwright-mcp/task16/):
- README.md:总览 + 账号/环境/资源断言指南
- scenarios/01-create-and-join-by-code.md:创建→会议号加入→媒体打通→结束,含 Redis/MySQL/media-server 三维资源断言
- scenarios/02-invite-link-with-password.md:邀请链接带密码 + P0-4 "密码不走 URL query" 回归
- scenarios/03-notify-quickjoin.md:通知中心「立即加入」跳转 + 过期卡片降级
- scenarios/04-host-toolkit-and-transfer.md:主持人四件套 + 宽限期重连/到期自动转让(P1-1 原子性 + P1-7 处理锁验证)
- scenarios/05-reopen-5times-resource-cleanup.md:反复开关 5 次 + 前端 heap 快照/ Redis 累积对比/ media-server 观测端点对比,验证 Step A(f5ae095)资源清理修复

手工回归点(manual-regression.md):17 项 MCP 难以稳定覆盖的交互场景
(HTTPS 自签 / 跨网段 iOS / 网络抖动 / 物理返回 / 跨 tab 并发 / 摄像头抢占 等)

.gitignore 调整:
- 放行 .playwright-mcp/task16/ 下的 Markdown 剧本文档进入版本控制
- 仍忽略运行时产物(*.log/*.png/*.yml/截图)
- task15/ 保持未跟踪状态,避免历史截图噪声入库

Made-with: Cursor
2026-04-23 17:21:42 +08:00

4.3 KiB
Raw Permalink Blame History

Task 16 手动回归点清单

Playwright MCP 难以稳定覆盖的交互场景,由开发者手工在 HTTPS 环境过一遍并记录结论。 状态列: 通过 / 失败 / 待跑 / 不适用

# 场景 操作步骤 期望 状态 备注
M1 HTTPS 自签证书首次允许 Chromium 打开 https://localhost:5173/ → 点「高级」→「继续访问」→ 依次放行摄像头/麦克风 uni-app 首页正常渲染;控制台无 Mixed Content 告警 Playwright 多 context 需预注入证书信任
M2 iOS Safari 真机跨网段入会 手机浏览器Safari / 微信内置)访问 https://<局域网 IP>:5173 → 扫码加入会议 音视频双向打通;NetworkBadge 显示 3 条绿波浪 iOS Safari srcObject 行为与 Chromium 存在差异
M3 网络抖动WS 断开 20s 后恢复 会议中开发者工具切到 Offline等 20s 后恢复 Online 无声无画面约 5s 后自动 resumeremoteConsumers 索引无漂移;不重复出现「其他用户」 关联 Task 14 reconnect 路径
M4 网络抖动WS 断开 > 2 分钟 Offline 维持 130s 后 Online 被服务端视为宽限到期Alice主持人转让给 Bob本地 UI 跳回首页 场景 04 路径 B 的手工版
M5 物理返回按钮离会 会议进行中按浏览器 / 手机物理返回 onUnload 触发 leave() → REST leaveRoom 成功 → 本地资源释放 关注 pages/meeting/room.vue onUnload
M6 结束页停留久后返回 主持人结束 → 停在「会议已结束」提示页 5 分钟 → 再点返回 exitEndedRoom 触发pinia state 重置;再次入会无残留 Step A F1 核心回归
M7 跨 tab 并发入同一会议 Alice tab 入会后复制 URL 到新 tab 再次打开 新 tab 命中"已在此会议中"保护;点提示按 cleanupStaleMeetings 自动清理后重试入会 关联 Task 11 ErrAlreadyInMeeting
M8 摄像头被系统抢占 入会后用其他应用抢占摄像头(如 FaceTime UI 显示占位封面 + 「摄像头被占用」toast会议不崩溃释放后可重新开摄像头 NotReadableError 分支
M9 浏览器关闭/崩溃恢复 入会后直接 kill 浏览器进程,重启后重新登录并入同会 残留 participant 通过 cleanupStaleMeetings + 自动重试加入恢复 与 M7 互补
M10 Chat 面板 - 长消息发送 在会议中聊天面板发送 5000 字消息 服务端拒绝 msg too long(期望 P2 新增限制)或前端提前拦截 对应 P2-7
M11 邀请 token 超时但会议仍存在 手工 SQL 将 meeting_invites.expired_at 改为过去时间 → 访问邀请链接 预览页显示「邀请已过期」,不允许加入;点「重新申请」可弹窗 对应 §6.4
M12 主持人关闭摄像头但麦克风保留 会议中点视频开关 → 仅摄像头关闭 自己画面占位 + 工具栏视频按钮变灰;音频仍正常;其他成员成员面板图标同步 对应 Task 15 状态
M13 静音氛围色 Alice + Bob + Carol 全员关麦 工具栏背景切蓝色渐变;有任何一人开麦则复位 Task 15 原创特色 4
M14 说话者流光轮廓 Bob 说话 ≥0.5s Bob 视频 tile 出现流光边框;停 1s 后消失 Task 15 原创特色 1
M15 图钉 / 浮窗切换 桌面端点自视频浮窗的图钉图标 自视频从浮窗切回 2×2 宫格格子;再点一次返回浮窗 Task 15 原创特色 3
M16 无网情况下直接访问会议 断网后访问会议首页 友好错误提示Retry 可恢复 通用容错
M17 高延迟网络150ms+ + 1% 丢包) DevTools Throttling 选 Slow 3G;入会并说话 音视频可连通(降级);不崩溃;NetworkBadge 波浪数降为 1-2 生产近似网络

手工验证数据记录模板

每次跑完某一条,在 docs/reports/test-report-phase2e-2-meeting.md 填入:

### M<编号> 验证记录

- 执行时间2026-04-xx HH:MM
- 环境Chromium 126 / macOS 25.3.0 / HTTPS 自签
- 结论:✅/❌
- 截图证据:`.playwright-mcp/task16/manual/M<编号>.png`
- 异常描述(若 ❌):...
- 修复动作:...