SuperAPI AI 工具集

potion-yjs-dev-browser-test

测试与质量

查看项目

更新于 10-16 06:15

技能介绍

用途:当 Slate Yjs 协作行为可疑时,把 Potion 当作实时行为参照(而非被测产品),用 dev-browser 隔离一个 Potion 标签页离线,再重放当前 bug 的复现步骤。不要把某次历史复现固化成固定流程。

主要能力与用法:确认用户已登录 127.0.0.1:9222 上持久化的调试 Chrome;使用现有调试浏览器,除非用户明确要求,否则不用一次性浏览器;使用一次性或已约定的 Potion 文档,仅在当前复现需要时重置或覆盖内容。打开两个命名页面(通常 potion-yjs-reference-a 与 potion-yjs-reference-b)指向同一 Potion URL。用逐页 CDP 只让 B 离线,切勿使用 page.context().setOffline(true),因为它影响整个浏览器上下文,通常会让两个标签页都断线。按当前复现步骤执行:B 离线时仅 B 本地编辑、A 保持连接时 A 侧在线编辑、B 重连,然后观察最终收敛、选区、历史或在线状态。将 Potion 观察结果与本地 Slate Yjs 结果对比,把 Potion 视为参考证据而非自动证明,并确认本地 schema 与操作形态等价。

逐页 CDP 模式:在复现脚本内使用 browser.getPage 获取两个页面,对 B 调用 pageB.context().newCDPSession(pageB),依次发送 Network.enable 与 Network.emulateNetworkConditions(offline: true, latency: 0, downloadThroughput: 0, uploadThroughput: 0),执行 B 本地离线复现步骤后,再发送 offline: false, latency: 0, downloadThroughput: -1, uploadThroughput: -1 恢复。编辑前先探测网络隔离:A 的 fetch 应成功,B 离线时 fetch 应失败。

不捆绑脚本:本技能不保留可复用脚本,因为每个协作 bug 的设置、操作、等待与断言都不同,固定脚本会很快过时。每个新用例应依据当前复现步骤写一个小的临时 dev-browser --connect http://127.0.0.1:9222 <<'EOF' 脚本,仅在需要迭代时保留在终端或 .tmp/,除非用户明确要求,不要将其提升为技能内的持久工具。

一次性复现模板:打开两个 Potion 页面并等待 [data-slate-editor="true"];仅准备该复现所需的起始文档状态;用逐页 CDP 让 B 离线;执行 B 侧离线操作;执行 A 侧在线操作;重连 B;从两个页面读取文档状态并记录结果;退出前恢复 B 在线并断开 CDP 会话。

结果解读:若 Potion 保留了本地 Slate Yjs 丢失的内容或历史,则本地行为可疑;若结果相同,则该冲突行为可信,但仍需验证本地操作序列确实与 Potion 一致;若不同,不要直接修复,先比较编辑器 schema、规范化、命令路径、选区形态与操作顺序。

失败处理:找不到编辑器时停止并请用户登录调试 Chrome 中的 Potion;页面提示文档不存在时停止并索取有效的共享文档 URL;导航被中断时用 CDP 强制两页在线并重试一次;实时观察运行超时时保留当前标签页状态,从打印的步骤继续而非盲目重启。