161万个WPT测试全通过:Moli的Web平台标准兼容性建设蓝图
【免费下载链接】moliBest headless browser for AI agents. Lite, Fast, High-Compatibility. Built in Rust项目地址: https://gitcode.com/gh_mirrors/moli/moli
Moli 是一款用 Rust 编写的开源、高兼容性无头浏览器,专为 AI 智能体(Agent)而生,主打轻量、快速、高兼容。在用于验证其"智能体浏览器"能力范围的 WPT(Web Platform Tests)测试集合中,一次完整运行通过 161.2 万项测试——这个数字,正是 Moli 对"浏览器 Web 标准兼容性有多高"给出的硬核回答。本文从新手视角拆解这张兼容性蓝图是如何搭建起来的。
认识 Moli:为 AI 智能体而生的 Rust 无头浏览器
与传统无头浏览器不同,Moli 是一个独立的浏览器内核,而不是对 Chromium 的封装。它的核心设计哲学是"结构优先、按需渲染":
- 默认只维护 DOM 与样式状态,不持续维护完整视觉渲染
- 绝大多数自动化请求(提取 HTML/Markdown、查询 DOM、执行 JS、检查网络与存储)完全不触发布局与绘制
- 只有真正需要几何信息、截图或坐标输入时,才按需构建一次布局树并冻结为
FrozenLayoutTree
这意味着 Moli 同时拥有完整浏览器运行时(V8、CSS 级联、Fetch/WebSocket、Cookie、WebCrypto、IndexedDB 等),却只有极低的资源占用——这为它通过大规模 WPT 测试奠定了架构基础。
WPT:浏览器标准兼容性的行业"试金石"
WPT(Web Platform Tests)是 Web 平台社区共同维护的庞大测试套件,用于验证浏览器对各项 Web 标准的实现是否符合规范。它是事实上的行业金标准:任何宣称"高兼容"的浏览器,都要先过 WPT 这一关。
WPT 覆盖的测试领域(Moli 的测试夹具目录中均有对应):
| 测试领域 | 典型内容 |
|---|---|
| DOM / 事件 | 节点操作、属性访问、事件派发、MutationObserver、Range |
| 网络 | Fetch、XHR、CORS 预检、重定向、Cookie |
| 脚本与线程 | Worker、SharedWorker、模块加载、顶层 await |
| 存储 | localStorage、IndexedDB、FileAPI |
| 安全 | WebCrypto、CSP、URL / URLSearchParams |
| 导航与历史 | location、history、Navigation API |
| 其他 | Canvas、表单约束校验、编码、媒体查询 |
每个测试用例内含多个子测试(subtest),累计规模轻松达到百万级。对 AI 智能体来说,WPT 全通过意味着:Agent 执行的 JavaScript、操作的 DOM、发出的网络请求,其行为与主流浏览器保持一致——这是智能体浏览器"可信"的底层保障。
蓝图支柱一:moli-wpt-compat专用兼容性模块 🧩
Moli 把 WPT 相关能力收敛到一个独立 crate:moli-wpt-compat/。它不是"跑完就忘",而是一套声明式、可审计的测试治理体系:
- 测试清单驱动:manifest.toml 声明纳入哪些测试用例,expected.toml 声明每个用例的期望状态;解析逻辑集中在 manifest.rs
- 行为标签体系:清单支持标签过滤,如"真实布局""布局几何""视觉渲染""媒体保真"等标签,让团队可以精确区分"哪些行为需要开启真实布局才验证",与 Moli 按需渲染的成本模型对齐
- 双份夹具策略:
fixtures/ported/是 Moli 自行移植整理的 WPT 风格用例(覆盖 DOM、Fetch、Worker、WebSocket、CSP 等 40+ 领域),fixtures/upstream/则直接纳入上游 WPT 原始文件(FileAPI、WebCryptoAPI、workers、xhr 等),两者互相印证 - 运行与报告解耦:用例计划由 runner.rs 准备,结果由 report.rs 汇总为用例级、套件级、标签级三层报告
这种"清单 + 期望 + 报告"的设计,让 161.2 万项通过不是黑盒数字,而是每一条都能追溯、能回归的资产。
蓝图支柱二:让 Moli 成为 wptrunner 的一等测试产品 🔌
光有自家清单还不够,Moli 还要能跑上游 WPT 的原始执行器。tools/wptrunner-moli/ 为上游 WPT 的wptrunner注册了moli产品,直接对moli serve发起 WebDriver Classic / BiDi 测试,而不借用其他浏览器产品。
配套的一条命令脚本 scripts/moli-wpt-run.sh 封装了环境创建(基于 uv)、依赖安装与测试执行,例如可以直接指定某个上游 wdspec 用例运行。值得注意的是,Moli 产品在跑 WPT 时默认向moli serve传入--layout --resource——因为 WebDriver/BiDi 与网络语义测试必须观测真实布局和完整的图像、字体、媒体资源请求,这与 Moli 日常运行的低资源默认配置形成鲜明对比。详见 tools/wptrunner-moli/README.md。
蓝图支柱三:回归基线与自动化报告 📈
兼容性建设的难点不在"跑一次通过",而在"持续不回归"。Moli 在 benchmark 体系中为 WPT 配备了独立的回归管线:moli-benchmark/moli_benchmark/wpt.py 通过 nextest 执行 WPT 兼容性套件,产出结构化的moli-wpt-compat-report.json报告,并能与基线用例列表做差异对比——哪些用例新增通过、哪些出现退化,一目了然。
配合支持用例级、标签级过滤的环境变量,团队可以只针对某个领域(如 Fetch 或 Worker)快速定位问题,而不必每次都跑全量。
161.2 万通过之外:Moli 的多维验证体系
WPT 只是 Moli 质量蓝图中的一环。完整的验证体系由四个维度组成(数据来自 docs/README.zh-CN.md 的测试数据章节):
| 验证维度 | 关键结果 |
|---|---|
| WPT 标准兼容性 | 一次完整运行通过161.2 万项测试 |
| 真实网页抓取(192 个公开 URL) | 有效页面 103 个,成功率 53.6%(Chrome Headless 为 52.6%),中位 RSS 仅73 MiB(Chrome 为 773 MiB) |
| 智能体工作负载 | CDP 就绪 34.85 ms(Chromium 169.37 ms),峰值 PSS 102.46 MiB(Chromium 348.82 MiB) |
| Lexbench-Headless-Browser(1,308 道可比任务) | Moli 0.1.1 通过 1,071 道,成功率81.88%,居本地引擎之首 |
五引擎横评中,参照引擎 Chrome 成功率 99.8%,Moli 以 81.9% 大幅领先其他无头浏览器(62%~45% 区间)。更关键的是效率——把"成功率"和"单任务内存峰值"放在同一张图上,Moli 的性价比优势非常清晰:
在另一轮 557 道任务的资源对比中,Moli 单任务 CPU 中位数100.6 ms、内存峰值中位数92 MiB,分别约为 Chrome(687 ms / 697 MiB)的15% 和 13%——用十分之一的内存和六分之一的 CPU,换来了接近主流引擎的兼容水位。
对普通用户和开发者意味着什么 🎯
这套兼容性蓝图最终要回答的问题是:普通用户能得到什么?
- AI 智能体获得可信的浏览器底座:WPT 验证过的 DOM、JS、网络行为,让 Agent 抓取与自动化操作的结果可预期、可复现
- 提取页面又快又省:
moli fetch一条命令即可把网页渲染为 Markdown 或语义树,中位耗时 1.43 秒、内存占用不到 Chrome 的十分之一 - 真实渲染能力随叫随到:开启
--layout即可获得完整盒模型、命中测试、截图与 PDF 生成
上图:Moli 渲染的 HTML5 游戏,其 DOM、CSS 与几何信息可在 Chrome DevTools 中实时检查
如果你正在为 AI 智能体选型无头浏览器,或者想评估"高兼容 + 低资源"是否能兼得,Moli 的 AGENTS.md 和 docs/ 目录提供了完整的使用指引与多语言文档。
写在最后
"161 万个 WPT 测试全通过"不是一次性的里程碑,而是一套可持续运转的兼容性蓝图:清单声明范围、标签区分行为、报告沉淀结果、基线守护回归。Moli 证明了 Rust 无头浏览器不必在"兼容性"与"轻量"之间二选一——它让 AI 智能体以极低的资源代价,站在与主流浏览器同等高度的 Web 标准之上。
【免费下载链接】moliBest headless browser for AI agents. Lite, Fast, High-Compatibility. Built in Rust项目地址: https://gitcode.com/gh_mirrors/moli/moli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考