run_web_tests.py
runs web tests with content shell through protocol mode. See
web_tests.md for details. run_wpt_tests.py
instead can run web
platform tests with Chrome, Chrome Android and WebView. This document explains how
to use run_wpt_tests.py
in these scenarios.
[TOC]
run_wpt_tests.py
can run with different browsers. To specify which browser to
run tests with, you should use --product
or -p
. Supported parameters are chrome
,
chrome_android
(or clank
), and android_webview
(or webview
). The default
value is chrome
if not specified.
The CLI is mostly kept the same between run_web_tests.py and run_wpt_tests.py. To see a complete list of arguments supported in run_wpt_tests.py, run:
third_party/blink/tools/run_wpt_tests.py --help
Note: Internal testing APIs, e.g. window.internals
or window.testRunner
, are not available in Chrome. Internal web
platform tests using those APIs should be skipped through NeverFixTests.
- Linux
Test expectations and baselines are only actively maintained for Linux due to resource constraints. It's not yet possible to run tests for Chrome on non-Linux platforms; follow https://crbug.com/1512219 for status.
Before you can run the web platform tests, you need to build the chrome_wpt_tests
target to get chrome
, chromedriver
and all of the other needed binaries.
autoninja -C out/Default chrome_wpt_tests
Once you have chrome
and chromedriver
built, running tests is very much similar
to how you run tests with run_web_tests.py
. For example, to run tests in external/wpt/html/dom
,
you should run:
third_party/blink/tools/run_wpt_tests.py --release -p chrome third_party/blink/web_tests/external/wpt/html/dom
Note: consider using -v
to get browser logs. It can be provided multiple times to
increase verbosity.
To suppress failures, run_wpt_tests.py
uses the same *-expected.txt
and
TestExpectations files that run_web_tests.py
uses.
Webdriver tests are one type (wdspec) of web platform tests. Due to this you can run webdriver tests the same way as other web platform tests, e.g.
third_party/blink/tools/run_wpt_tests.py --release -p chrome external/wpt/webdriver/tests/classic/find_element/find.py
The webdriver_wpt_tests
step of linux-blink-rel
runs wdspec tests and can provide results for rebaselining.
See here for Android specific instructions.
To be updated.
To interactively debug WPTs, prefix the run_wpt_tests.py
command with
debug_renderer
to attach a debugger to a desired renderer.
For other use cases, see these debugging tips.
- Chromium's infrastructure currently tests WPTs against
chrome --headless=old
(i.e., the//headless
layer, not//chrome
). This may cause results to differ from wpt.fyi orcontent_shell --run-web-tests
incorrectly. Notably,//headless
will not apply features listed infieldtrial_testing_config.json
. See https://crbug.com/1485918 for updates on switching testing tochrome --headless=new
for more useful results.
Please file bugs and feature requests against
Blink>Infra
with the wptrunner
label.