测试测试智能体人工智能浏览器控制CLI【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址https://gitcode.com/GitHub_Trending/e2e6/e2e点击查看免费下载本文以 packages/kernel/CHANGELOG.md 为主线完整梳理e2e-dev/kernel从 0.1.0 到 0.2.0 的全部版本变更托管浏览器 Provider 的设计lease scope、tag 管理、空闲回收、replay 录屏、下载回读、死 worker 清理、依赖瘦身与 MCP SDK 拆分以及 0.2.0 的 Node.js 版本基线调整与 oxc 驱动的自研 TypeScript loader。读完后你能理解该集成包每个版本的动机与边界并结合 provider 源码 与 单元测试 验证其实际行为。一、包定位与版本时间线CHANGELOG 的顶层标题是e2e-dev/integrations这记录了该包的一段历史它在 canary 阶段0.1.0-canary-20260929180659以e2e-dev/integrations/kernel子路径的形式诞生——changelog 原文称其为 the home of official integrations with hosted services, one subpath each官方托管服务集成的之家每服务一个子路径。到 0.1.0 正式发布时Kernel 集成独立为e2e-dev/kernel包这也是 packages/kernel/package.json 当前name: e2e-dev/kernel、version: 0.2.0的由来。各版本主题一览版本类型主题0.1.0Minore2e-dev/kernel首发Kernel 托管 Chromium Provider含 replay 录屏附带下载回读、worker 泄漏清扫、错误信息裁剪三项 patch 修复0.1.1Patchnpm 包页面元数据e2e主包携带仓库 README全部包补充搜索关键词0.1.2Patch安装瘦身117 → 29 个包36MB → 31MB、e2e mcp换用拆分版 MCP SDK、发布产物去掉 sourcemap0.2.0MinorBreakingNode.js 基线升至^22.22.3 \|\| 24.8.0e2e 弃用 tsx改用基于 oxc 的自研 TypeScript loader当前包的运行与依赖约束可从 package.json 直接确认engines.node为^22.22.3 || 24.8.0三个 peer 依赖为e2e-dev/web 0.11.0 1、onkernel/sdk 0.113.0 1、e2e 0.15.0 1。二、0.1.0Kernel 托管浏览器 Provider 的诞生2.1 核心能力0.1.0 引入了e2e-dev/kernel包与kernel()函数web({ browser: kernel() })让 web 引擎把每个 target 跑在 Kernel 的托管 Chromium 中。changelog 与 README 给出的最小配置如下npm install --save-dev e2e-dev/kernel onkernel/sdkimport type { E2EConfig } from e2e; import { web } from e2e-dev/web; import { kernel } from e2e-dev/kernel; export default { targets: [{ engine: web({ browser: kernel({ stealth: true }), viewport: null }), app: { url: https://staging.example.com } }], workers: 4, } satisfies E2EConfig;changelog 记录的四个关键设计点逐一对照源码均可印证kernel(options)原样接收 Kernel 的 create-browser body。KernelOptions类型直接继承 SDK 的BrowserCreateParamsstealth、headless、timeout_seconds、profile、proxy_id、viewport、tags等见 provider.ts 的类型定义。KERNEL_API_KEY从 run 的环境读取。env.ts 中的envValue会 trim 值并在为空时返回undefinedprovider 随即抛出KERNEL_API_KEY is not set每个 API key 只创建一个 SDK clientchangelog 与 单元测试 都覆盖了这一点。每个浏览器自动打 tage2e_run、e2e_target、e2e_slotattempt scope 下再加e2e_attempt并合并用户传入的tags。见 provider.ts 的 acquire 实现——tag 用于让 Kernel 仪表盘上的会话能追溯到发起它的 run也是后文 sweep 清扫的依据。timeout_seconds默认 600 秒作为死 worker 永远不会释放浏览器的最终防线由 Kernel 侧删除空闲超时的浏览器。源码中该常量及其注释在 provider.ts且显式传入的timeout_seconds会覆盖默认值单测中kernel({ scope: attempt, timeout_seconds: 60 })断言了这一点。此外每次 lease 创建成功后若 Kernel 返回 live view URLprovider 会通过request.log输出browser id, watch at url一行日志方便开发者实时观察托管浏览器。2.2scopeworker 与 attempt 两种租约粒度scope: worker默认一个 worker slot 在整个 run 期间持有一个浏览器prepare时租约、finish时释放。scope: attempt每次测试 attempt 租一个全新浏览器。changelog 明确说明scope是 web 引擎定义的租约概念never passed to Kernel单元测试也断言 create body 中不出现scope字段。2.3 replay 录屏video/replay.mp40.1.0 同时引入对录制视频的 attemptkernel()把录制实现为Kernel 对浏览器屏幕的 replay产物保存为 attempt 产物目录下的video/replay.mp4。replay选项三种形态省略或true使用 Kernel 默认参数启动 replay传入 Kernel 的 start-replay bodyframerate、max_duration_in_seconds、record_audio按该参数录制falseprovider 不接管录制回退到 web 引擎的页面 screencast。实现上provider 返回对象按条件挂载record函数provider.tsreplay false或headless true时不挂载record因为Kernel 只能 replay 有头headed浏览器——无头浏览器一律走 screencast。stop的实现还有一个细节先停 replay 再下载 MP4且用stopped标志保证重试下载时不会二次 stop单元测试 专门验证了下载失败后重试、replay 只停一次的行为。replay 参数只在 start-replay 时下发绝不混入 create-browser body对应测试。三、0.1.0 附带的三项 patch 级修复3.1 错误信息不再携带尾部换行Kernel 的错误 body 以换行结尾如401 Invalid or disabled API key\n会拆断 run 的错误行。client.ts 的trimmed在保留错误对象与错误类型的前提下 trim 其 message最终错误呈现为单行browser provider kernel could not lease a browser: 401 Invalid or disabled API key while preparing engine web for target kernel。3.2browser.waitForDownload在托管浏览器上可用修复前托管浏览器的下载每次都失败于download failed: download.saveAs: canceled因为托管浏览器把下载文件存到它自己机器上的磁盘本地引擎无法直接取回。0.1.0 让BrowserProvider可以声明downloads: { dir, read }引擎让浏览器把下载保存到远端dir再通过read回读完成后的文件。kernel()的实现是远端目录固定为/tmp/e2e-downloadsread走 Kernel 的 browser filesystem APIprovider.ts 的 downloads 定义client.ts 的 readFile。对未实现downloads的 provider失败信息会点名 provider 与缺失的downloads能力。3.3 worker 死亡不再泄漏浏览器scope: attempt下崩溃或被杀的 worker 曾把当次 attempt 的浏览器留到timeout_seconds到期默认十分钟才被 Kernel 删除。0.1.0 让BrowserProvider可声明sweep(context)run 结束时引擎对每个 target 调用一次释放 worker 遗留的租约。kernel()的 sweep 实现 按e2e_rune2e_target两个 tag 列出该 target 仍 active 的浏览器并逐个删除reporter 会点名每只被释放的浏览器删除失败非 NotFound会聚合报错deleted …; could not delete …, so Kernel ends it after timeout_seconds。四、0.1.1npm 分发元数据0.1.1 只改包的分发呈现e2e主包的 npm 页面携带仓库 README且所有包都补齐了目标用户会搜索的关键词。package.json 中的keywordse2e、end-to-end、testing、ai-testing、kernel、cloud-browsers、hosted-browsers、browser-automation、chromium即是这一条变更的落点。五、0.1.2依赖瘦身与 MCP SDK 拆分0.1.2 的变更集中在安装体积与发布产物上安装瘦身安装e2e从引入 117 个包、约 36MB降为 29 个包、约 31MB。e2e mcp换用拆分版 MCP SDKmodelcontextprotocol/server2.2.0 取代modelcontextprotocol/sdk。后者拖进 express、hono 等一整套 stdio 服务器永远用不到的 HTTP 栈拆分后e2e mcp走瘦身的服务器端。协议版本保持不变已有 MCP client 无需任何改动即可连接。发布产物不带 sourcemap此前的 sourcemap 指向从未随包发布的src/目录纯属噪声此后 stack trace 展示dist/的位置。六、0.2.0Node.js 基线提升与 oxc TypeScript Loader6.1 Breakingengines.node收紧changelog 明确标注这是 breaking changee2e 及所有e2e-dev包要求 Node.js 22 系列上的 22.22.3 或更新或 24.8.0 或更新engines.node为^22.22.3 || 24.8.0。Node.js 22.12–22.22.2、23 全系、24.0–24.7 不再受支持CLI 在这些版本上拒绝启动并指明应升级到的版本。动机这些版本上当测试导入的 CommonJS 文件 require 到 TypeScript 时新版 loader 的module.registerHooks会触发缺陷changelog 标注 nodejs/node#59679修复发布于 22.22.3 与 24.8.0。6.2 弃用 tsx改用基于 oxc 的自研 loaderchangelog 同时宣布e2e 现在用自己的、构建在 oxc 之上的 loader加载 TypeScript替代 tsx。直接诱因是 tsx 引入 esbuild其 postinstall 脚本会让 pnpm 11 及以后版本的每次pnpm install失败于ERR_PNPM_IGNORED_BUILDS除非项目显式批准构建切换后e2e 安装的任何包都不再运行 install 脚本。保持不变的加载能力changelog 逐项列出按package.json声明决定 ESM/CJS./x.js与./x解析到x.ts./x.jsx解析到x.tsx目录 index 导入tsconfigpaths与baseUrlworkspace 包直接导出.ts源码.tsx/.jsx中的 JSX、enums、namespaces、experimentalDecorators、带 source map 的 stack trace不带with { type: json }的 JSON 导入依然可用。新修复与行为变化同样逐项来自 changelog测试文件名含%、#或空格时能以正确的 source location 收集不再报 URI malformed 或丢失位置信息每个文件读取离它最近的tsconfig.json而不是工作目录里的那份.cts文件中的import语句不再被编译成require调用需要时写import x require()无experimentalDecorators的标准 decorators、auto-accessors、.cts中的 ES moduleimport与值export声明会被拒绝并给出具体行号import type、export type、import x require()、export 仍然可用CLI 拒绝 Bunbun --bun与 Deno 运行时——用任意包管理器安装、在 Node.js 上运行未用import type导入却残留在输出中的类型例如emitDecoratorMetadata下被装饰成员的类型会加载失败错误信息点名该 importCommonJS 文件 require 的.ts文件按普通.ts一样作为 ES module 运行用module.exports写的那类文件需要改用.cts扩展名JavaScript 文件里写出的 import 按 Node.js 规则解析不再套用 TypeScript 的扩展名规则或 tsconfigpaths已安装包内部的 TypeScript 编译时不套用项目自己的tsconfig.json。七、源码与测试交叉验证以上 changelog 描述可在仓库中逐一找到对应实现与断言provider.tskernel()主实现含acquire打 tag、默认 600 秒超时、取消后到达的浏览器立即删除并报告删除结果、releaseNotFound 视为已删除、sweep按 run/target tag 清扫、downloads/tmp/e2e-downloads fs API 回读与条件挂载的record。client.tsonkernel/sdk的薄封装——SDK 在首次使用时动态importa config load never pays for it加载配置永不为此付出成本所有 SDK 调用透传AbortSignal。kernel.test.ts用 mock SDK 验证 create body 与 tag 结构如tags: { team: qa, e2e_run: run-1, e2e_target: web, e2e_slot: 1 }、live view 日志行、release/取消路径的删除、sweep 的部分失败聚合、replay 的 start/stop/download 序列与重试语义。docs/integrations/kernel.mdx面向使用者的完整文档补充了 changelog 之外的操作细节如viewport: null让页面占满窗口、scope: attempt下headers/basicAuth/userAgent/locale/timezoneId与 sessions 的限制、framerate高于 20 需gpu: true等。八、适用前提与限制小结运行环境Node.js^22.22.3 || 24.8.0拒绝 Bun/Deno 运行时KERNEL_API_KEY必须存在于e2e run的启动环境如 CI secret缺失或无效 key 会在 lease 阶段失败workerscope 下在首个测试前结束 runattemptscope 下失败该 attempt。依赖前提e2e-dev/kernel与e2e、e2e-dev/web、onkernel/sdk为 peer 关系安装命令需同时带上onkernel/sdk。录制限制Kernel replay 仅支持有头浏览器headless: true或replay: false时回退为 web 引擎的页面 screencast。租约粒度取舍scope: attempt每次 attempt 支付一次浏览器启动成本并受 per-attempt lease 的能力限制workerscope 下每个 attempt 得到新的浏览器上下文但 Kernelprofile预存的 cookies/storage 不会进入引擎创建的上下文见 文档说明。这条版本线勾勒出一条清晰的演进轨迹0.1.0 把托管浏览器做成与本地浏览器无差体验的 Provider含泄漏治理0.1.1–0.1.2 打磨分发与体积0.2.0 则把基础设施运行时基线、TypeScript loader换成更轻、更可控的自研方案。对维护 e2e 集成或自写BrowserProvider的开发者而言e2e-dev/kernel的acquire/release/sweep/downloads/record五个钩子与 changelog 中记录的行为边界是值得直接参考的实现范本。赞分享测试测试智能体人工智能浏览器控制CLI【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址https://gitcode.com/GitHub_Trending/e2e6/e2e点击查看免费下载相关推荐e2e 框架接入 Kernel 托管浏览器e2e-dev/kernel 浏览器 Provider 的安装、配置与源码级解析e2e 框架接入 Kernel 托管浏览器e2e dev/kernel 浏览器 Provider 的安装、配置与源码级解析 e2e dev/kernel测试测试智能体人工智能浏览器控制CLIe2e 集成 EAS Simulatorse2e-dev/eas 的版本演进与 easSimulators() 实战指南e2e 集成 EAS Simulatorse2e dev/eas 的版本演进与 easSimulators 实战指南 e2e dev/eas 是 e2e测试测试智能体人工智能浏览器控制CLIKernel 托管浏览器 Provider 接入指南在 qm 中创建浏览器、注入文件与路由登录墙Kernel 托管浏览器 Provider 接入指南在 qm 中创建浏览器、注入文件与路由登录墙 Kernelonkernel.com是 qm 项目 br人工智能AI Agent多智能体Agent 编排后端工具调用Agent 记忆Agent 沙箱上一篇d2dx终极指南让暗黑破坏神2在现代PC上焕发新生的完整方案下一篇7种字重全搞定Source Sans 3字体包让你的界面设计更专业创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考