Web Platform Tests (WPT) 跨浏览器测试套件
项目标题与描述
Web Platform Tests (WPT) 是一个跨浏览器的测试套件,用于验证Web平台栈的兼容性。其目标是确保不同浏览器实现的一致性,帮助开发者构建跨浏览器兼容的Web应用。
- 核心目标:通过标准化测试减少浏览器差异,推动Web平台的互操作性。
- 覆盖范围:包括HTML、CSS、JavaScript API、ARIA、WebRTC、传感器API等。
- 关键资源:
- 代码仓库:GitHub
- 文档网站:web-platform-tests.org
- 在线测试部署:wpt.live
功能特性
-
跨浏览器测试
- 提供统一的测试用例,可在所有主流浏览器中运行。
- 示例:测试
<accelerometer>API在不同浏览器中的行为一致性。
-
自动化测试框架
- 集成
testharness.js用于自动化测试验证。 - 支持异步测试和交互式测试(如点击、表单提交)。
- 集成
-
辅助功能(ARIA)测试
- 验证ARIA属性的正确实现(如
aria-owns、aria-label)。 - 示例:测试屏幕阅读器对动态ARIA属性的解析。
- 验证ARIA属性的正确实现(如
-
WebRTC与身份验证
- 包含模拟身份提供者(IdP)的测试,验证WebRTC的身份断言机制。
-
传感器API测试
- 覆盖加速度计、重力传感器等硬件API的测试用例。
安装指南
依赖项
- Python 3.x
- Git
- 浏览器驱动(如ChromeDriver、GeckoDriver)
安装步骤
- 克隆仓库:
git clone https://github.com/web-platform-tests/wpt.git cd wpt - 安装依赖:
./wpt install - 运行测试:
(例如:./wpt run [browser-name] [test-path]./wpt run chrome accessibility/)
使用说明
基础测试示例
测试加速度计API的启用状态:
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(() => {
assert_in_array('accelerometer', document.featurePolicy.features());
}, "验证accelerometer在Feature Policy中已声明");
</script>
ARIA测试场景
验证aria-owns的动态更新:
<div id="parent" aria-owns="child"></div>
<div id="child">动态内容</div>
<script>
document.getElementById('parent').setAttribute('aria-owns', 'new-child');
</script>
核心代码
1. WebRTC模拟身份提供者(IdP)
// mock-idp.js
function parseQueryString(urlStr) {
const url = new URL(urlStr);
const result = {};
for (const [key, value] of url.searchParams) {
result[key] = value;
}
return result;
}
// 生成无安全性的身份断言(仅用于测试)
function generateAssertion(contents, origin, options) {
return {
idp: { domain: "test-idp.example" },
assertion: JSON.stringify({ contents, origin, options })
};
}
2. 加速度计传感器测试
// generic-sensor-tests.js
function runGenericSensorTests(sensorData, expectedReadings) {
test(async t => {
const sensor = new sensorData.type({ frequency: 60 });
sensor.onreading = () => {
assert_approx_equals(sensor.x, expectedReadings.x, 0.1);
};
sensor.start();
});
}
3. ARIA属性崩溃测试
<!-- 验证aria-owns不引发崩溃 -->
<div aria-owns="nonexistent"></div>
<script>
document.querySelector('div').removeAttribute('aria-owns');
</script>
通过WPT,开发者可以确保其代码符合Web标准,并在不同浏览器中表现一致。欢迎贡献测试用例!
许可证:3-Clause BSD License
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码


浙公网安备 33010602011771号