编程 用 Baseline 判断 Web 特性能不能上:Dashboard 查询语法、HTTP API 与 WPT 测试约定

2026-09-13 00:03:08

用 Baseline 判断 Web 特性能不能上:Dashboard 查询语法、HTTP API 与 WPT 测试约定

背景问题

浏览器是 evergreen 的,每个月都有新特性进入稳定版。怎么知道某个 CSS 属性或 Web API 现在能不能放心用?以前只能翻 Can I Use 靠经验猜。

Baseline 是什么

Web Platform Baseline(简称 Baseline)给出「哪些 Web 平台特性现在可以安全使用」的明确信息。最初由 Chrome 团队提出,现在由 W3C 的 WebDX Community Group 定义。

Baseline 有三个状态:

  • Limited availability:还没在所有核心浏览器实现,尚未进入 Baseline。
  • Newly available:所有核心浏览器都支持,已经可互操作(interoperable)。
  • Widely available:从 Newly available 起算已经过去 30 个月,可以认为绝大多数站点用起来无需担心兼容与 polyfill。

每年会把当年成为 Newly available 的特性归为一个特性集,叫 Baseline target,例如 Baseline 2026、Baseline 2025、Baseline 2024。

Web Platform Dashboard(webstatus.dev)

Web Platform Dashboard 用来查询某个特性是 Baseline Newly 还是 Widely available,由 web-features npm 包提供数据支撑。它基于浏览器厂商与社区维护的公开数据:浏览器兼容性数据(BCD)、web-features、Web Platform Tests(WPT)。

它并不取代 Can I Use 或 MDN 的兼容性表,而是提供一个整体视角:能看到整个 Web 平台以「特性集合」的形式呈现,以及每个特性的实现进度(WPT 得分)。

查询语法(可在 dashboard 搜索框直接用)

  • baseline_status: limited / newly / widely —— 按 Baseline 状态过滤。limited 只返回尚未达到任何 Baseline 状态的特性。
  • baseline_date: YYYY-MM-DD..YYYY-MM-DD —— 按进入 Baseline 的日期区间过滤,起止用 .. 分隔。例如查询 2024-01-01..2025-01-01 之间进入 Baseline 的特性。
  • group: css —— 按特性分组过滤;只要 CSS 相关特性用 group:css。组合可用逻辑运算符,例如 -baseline_status:limited AND group:css 得到所有 Baseline(newly + widely)的 CSS 特性。
  • id: —— 按 web-features 包里的特性 ID 查询。

HTTP API

Dashboard 前端之下是一套 HTTP API,可直接查询并把 Baseline 数据接进工具链。

返回 JSON 顶层是 data 数组,每个特性字段一致,关键字段:

  • baseline.statuslimited / newly / widely。为 limited 时只返回该子字段。
  • baseline.low_date:成为 Baseline Newly available 的日期(status 为 newly 或 widely 时提供)。
  • baseline.high_date:成为 Baseline Widely available 的日期(status 为 widely 时提供)。

分页:单次查询最多返回 100 个特性。超过时顶层出现 metadata 字段,含 page_token(下一页 token)和 total(总数)等,用 page_token 继续拉取。

工具链集成

  • Browserslist 内置了 Baseline 查询,可在 lint / 打包流程里指定 Baseline 目标。
  • ESLint 已支持 CSS 与 Baseline,可以 lint 并强制只使用 Baseline CSS 特性。
  • VS Code 现在支持 Baseline。
  • 有 Netlify 的 Baseline 扩展。
  • 相关链接:

Web Platform Tests(WPT)

web-platform-tests 是 Web 平台栈的跨浏览器测试套件,规范来源包括 WHATWG、W3C 等。编写成 WPT 的测试可以在所有浏览器运行,让浏览器项目确认自己的实现与其他实现兼容。

主要测试类型:

  • testharness.js 测试:JS 测试框架,测除渲染以外的行为(DOM、API、事件等)。注意时机与全局状态清理,用 t.add_cleanup(),用 `` 处理慢测试。
  • reftests:截屏并比较两个页面。默认在 load 事件后截图;给 `` 加 reftest-wait 类,移除该类时才截图。字体相关容易不稳定,尽量用 Ahem 字体。
  • wdspec:WebDriver 相关测试。需要自动化输入/用户手势时用 testdriver.js(test_driver.blesstest_driver.action_sequence)。

文件名约定:.any.js 会在多个全局作用域(window、worker)中运行;.https.sub.html 通过 HTTPS 加载并支持服务端替换({{hosts[][]}}{{ports[https][0]}});.tentative 表示测试规范中尚未包含的行为。

命令:wpt serve 起 HTTP 服务器,wpt run 在浏览器运行测试,wpt lint 跑 lint,wpt manifest 生成清单,wpt install 装浏览器/webdriver。

wpt.live 是公开部署,可任意浏览器直接跑;wpt.fyi 汇总各浏览器定期跑的测试结果,用来对比互操作性。Chromium 与 WPT 上游是双向 import/export(web_tests/external/wpt);Firefox 用 wpt-sync bot 双向同步,并在 meta/*.ini 里存 Gecko 专属期望结果(expected 键)。

边界与取舍

  • Baseline 是「浏览器都实现了」的保证,不代表你自己的用户浏览器分布,LTS / 旧设备 / 企业环境仍可能落后。
  • Widely available 的 30 个月是经验阈值,不是硬承诺。
  • API 单次最多 100 条,需要 page_token 翻页。
复制全文 生成海报 Web Platform Baseline Tests WPT WebDX 前端工程

推荐文章

程序员茄子在线接单