MV2 扩展迁移对照跑
扩展迁移到 MV3 时,并排重放真实浏览流程,立刻找出新版从哪一步失去旧有能力。
Chrome 移除旧版 MV2 扩展的安装渠道后,维护者最怕的不是改不动 API,而是 MV3 版本在某个真实页面上悄悄少拦了一类请求。这里的 MV2 与 MV3 是 Chrome 扩展的两代运行规则。团队上传仍在线上运行的旧包和待发布的新包,再选出最能代表用户习惯的网页、登录状态与点击流程。
产品启动两组隔离浏览器,让旧版与新版影子执行同一段操作:打开标签页、切换账户、访问动态页面、触发网络请求,再改动权限状态。它把两边的页面结果、请求记录、存储变化和控制台输出对齐。只要结果出现分叉,报告就停在第一个不同的动作上,附上触发条件、相关 API 和可直接运行的最小复现脚本。
维护者可以把一次修复后的流程存成回归用例,提交代码时自动重跑。首个版本聚焦广告拦截、脚本管理和隐私类扩展常见的网络请求与后台任务,不试图替团队设计完整迁移方案。它交付的是一份能被工程师马上复现和修掉的行为差异清单。
为什么是现在
2026年8月31日,Chrome Web Store 移除了所有剩余 MV2 扩展。S1 已装旧版也无法更新或重装,维护者因此更急于在发布前排查 MV3 的静默行为回退。S1
目标用户
面向仍维护广告拦截、脚本管理或隐私扩展的小团队。最需要它的时候,是 MV3 候选包准备提交商店前,或迁移修复刚合并时。此时单元测试通常已通过,团队更担心登录态、动态页面和权限切换后的行为偏差。值班维护者需要可直接复现的差异,而不是再读一份迁移清单。
最小切入点
用 Playwright 接管两个隔离的持久化浏览器配置,并分别载入解压包。S2 双跑先固定同一 Chrome 138 基线,并启用官方保留策略。S1 操作录制只覆盖导航、点击、账户切换和权限变更。采集层通过 Playwright 事件与 CDP 记录 DOM 摘要、请求、控制台和存储快照。对齐器按动作边界比较,不追求整页像素一致。报告先给首个分叉,再生成可重跑的 Playwright 用例。通过对照后,MV3 包再到当前 Chromium 做单包冒烟测试。
以小博大
第一批用户就在 GitHub 上仍保留 MV2 与 MV3 构建的扩展仓库。把运行器做成可复用的 GitHub Action,在迁移 PR 中附上首个行为分叉和复现脚本。可挑公开的广告拦截或脚本管理项目,提交可核验的失败用例。再公开一组脱敏差异报告,让维护者判断它是否比现有 E2E 更省排查时间。
竞品与缝隙
怎么赚钱
按团队订阅收费,套餐包含固定的并行回放与 CI 运行额度。超出额度后,按浏览器运行时长计费。本地部署和私有运行器作为更高档方案。
反方视角
动态站点会制造大量假差异。广告轮换、A/B 实验、时间戳和接口返回,都可能先于扩展发生分叉。若归一化过强,真实漏拦又会被抹掉。登录流程还涉及验证码、双重验证和会话过期,回放稳定性会直接影响报告可信度。旧版运行器必须固定在 Chrome 138,长期维护过期浏览器和高风险沙箱并不轻松。S1 扩展包与登录态也很敏感,隔离、密钥销毁和本地部署会抬高交付成本。首个分叉一旦频繁误报,工程师很快会回到手工复测。