| W3C Web Platform Tests in Blink Layout Tests | |
| Design Doc: https://goo.gl/iXUaZd | |
| This directory contains checked out and reduced code from web-platform-tests | |
| (https://github.com/w3c/web-platform-tests/) required to run WPT tests as part | |
| of Blink's test infrastructure and some maintenance/configuration code. | |
| The third party code lives entirely in the wpt subdirectory: | |
| Tools/Scripts/webkitpy/thirdparty/wpt/wpt | |
| Besides the reduced web-platform-tests repository, the wpt subdirectory also | |
| contains wpt/tools submodule (https://github.com/w3c/wpt-tools) and | |
| wpt/tools/wptserve (https://github.com/w3c/wptserve) directories. | |
| For licensing, see README.chromium in parent directory | |
| (Tools/Scripts/webkitpy/thirdparty/README.chromium). | |
| ** | |
| Files in this directory (non third-party) | |
| README.chromium | |
| =============== | |
| This file. | |
| wpt.config.json | |
| =============== | |
| The configuration file used when running WPTServe. Note that this file loads | |
| after wpt/config.default.json and this configuration gets merged onto it. When | |
| changing the ports (HTTP/S, WS/S), make sure to update the python code too. | |
| checkout.sh | |
| =========== | |
| Running this script without arguments will remove the existing checkout | |
| (thirdparty/wpt/wpt) and perform a fresh one. See "Rolling in WPT" for more. | |
| WPTHeads | |
| ======== | |
| List of git commit-ish for the WPT repositories. File format is as follows: | |
| First line: HEAD position for web-platform-tests. | |
| Rest of lines: parent directory, submodule name, HEAD position for submodule. | |
| The submodule checkout is performed in order when running ./checkout.sh. | |
| WPTWhiteList | |
| ============ | |
| The explicit list of files being kept, everything else not on this list is | |
| deleted when running "./checkout.sh reduce". Use this file to control what gets | |
| checked in and try to keep the list as small as possible (use what you need). | |
| certs/ | |
| ====== | |
| This directory contains a private key and a certificate of WPTServe, and files | |
| for self-signed CA. By default, WPTServe generates these files using the | |
| "openssl" command, but we check in pre-generated files to avoid "openssl" | |
| dependency. | |
| These certificates will expire in January 2025. Here is an instruction to | |
| re-generate them: | |
| 1. Add "openssl" command to PATH. | |
| 2. Apply the following change locally: | |
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt.config.json b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt.config.json | |
| index 6243954..84fd3f4 100644 | |
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt.config.json | |
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt.config.json | |
| @@ -9,13 +9,5 @@ | |
| "https": [8444], | |
| "ws": [9001], | |
| "wss": [9444] | |
| - }, | |
| - "ssl": { | |
| - "type": "pregenerated", | |
| - "encrypt_after_connect": false, | |
| - "pregenerated": { | |
| - "host_key_path": "../certs/127.0.0.1.key", | |
| - "host_cert_path": "../certs/127.0.0.1.pem" | |
| - } | |
| } | |
| } | |
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/sslutils/openssl.py b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/sslutils/openssl.py | |
| index 5b571c0..223a18b 100644 | |
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/sslutils/openssl.py | |
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/sslutils/openssl.py | |
| @@ -207,7 +207,7 @@ class OpenSSLEnvironment(object): | |
| def __init__(self, logger, openssl_binary="openssl", base_path=None, | |
| password="web-platform-tests", force_regenerate=False, | |
| - duration=30, base_conf_path=None): | |
| + duration=3000, base_conf_path=None): | |
| """SSL environment that creates a local CA and host certificate using OpenSSL. | |
| By default this will look in base_path for existing certificates that are still | |
| 3. Run third_party/WebKit/Tools/Scripts/run-blink-wptserve | |
| 4. Type Enter key to terminate it. | |
| 5. Revert the local change. e.g. git reset --hard HEAD | |
| 6. Replace certs/ with wpt/_certs/ | |
| % rm -fr certs | |
| % mv wpt/_certs certs | |
| 7. Look at *.pem, and update "January 2025" in this document and expiration_date | |
| in wptserve.py to new expiration date. | |
| 8. git commit -a | |
| 9. git cl upload, etc. | |
| TODO(tkent): Make a script to re-generate keys and certificates. | |
| ** | |
| Rolling in WPT | |
| When rolling in new versions of WPT support, use WPTHeads to adjust the HEAD | |
| positions. You can then call "./checkout.sh clone" which will pull in all the | |
| code and required submodules. | |
| You can check in the latest code by setting the HEAD commit-ish to "master" on | |
| each line, afterwards make sure to use the actual SHA1s to lock down the HEAD | |
| positions. It is also important to update the hashes in the 'Version:' fields of | |
| Tools/Scripts/webkitpy/thirdparty/README.chromium. | |
| You can examine what's pulled in and update WPTWhiteList if some new files are | |
| required to run the updated version. | |
| Once you've cloned the repositories you can call "./checkout.sh reduce" to | |
| remove everything that is not listed in WPTWhiteList. | |
| Note that calling "./checkout.sh" without arguments is equivalent of calling | |
| "./checkout.sh clone reduce". | |
| ** | |
| Configuration | |
| Read instructions in WPT README: | |
| https://github.com/w3c/web-platform-tests/blob/master/README.md | |
| Also, check out the WPTServe Documentation | |
| (https://wptserve.readthedocs.org/en/latest/). | |
| Note that editing /etc/hosts is not required for run-webkit-tests since | |
| content_shell is invoked with flags to map all *.test domains to 127.0.0.1. | |
| ** | |
| Running web-platform-tests with enabled WPTServe on a local machine | |
| Starting run-webkit-tests with the --enable-wptserve flag will start WPTServe | |
| for tests which live in LayoutTests/external/wpt. | |
| WPTServe starts HTTP/S and WS/S servers as separate processes. | |
| The content_shell used to run the tests will receive the URL of each test | |
| (instead of a filename). The document root http://web-platform.test/ maps to | |
| LayoutTests/external/wpt. HTTPS tests are enabled by default. | |
| Example run: | |
| ./Tools/Scripts/run-webkit-tests --enable-wptserve external/wpt |