The W3C provides a large number of conformance tests for different aspects of the Web Platform. Currently the tests are hosted on GitHub. There are two main repositories, one for the CSS Working Group (aka csswg-test), and one for pretty much everything else (aka web-platform-tests).
Blink has mirrors (web-platform-tests, csswg-test) of the GitHub repos, and periodically imports a subset of the tests so that they are run as part of the regular Blink layout test testing process.
This page documents the current process for modifying the subset that is imported and run, and how we can submit new tests back to the W3C. For some historical discussion of how things work (written just after the Blink fork from WebKit), see Importing the W3C Tests.
There is now a w3c-test-autoroller bot which runs the w3c_test_autroller recipe, which attempts to run:
Updating the set of tests run by Blink requires commit access to Chromium like anything else, so make sure you have that first.
We control which tests are imported via LayoutTests/W3CImportExpectations, which as a blacklist (it is a list of directories and files to skip). This means that any new tests and directories that show up in the W3C repos are automatically imported.
To pull the latest versions of the tests that are currently being imported (i.e., you don't need to change the blacklist), all you have to do is run Tools/Scripts/update-w3c-deps with
If any new versions of tests are found, they will be committed locally to your Git repo. You may then upload the changes as a patch to Rietveld like any other patch.
If you wish to add more tests (by un-skipping some of the directories currently in the blacklist), you can modify the file locally, commit it, and then run the
You can also run the the webkit layout tests including the imported W3C tests at tip-of-tree Chromium to see if there are new failures that will need to be suppressed, or baselines that need to be updated.
In addition to the above, there are some other bugs remaining that limit which tests we can currently import and run, and require us to have to rewrite some of the tests (as noted above) more than we'd like to have to do. We are currently tracking suck bugs in the Chromium issue tracker with the component Blink>Infra.
We also currently do not automatically update the imported tests. We may set up a process for doing so in the future.
Note that currently the main reason we do not run more of the W3C tests is because they are (probably) mostly redundant with Blink's existing tests, and so we would double the running time of the layout tests for little benefit. Ideally we would identify the tests that are redundant and remove Blink's copies, so that we run just the W3C tests where possible.
The end goals for this whole process are to:
But, we do not have a schedule for accomplishing these goals any time soon. Volunteers to work on this would be most welcome.
The processes for getting new tests committed the W3C repos are at http://testthewebforward.org/docs/. Some specifics are at http://testthewebforward.org/docs/github-101.html.
There is currently no separate process for exporting Blink tests back to the W3C repos, but there may be one in the future; see this proposal doc: easy-upstreaming to WPT.