第 4 集:Robert in Waterloo,ON(2019 年 7 月)
上一集
如果您使用 Blink,则可能知道 web_tests(以前称为 LayoutTests)。
web-platform-tests (WPT) 位于 web_test/external/wpt
内。WPT 是
测试公开网站功能的首选方式,因为它会与其他
通过 GitHub。它有两种主要类型的测试:reftests 和
testharness.js 测试。
reftests 用于截取并比较两个页面的屏幕截图。默认情况下,屏幕截图
在 load
事件触发后执行;如果添加 reftest-wait
类
添加到 <html>
元素后,系统将会在移除该类时截取屏幕截图。
停用测试意味着测试覆盖率会不断缩小。请注意与字体相关的
不稳定;尽可能使用 Ahem
字体。
testharness.js 是一个用于测试任何内容的 JavaScript 框架 但呈现方式除外。在编写 testharness.js 测试时,注意时机, 并记得清理全局状态
不稳定的超时和潜在泄漏状态:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
一种更好的测试方式,超时时间长且清理:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
如果您需要自动化功能(在网络上不可用),请使用 testdriver.js。
您可以从 test_driver.bless
获取用户手势,生成复杂的
包含 test_driver.action_sequence
等的可信输入。
WPT 还通过文件名提供了一些实用的服务器端功能。
多全局测试(.any.js
及其好友)会在不同的
范围(window
、worker
等);.https.sub.html
请求加载测试
通过 HTTPS,并支持服务器端替换,如下所示:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
部分功能也可以在查询字符串中启用。
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
支持替换,添加了 X-Key: val
并延迟 1 秒再做出响应。搜索“管道”
如需了解详情,请访问 web-platform-tests.org。
WPT 还可以测试规范中尚未包含的行为;
将测试命名为 .tentative
。如果您需要 Blink 内部 API(例如
testRunner
、internals
),请将您的测试放在 web_tests/wpt_internal
中。
对 WPT 所做的更改会自动导出到 GitHub。你会看到
聊天机器人的评论。其他供应商在 GitHub 上做出的更改也
持续导入。在出现新故障时接收自动提交的 bug
请在 WPT 的子目录中创建 OWNERS
文件:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
其他资源
- 想要了解测试在其他浏览器上的运行情况,以及测试的互操作性 你的功能是什么?使用 wpt.fyi。
- 需要有关 API、指南、示例、提示等内容的更多文档? 访问 web-platform-tests.org。