参考 OpenMausBot 提交 3a84701,参考仓库仅作读取。Web 移植为 Vue 与独立 SVG 动画控制器;iOS 移植对应 Swift 绘制代码与数据。没有新增运行服务或图片生成能力。
npx playwright test -c playwright.avatar.config.ts 运行两个隔离页面:参考 React 实现与产品 Vue 实现。默认参考仓库为相邻 OpenMausBot,也可指定 OPENMAUS_REFERENCE_ROOT。
28 个固定帧覆盖 8 个基础形状、10 个额外造型、10 个表情。只在临时参考副本中固定时钟为 0 并完成初始表情插值,逐项比较 SVG 轮廓属性、脸部锚点、眼睛路径与变换、嘴部路径与变换和纯色。
iOS 的 DeterministicFlowsUITests/testAvatarV2CanonicalFramesAndEditor 截取相同 28 个固定帧,并实际选择额外造型、颜色,验证重新选择基础形状清除额外造型。
本次对照通过。归一到相同尺寸后,Web 截图最大平均 RGB 差值约 0.012/255,iOS 与参考截图最大约 1.869/255;差异位于边缘抗锯齿及截图像素取整。背景透明,不附加头像底图。
使用隔离服务和合成账号,避免修改真实用户会话:
WORKSPACE_FIXTURE_PORT=18804 WORKSPACE_FIXTURE_UPSTREAM_PORT=19124 node --import tsx tests/fixtures/workspace-server.ts
# 在另一个终端执行,每次测试前重置这两个测试头像:
node scripts/seed-avatar-fixture.mjs
随后运行 iOS DeterministicFlowsUITests/testAvatarV2ChangesRoundTripThroughWebStorage。测试通过真实登录与 Bot 设置:Web 种下星星造型,iOS 改菱形;Web 种下圆形照片,iOS 改方形,保存重开后改圆角。每次用 Web API 回读,核对颜色、表情、造型/裁剪及原始图片字节未变。本次模拟器验证通过。
签名 IPA 的打包与签名检查独立于模拟器验证;本次不把模拟器结果视作实体设备安装证明。
本次 Web 全量单元/服务测试 506 项通过,类型检查与生产构建通过;iOS 相关单元测试 62 项通过。当前 Bot 模式完整浏览器流程、28 组头像对照与两条 iOS UI 流程通过。
通用旧浏览器套件仍包含已移除的团队/主题入口及插件升级状态文案;本次运行在这些旧断言上失败(7 条),停止后其余 30 条未执行,1 条中断。没有恢复旧入口以满足旧断言,也不将这次通用套件记为全量通过。当前 Bot 流程由 playwright.workspace.config.ts 的实际新建、设置、群聊与持久化流程验证;普通聊天与媒体另行回归。