十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

BrowserSkill 测试体系拆解:单元测试、浏览器回归与故障注入三层防线

BrowserSkill 测试体系拆解:单元测试、浏览器回归与故障注入三层防线 BrowserSkill 测试体系拆解单元测试、浏览器回归与故障注入三层防线【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkillBrowserSkill是一款让 AI Agent 直接操控你已登录浏览器的自动化工具由bsk命令行、本地守护进程和浏览器扩展三部分组成。正因为它要真实点击、填表、截图任何坐标偏移或时序抖动都可能导致点错地方所以官方构建了一套单元测试 浏览器回归 故障注入的三层测试防线。本文带你逐层拆解这套 BrowserSkill 测试体系是怎么工作的。第一层单元测试——毫秒级拦住低级错误单元测试是第一道也是最便宜的防线不需要启动浏览器秒级跑完在提交代码前就拦截拼写错误、状态机走错分支这类问题。BrowserSkill 是 TypeScript Rust 双语言项目两层防线分别配置浏览器扩展TypeScript使用 Vitest 运行配置在 vitest.config.ts。测试环境用happy-dom模拟浏览器 DOM覆盖 apps/extension/src/lib/recording/ 下的录制运行时、步态缓冲、目标匹配器等几十个模块测试文件与源码并排存放如 step-buffer.test.ts。CLI 与协议Rustbsk-cli和bsk-protocol两个 crate 自带单元测试与集成测试位于 crates/bsk-cli/tests/涵盖锁文件、握手兼容、会话队列、空闲退出等行为如 lockfile.rs、ws_handshake.rs。值得一提的是Vitest 配置特意镜像了生产构建的版本注入逻辑保证单元测试看到的版本号与线上构建一致——这种测试环境即生产环境的思路值得借鉴。第二层浏览器回归测试——真实浏览器里跑数值断言单元测试能模拟 DOM但模拟不了 Blink 布局引擎。所以第二层防线直接在真实 Chrome 里跑专门盯住几何坐标这类最容易出偏差的数值。典型案例是 OOPIF 滚动条回归跨站点 iframe 场景iframe 的内容区域包含子视口的滚动条空间而布局指标却不包含简单换算就会导致坐标整体拉伸。该回归的复现说明见 oopif-scrollbars/README.md核心测试在 snapshot-coordinates.browser.test.ts在两个嵌套 OOPIF 间交替使用 loopback 域名构造滚动、边框、缩放、被裁剪按钮等边界场景用真实点击验证事件是否落在正确的 frame 上覆盖 5 种设备缩放 / 浏览器缩放组合通过BSK_GEOMETRY_CHROME环境变量指定本地 Chrome 才启用普通单测运行会自动跳过——既保证回归常备又不拖慢日常开发。配套的 snapshot-coordinates/README.md 还记录了 DOMSnapshot 布局单位回归在缩放下布局单位与 CSS 像素混用会放大所有坐标误差修复后误差必须控制在 2 个 CSS 像素以内。第三层故障注入——用随机种子轰炸自动化流水线第三层是整个体系里最有设计感的部分一套数据驱动的本地浏览器评估语料库 evals/browser/可以理解为可控的故障注入场。五个测试套件各管一段语料库按用途分套件默认只跑core防止重用例悄悄拖慢 CI套件用途core每日冒烟与 CI 的稳定验收集matrix种子驱动的 DOM、时序、布局变体regression绑定具体 issue 的用户坏案例最小化复现stress高负载与边界测试manual依赖真人操作的确定性用例种子矩阵同一个用例N 种页面变体matrix套件里的generated-form用种子驱动页面生成标签关联、嵌套深度、水合延迟、干扰控件、字段顺序全部由种子推导见 generated-form.case.json。同一条任务在 100 个种子里就是 100 种页面形态任何一次失败都能凭种子精确重放再固化为命名回归用例——这就是故障注入的含义把随机性变成可复现的确定性输入。诚实校验没证据就算未验证断言分三个独立来源site页面事件、response输出标记、adapter外部事实如截图非空、会话已清理。关键原则是缺少证据就标记为unverified绝不悄悄当作通过——这一点写在 evals/browser/README.md 的设计目标里。坏案例的入册流程用户报障不会直接进仓库先用pnpm eval:browser scaffold case-id生成脚手架再把报告压缩成最小复现机制替换掉所有账号、URL、Cookie 等隐私数据最后验证旧构建必挂、新构建必过。规则详见 regression/README.md。总结三层防线如何协同层级运行环境速度拦截目标单元测试无头 DOM / 进程内秒级逻辑与状态错误浏览器回归本地真实 Chrome分钟级坐标、缩放、iframe 几何偏差故障注入评估语料完整 CLI 守护进程 扩展分钟级端到端行为与长尾变体官方在 evals/browser/README.md 中给出了明确的 PR 门禁改评估语料跑pnpm eval:browser:check改 CLI/扩展则在冒烟套件core必须 100% 通过且会话清理干净涉及 DOM 发现或时序的改动还要追加matrix --seed 4,7,14三个固定种子。正是这种分层 数据驱动 诚实断言的组合让 BrowserSkill 敢让 AI 直接操作你登录中的真实浏览器。【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表