| 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 |