aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json623
-rw-r--r--tests/wpt/metadata/css/CSS2/backgrounds/background-color-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-fonts/inheritance.html.ini18
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-language-override-valid.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-valid.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom-view/client-props-inline-list-item.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMediaAddListener-handleEvent.html.ini10
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini4
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml4
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/manifest.yml9
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml11
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-001.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/inheritance.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-computed.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-invalid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-valid.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-computed.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-valid.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content.html174
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-001.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-004.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-005.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-001.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-006.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/parsing/inset-block-inline-shorthand.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/parsing/margin-block-inline-shorthand.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/parsing/padding-block-inline-shorthand.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/nested-with-padding-and-spanner.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/background-clip-001.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/text-align-computed.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats-ref.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats.html56
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats-ref.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats.html56
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-001.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002.html47
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/client-props-inline-list-item.html26
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/matchMediaAddListener-handleEvent.html136
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js32
-rw-r--r--tests/wpt/web-platform-tests/docs/Makefile2
-rw-r--r--tests/wpt/web-platform-tests/docs/admin/index.md1
-rw-r--r--tests/wpt/web-platform-tests/docs/conf.py6
-rw-r--r--tests/wpt/web-platform-tests/docs/make.bat1
-rw-r--r--tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md6
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html26
-rw-r--r--tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js6
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html59
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html77
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html46
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediasession.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl6
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/empty-underover.html67
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js13
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/end-attribute-change-end-time.html22
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/slider-switch.html42
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/README.md5
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/cacert.key56
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/cacert.pem231
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/web-platform.test.key52
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem165
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/run_tc.py24
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk82
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/README.md13
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/github/Dockerfile29
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/README.rst239
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/Makefile177
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py267
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/design.rst44
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst18
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/index.rst24
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/internals.rst23
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/make.bat242
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py34
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py22
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py17
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py9
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py1
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js2
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal.https.any.js43
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js8
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html22
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html13
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html13
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-screen-type-on-worker.https.worker.js2
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-type.https.any.js6
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html14
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html60
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCReader-document-hidden-manual.https.html26
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCWriter-document-hidden-manual.https.html28
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js10
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js3
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js3
-rw-r--r--tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini1
145 files changed, 3111 insertions, 1979 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index a9e46713244..76b398963ae 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: TIMEOUT
+ expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 3bdba14ef10..a385028f3e6 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -19591,6 +19591,18 @@
{}
]
],
+ "web-nfc/NFCReader-document-hidden-manual.https.html": [
+ [
+ "web-nfc/NFCReader-document-hidden-manual.https.html",
+ {}
+ ]
+ ],
+ "web-nfc/NFCWriter-document-hidden-manual.https.html": [
+ [
+ "web-nfc/NFCWriter-document-hidden-manual.https.html",
+ {}
+ ]
+ ],
"web-share/share-cancel-manual.https.html": [
[
"web-share/share-cancel-manual.https.html",
@@ -115617,6 +115629,18 @@
{}
]
],
+ "css/css-display/display-contents-whitespace-inside-inline.html": [
+ [
+ "css/css-display/display-contents-whitespace-inside-inline.html",
+ [
+ [
+ "/css/css-display/display-contents-whitespace-inside-inline-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-display/display-flow-root-001.html": [
[
"css/css-display/display-flow-root-001.html",
@@ -135019,6 +135043,18 @@
{}
]
],
+ "css/css-multicol/nested-with-padding-and-spanner.html": [
+ [
+ "css/css-multicol/nested-with-padding-and-spanner.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-multicol/orthogonal-writing-mode-shrink-to-fit.html": [
[
"css/css-multicol/orthogonal-writing-mode-shrink-to-fit.html",
@@ -143807,6 +143843,18 @@
{}
]
],
+ "css/css-tables/background-clip-001.html": [
+ [
+ "css/css-tables/background-clip-001.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-tables/border-collapse-double-border.html": [
[
"css/css-tables/border-collapse-double-border.html",
@@ -176037,6 +176085,30 @@
{}
]
],
+ "css/css-writing-modes/slr-alongside-vlr-floats.html": [
+ [
+ "css/css-writing-modes/slr-alongside-vlr-floats.html",
+ [
+ [
+ "/css/css-writing-modes/slr-alongside-vlr-floats-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/srl-alongside-vrl-floats.html": [
+ [
+ "css/css-writing-modes/srl-alongside-vrl-floats.html",
+ [
+ [
+ "/css/css-writing-modes/srl-alongside-vrl-floats-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-writing-modes/svg-aliasing-001.html": [
[
"css/css-writing-modes/svg-aliasing-001.html",
@@ -177545,6 +177617,30 @@
{}
]
],
+ "css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html": [
+ [
+ "css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html",
+ [
+ [
+ "/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html": [
+ [
+ "css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html",
+ [
+ [
+ "/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-writing-modes/wm-propagation-001.html": [
[
"css/css-writing-modes/wm-propagation-001.html",
@@ -177857,6 +177953,30 @@
{}
]
],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-001.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-001.html",
+ [
+ [
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-002.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-002.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-writing-modes/writing-mode-horizontal-001l.html": [
[
"css/css-writing-modes/writing-mode-horizontal-001l.html",
@@ -200021,6 +200141,18 @@
{}
]
],
+ "html/rendering/non-replaced-elements/form-controls/select-sizing-001.html": [
+ [
+ "html/rendering/non-replaced-elements/form-controls/select-sizing-001.html",
+ [
+ [
+ "/html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/rendering/non-replaced-elements/form-controls/text-transform.html": [
[
"html/rendering/non-replaced-elements/form-controls/text-transform.html",
@@ -244308,6 +244440,9 @@
"css/css-display/display-contents-tr-001-ref.html": [
[]
],
+ "css/css-display/display-contents-whitespace-inside-inline-ref.html": [
+ []
+ ],
"css/css-display/display-flow-root-001-ref.html": [
[]
],
@@ -259206,6 +259341,12 @@
"css/css-writing-modes/sizing-percentages-replaced-orthogonal-001-ref.html": [
[]
],
+ "css/css-writing-modes/slr-alongside-vlr-floats-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/srl-alongside-vrl-floats-ref.html": [
+ []
+ ],
"css/css-writing-modes/support/100x100-lime.png": [
[]
],
@@ -259815,6 +259956,12 @@
"css/css-writing-modes/vertical-alignment-vrl-026-ref.xht": [
[]
],
+ "css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html": [
+ []
+ ],
"css/css-writing-modes/wm-propagation-001-ref.html": [
[]
],
@@ -259842,6 +259989,9 @@
"css/css-writing-modes/wm-propagation-body-054-ref.html": [
[]
],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html": [
+ []
+ ],
"css/css-writing-modes/writing-mode-vertical-rl-003-ref.htm": [
[]
],
@@ -259866,6 +260016,9 @@
"css/cssom-view/resources/iframe2.html": [
[]
],
+ "css/cssom-view/resources/matchMedia.js": [
+ []
+ ],
"css/cssom-view/scrollTop-display-change-ref.html": [
[]
],
@@ -271185,6 +271338,9 @@
"html/rendering/non-replaced-elements/flow-content-0/support/dialog-framed.html": [
[]
],
+ "html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html": [
+ []
+ ],
"html/rendering/non-replaced-elements/form-controls/text-transform-ref.html": [
[]
],
@@ -282141,9 +282297,6 @@
"tools/docker/Dockerfile": [
[]
],
- "tools/docker/Dockerfile.webkitgtk": [
- []
- ],
"tools/docker/README.md": [
[]
],
@@ -282159,9 +282312,6 @@
"tools/docker/frontend.py": [
[]
],
- "tools/docker/github/Dockerfile": [
- []
- ],
"tools/docker/retry.py": [
[]
],
@@ -285780,25 +285930,16 @@
"tools/wptrunner/README.rst": [
[]
],
- "tools/wptrunner/docs/Makefile": [
- []
- ],
"tools/wptrunner/docs/architecture.svg": [
[]
],
- "tools/wptrunner/docs/conf.py": [
- []
- ],
"tools/wptrunner/docs/design.rst": [
[]
],
"tools/wptrunner/docs/expectation.rst": [
[]
],
- "tools/wptrunner/docs/index.rst": [
- []
- ],
- "tools/wptrunner/docs/make.bat": [
+ "tools/wptrunner/docs/internals.rst": [
[]
],
"tools/wptrunner/docs/usage.rst": [
@@ -317064,6 +317205,42 @@
{}
]
],
+ "css/css-fonts/parsing/font-language-override-computed.html": [
+ [
+ "css/css-fonts/parsing/font-language-override-computed.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/parsing/font-language-override-invalid.html": [
+ [
+ "css/css-fonts/parsing/font-language-override-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/parsing/font-language-override-valid.html": [
+ [
+ "css/css-fonts/parsing/font-language-override-valid.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-computed.html": [
+ [
+ "css/css-fonts/parsing/font-optical-sizing-computed.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-invalid.html": [
+ [
+ "css/css-fonts/parsing/font-optical-sizing-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-valid.html": [
+ [
+ "css/css-fonts/parsing/font-optical-sizing-valid.html",
+ {}
+ ]
+ ],
"css/css-fonts/parsing/font-size-adjust-computed.html": [
[
"css/css-fonts/parsing/font-size-adjust-computed.html",
@@ -317764,6 +317941,12 @@
{}
]
],
+ "css/css-grid/alignment/grid-align-content.html": [
+ [
+ "css/css-grid/alignment/grid-align-content.html",
+ {}
+ ]
+ ],
"css/css-grid/alignment/grid-alignment-implies-size-change-001.html": [
[
"css/css-grid/alignment/grid-alignment-implies-size-change-001.html",
@@ -320254,6 +320437,12 @@
{}
]
],
+ "css/css-logical/parsing/inset-block-inline-shorthand.html": [
+ [
+ "css/css-logical/parsing/inset-block-inline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-logical/parsing/inset-block-inline-valid.html": [
[
"css/css-logical/parsing/inset-block-inline-valid.html",
@@ -320296,6 +320485,12 @@
{}
]
],
+ "css/css-logical/parsing/margin-block-inline-shorthand.html": [
+ [
+ "css/css-logical/parsing/margin-block-inline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-logical/parsing/margin-block-inline-valid.html": [
[
"css/css-logical/parsing/margin-block-inline-valid.html",
@@ -320386,6 +320581,12 @@
{}
]
],
+ "css/css-logical/parsing/padding-block-inline-shorthand.html": [
+ [
+ "css/css-logical/parsing/padding-block-inline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-logical/parsing/padding-block-inline-valid.html": [
[
"css/css-logical/parsing/padding-block-inline-valid.html",
@@ -322096,6 +322297,12 @@
{}
]
],
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html": [
+ [
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [
[
"css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html",
@@ -322114,6 +322321,12 @@
{}
]
],
+ "css/css-scroll-snap/parsing/scroll-margin-shorthand.html": [
+ [
+ "css/css-scroll-snap/parsing/scroll-margin-shorthand.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/parsing/scroll-margin-valid.html": [
[
"css/css-scroll-snap/parsing/scroll-margin-valid.html",
@@ -322132,6 +322345,12 @@
{}
]
],
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html": [
+ [
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [
[
"css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html",
@@ -322150,6 +322369,12 @@
{}
]
],
+ "css/css-scroll-snap/parsing/scroll-padding-shorthand.html": [
+ [
+ "css/css-scroll-snap/parsing/scroll-padding-shorthand.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/parsing/scroll-padding-valid.html": [
[
"css/css-scroll-snap/parsing/scroll-padding-valid.html",
@@ -325702,6 +325927,12 @@
{}
]
],
+ "css/css-text/parsing/text-align-computed.html": [
+ [
+ "css/css-text/parsing/text-align-computed.html",
+ {}
+ ]
+ ],
"css/css-text/parsing/text-align-invalid.html": [
[
"css/css-text/parsing/text-align-invalid.html",
@@ -330136,6 +330367,12 @@
{}
]
],
+ "css/cssom-view/client-props-inline-list-item.html": [
+ [
+ "css/cssom-view/client-props-inline-list-item.html",
+ {}
+ ]
+ ],
"css/cssom-view/cssom-getBoundingClientRect-001.html": [
[
"css/cssom-view/cssom-getBoundingClientRect-001.html",
@@ -330420,6 +330657,12 @@
}
]
],
+ "css/cssom-view/matchMediaAddListener-handleEvent.html": [
+ [
+ "css/cssom-view/matchMediaAddListener-handleEvent.html",
+ {}
+ ]
+ ],
"css/cssom-view/matchMediaAddListener.html": [
[
"css/cssom-view/matchMediaAddListener.html",
@@ -367510,6 +367753,12 @@
{}
]
],
+ "mathml/presentation-markup/scripts/empty-underover.html": [
+ [
+ "mathml/presentation-markup/scripts/empty-underover.html",
+ {}
+ ]
+ ],
"mathml/presentation-markup/scripts/subsup-1.html": [
[
"mathml/presentation-markup/scripts/subsup-1.html",
@@ -409570,6 +409819,12 @@
{}
]
],
+ "svg/animations/end-attribute-change-end-time.html": [
+ [
+ "svg/animations/end-attribute-change-end-time.html",
+ {}
+ ]
+ ],
"svg/animations/force-use-shadow-tree-recreation-while-animating.html": [
[
"svg/animations/force-use-shadow-tree-recreation-while-animating.html",
@@ -416674,30 +416929,6 @@
}
]
],
- "wake-lock/wakelock-abortsignal.https.any.js": [
- [
- "wake-lock/wakelock-abortsignal.https.any.html",
- {
- "script_metadata": [
- [
- "title",
- "WakeLock.request() AbortSignal Test"
- ]
- ]
- }
- ],
- [
- "wake-lock/wakelock-abortsignal.https.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "WakeLock.request() AbortSignal Test"
- ]
- ]
- }
- ]
- ],
"wake-lock/wakelock-active-document.https.window.js": [
[
"wake-lock/wakelock-active-document.https.window.html",
@@ -416784,7 +417015,7 @@
"script_metadata": [
[
"title",
- "WakeLock.request() with invalid type"
+ "navigator.wakeLock.request() with invalid type"
]
]
}
@@ -416795,7 +417026,7 @@
"script_metadata": [
[
"title",
- "WakeLock.request() with invalid type"
+ "navigator.wakeLock.request() with invalid type"
]
]
}
@@ -454616,7 +454847,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "a25f2a256ebd2c972560d93f4baa3f3fedfb473d",
+ "78f36842789b02036a0e4d86107c65c29190737e",
"support"
],
".codecov.yml": [
@@ -454636,7 +454867,7 @@
"support"
],
".github/workflows/manifest.yml": [
- "bb89f1ab12a389f06bed3bf404a92624cd65c128",
+ "8e81c1088ea6601247ddccb1d090886378801ed9",
"support"
],
".gitignore": [
@@ -454652,7 +454883,7 @@
"support"
],
".taskcluster.yml": [
- "adb81d6c0271ac5d8061782eac1b3e181984eb68",
+ "a267540cafba797ceb01a562936ed95d668a139f",
"support"
],
".well-known/README.md": [
@@ -514100,7 +514331,7 @@
"reftest"
],
"css/CSS2/linebox/inline-negative-margin-001.html": [
- "6ebabd15dee475c33a5f003287d9de1973209300",
+ "226a3a19ad17b8fb773e00174b1dcd1593e6be61",
"testharness"
],
"css/CSS2/linebox/leading-001-ref.xht": [
@@ -558527,6 +558758,14 @@
"53f5f9e5c7f447bc87cc1ee460323b93df2cdc68",
"reftest"
],
+ "css/css-display/display-contents-whitespace-inside-inline-ref.html": [
+ "135bc04d8ee5c5e29045488728cc276f24c69832",
+ "support"
+ ],
+ "css/css-display/display-contents-whitespace-inside-inline.html": [
+ "a97c02575ba216c656ba9fc552b2390faf8e307c",
+ "reftest"
+ ],
"css/css-display/display-flow-root-001-ref.html": [
"fcb5ac277ee72f8dd4d70d66b7b6ce736225940e",
"support"
@@ -564404,7 +564643,7 @@
"testharness"
],
"css/css-fonts/inheritance.html": [
- "6192e50638c0106abe798d2e5b8f004534646ad5",
+ "21939f06cbd6e218ec318738549d0109ca774aa7",
"testharness"
],
"css/css-fonts/language-specific-01.html": [
@@ -564575,6 +564814,30 @@
"623f860dd79c452b6403c1aa23ebf3ffa9dbbdac",
"testharness"
],
+ "css/css-fonts/parsing/font-language-override-computed.html": [
+ "76601b97282bd2330cb65d51eac85faca69c5401",
+ "testharness"
+ ],
+ "css/css-fonts/parsing/font-language-override-invalid.html": [
+ "f69e551658183af1d6b443845d66301009d13042",
+ "testharness"
+ ],
+ "css/css-fonts/parsing/font-language-override-valid.html": [
+ "27246f46ba53feae81bb71605fc27d3c119155fe",
+ "testharness"
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-computed.html": [
+ "9e0719b12c3e5b2bba0df3fa623e48eb367a3800",
+ "testharness"
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-invalid.html": [
+ "efd0f6257c4b08275ce99b1029324f444c54472a",
+ "testharness"
+ ],
+ "css/css-fonts/parsing/font-optical-sizing-valid.html": [
+ "f9545d89204a3b5750a327cd3c155f652e36439e",
+ "testharness"
+ ],
"css/css-fonts/parsing/font-size-adjust-computed.html": [
"4abf011d91e07f0d33f85ae98c56b51b0bfd6504",
"testharness"
@@ -571763,6 +572026,10 @@
"d45df4bc2231cbda5dee1bafc3f386f008024d79",
"support"
],
+ "css/css-grid/alignment/grid-align-content.html": [
+ "fb3f7007ee19189a09de9c1f786176c317b7ee14",
+ "testharness"
+ ],
"css/css-grid/alignment/grid-alignment-implies-size-change-001.html": [
"865027325afc3d003b5b237041ea6163de8f2c25",
"testharness"
@@ -574356,7 +574623,7 @@
"support"
],
"css/css-grid/subgrid/line-names-001.html": [
- "9b49e623ad754760f2118474c86dc4f208f3dd84",
+ "69c300d864e9990151a96f6577fe5f09e1e22bb2",
"reftest"
],
"css/css-grid/subgrid/line-names-002.html": [
@@ -574372,7 +574639,7 @@
"support"
],
"css/css-grid/subgrid/line-names-004.html": [
- "0d2a96873dad6e40d379692b5a505a7015a5b1c9",
+ "84f727d2e350d1754cd0511471f95e14525ae00b",
"reftest"
],
"css/css-grid/subgrid/line-names-005-ref.html": [
@@ -574380,7 +574647,7 @@
"support"
],
"css/css-grid/subgrid/line-names-005.html": [
- "43bde0b37ad2f8159c38ea0892cad9d03fe1a05b",
+ "d7bcf7a7e7b0c13e489da82b824b8e5a9b5fe1fb",
"reftest"
],
"css/css-grid/subgrid/line-names-006-ref.html": [
@@ -574444,7 +574711,7 @@
"support"
],
"css/css-grid/subgrid/repeat-auto-fill-001.html": [
- "643cde377e66416dbc4047124d1157b0679eb8f5",
+ "e17fc8274f441835888ff57d12bd985d0ece7623",
"reftest"
],
"css/css-grid/subgrid/repeat-auto-fill-002.html": [
@@ -574472,7 +574739,7 @@
"reftest"
],
"css/css-grid/subgrid/repeat-auto-fill-006.html": [
- "4a16d8e4a9b9c476fce6b8e2bb653dcb59431029",
+ "8d4213c6d87c131f0b03dcba1dad46cc9c9d663c",
"reftest"
],
"css/css-grid/subgrid/repeat-auto-fill-007-ref.html": [
@@ -576251,6 +576518,10 @@
"fe073f852ea38910c35ee471f54e52d1b9aca95b",
"testharness"
],
+ "css/css-logical/parsing/inset-block-inline-shorthand.html": [
+ "3b2ce6c040bf2bb9a4e7a2b61ff9d76312c07255",
+ "testharness"
+ ],
"css/css-logical/parsing/inset-block-inline-valid.html": [
"b08975251d841bda035d1490a32be0543b6d984e",
"testharness"
@@ -576279,6 +576550,10 @@
"a1e0cbf3885b6518266eba0ef23d40f53a0c5c20",
"testharness"
],
+ "css/css-logical/parsing/margin-block-inline-shorthand.html": [
+ "9cdae57402b971bb0a3dcea97715ca5de6656d9a",
+ "testharness"
+ ],
"css/css-logical/parsing/margin-block-inline-valid.html": [
"4a278f90348c9e7c9de983e813c02fa10432d28a",
"testharness"
@@ -576339,6 +576614,10 @@
"56c2adb07827ef54b42b6a797e0f700eeec56165",
"testharness"
],
+ "css/css-logical/parsing/padding-block-inline-shorthand.html": [
+ "d0811c27dc801c41426e42fbd740fe7d2b67aeaf",
+ "testharness"
+ ],
"css/css-logical/parsing/padding-block-inline-valid.html": [
"1f3be1778413e72742f8fd1bde098ce56bcde368",
"testharness"
@@ -578971,6 +579250,10 @@
"4472bc209e2a4c61b4753e7d6a80493bd4a6f263",
"reftest"
],
+ "css/css-multicol/nested-with-padding-and-spanner.html": [
+ "bea27a95781c3dd4abf0d590fd15d64530fd9154",
+ "reftest"
+ ],
"css/css-multicol/orthogonal-writing-mode-shrink-to-fit.html": [
"b087f56ac6e06d7e11d719976ae66459c97722d7",
"reftest"
@@ -584619,6 +584902,10 @@
"b8a70b0d4890ab108de348f2866b79a2c3cea2c3",
"testharness"
],
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html": [
+ "04e1d428647585fbf6fee0336e7bcea102ff7e3c",
+ "testharness"
+ ],
"css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [
"e675eeb427064d51af1b9b0c2e29a812d0ae5fce",
"testharness"
@@ -584631,6 +584918,10 @@
"97beb0d295dcda5e18946bc1122a8aedc40ce796",
"testharness"
],
+ "css/css-scroll-snap/parsing/scroll-margin-shorthand.html": [
+ "96a459522649867bf09751c902349182ba232b84",
+ "testharness"
+ ],
"css/css-scroll-snap/parsing/scroll-margin-valid.html": [
"be3499869159c5fb29f9859889f4f2354874853c",
"testharness"
@@ -584643,6 +584934,10 @@
"da995cfcc07ad43a489aa4e0205fa24d6e435e39",
"testharness"
],
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html": [
+ "491cfa9e96ec46724e9ff7e17377447899b106a6",
+ "testharness"
+ ],
"css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [
"a932bb6393db62a000092276128d9934b269fc25",
"testharness"
@@ -584655,6 +584950,10 @@
"c805ee2e55eda1ba713b5ba5432c8120410cdcbd",
"testharness"
],
+ "css/css-scroll-snap/parsing/scroll-padding-shorthand.html": [
+ "2162c7f10d70e3b0dad9bf0cc7bacb730599831b",
+ "testharness"
+ ],
"css/css-scroll-snap/parsing/scroll-padding-valid.html": [
"0e7c86b12b5d8aa1e9f06f8f95b596c43e81e938",
"testharness"
@@ -587223,6 +587522,10 @@
"dbd35d8af1761428b2d8c8c5db9c1c9e4da0872e",
"testharness"
],
+ "css/css-tables/background-clip-001.html": [
+ "b4caf5f0eb1ed32dbd9b41e9f3993b9711be359f",
+ "reftest"
+ ],
"css/css-tables/border-collapse-double-border-notref.html": [
"8f4222211d76fb8f6be9cb61a7b9979a3b7b89a7",
"support"
@@ -592059,6 +592362,10 @@
"f65b15afde028fc9c6a34376817b68b449ccd00c",
"testharness"
],
+ "css/css-text/parsing/text-align-computed.html": [
+ "30c231be66f6d297cf6bbf75e59a9b5dd2bded53",
+ "testharness"
+ ],
"css/css-text/parsing/text-align-invalid.html": [
"38a56d914cdaa3a5f17b12717b992ab056de4391",
"testharness"
@@ -611031,6 +611338,22 @@
"6829920c8026618777ae8774d6ae2b661a6e6811",
"reftest"
],
+ "css/css-writing-modes/slr-alongside-vlr-floats-ref.html": [
+ "71a4c4c284b6d61da2bfd28b61aa3ac6098d7e63",
+ "support"
+ ],
+ "css/css-writing-modes/slr-alongside-vlr-floats.html": [
+ "76fb454f6a17ce6f3fee70e84e86ddf838cd8063",
+ "reftest"
+ ],
+ "css/css-writing-modes/srl-alongside-vrl-floats-ref.html": [
+ "cd6ee5e91866bf386d1e0c5c9693a30fb9599aa4",
+ "support"
+ ],
+ "css/css-writing-modes/srl-alongside-vrl-floats.html": [
+ "7b3ee59207b5408a4b30271e097204eb2583d617",
+ "reftest"
+ ],
"css/css-writing-modes/support/100x100-lime.png": [
"1b947700808585e8c224cee096247eb5d30a1ded",
"support"
@@ -612587,6 +612910,22 @@
"35560e940b3abdad4e67f92e173798f634b00785",
"reftest"
],
+ "css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html": [
+ "fc4bbee90ad961378436383db1266d5fe697b82d",
+ "support"
+ ],
+ "css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html": [
+ "f605f20aa7e9c773550bb012c5ba60bf1ba37450",
+ "reftest"
+ ],
+ "css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html": [
+ "218d5abdbe73938fbbc514c62a9befb1e3a0be59",
+ "support"
+ ],
+ "css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html": [
+ "710221031a3ee31e06d540a63c80a819e9eff9c8",
+ "reftest"
+ ],
"css/css-writing-modes/wm-propagation-001-ref.html": [
"2e8df84f21ef494f99f356b056396c7d6d39d940",
"support"
@@ -612731,6 +613070,18 @@
"7741ac7051e7eadb7facffeced71c9bd84ac12eb",
"testharness"
],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-001.html": [
+ "02af09311f794afcd28096bb057c1ae5c37bd460",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html": [
+ "d7ddfd553d60bbb98243eb32090b76f24fe38113",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-dynamic-change-002.html": [
+ "1f485f68d864ebd2114a7504c3d3e41400534104",
+ "reftest"
+ ],
"css/css-writing-modes/wm-propagation-body-scroll-offset-vertical-lr.html": [
"8c59532b1a50777337007c2b932b1df42067e18f",
"testharness"
@@ -612971,6 +613322,10 @@
"2a8d5b5b4928a5782a61174834bb547f094f2553",
"testharness"
],
+ "css/cssom-view/client-props-inline-list-item.html": [
+ "725bb787a5e65b8dc635ffa5e249144ba3ac7ee4",
+ "testharness"
+ ],
"css/cssom-view/cssom-getBoundingClientRect-001.html": [
"7d96540adfe95205a770c232473e0c1268e609e2",
"testharness"
@@ -613183,6 +613538,10 @@
"202a3b738dd0d7c83ed9b4cdff8c7212ae09f61e",
"testharness"
],
+ "css/cssom-view/matchMediaAddListener-handleEvent.html": [
+ "8bc665693d8f722fcd8a1f6fde9d6c36e4ecfd23",
+ "testharness"
+ ],
"css/cssom-view/matchMediaAddListener.html": [
"7236be7febc985a9432e3127b78acf352bb91fa1",
"testharness"
@@ -613263,6 +613622,10 @@
"7bb944c9d59349b3a25ab14981ae34f5ef991bec",
"support"
],
+ "css/cssom-view/resources/matchMedia.js": [
+ "93f4a31505098033dfe55d8075d7315c590703bb",
+ "support"
+ ],
"css/cssom-view/screenLeftTop.html": [
"58d868866eb275724c996bdc1a636ff6173d75a9",
"testharness"
@@ -628144,7 +628507,7 @@
"support"
],
"docs/Makefile": [
- "51d4b74a5696ffecbe2614e08b57986eb6b71e56",
+ "1b7fe8e8f59277413c00cfe4d7080aa97eb449a0",
"support"
],
"docs/README.md": [
@@ -628152,7 +628515,7 @@
"support"
],
"docs/admin/index.md": [
- "aa06e765d7bb14e4adf4cb1be840f7e2a93796cc",
+ "8a04e2a0c805e9fc1fd3cf7c2fe4ecd053a45f32",
"support"
],
"docs/assets/_reftest_graph_example.dot": [
@@ -628208,7 +628571,7 @@
"support"
],
"docs/conf.py": [
- "dc17e6d1b76a7c9323ef1a646a5243e22ec2fbf4",
+ "e425667ce888dabed639ff29a7e051d3aedcdd0f",
"support"
],
"docs/index.md": [
@@ -628216,7 +628579,7 @@
"support"
],
"docs/make.bat": [
- "5373270635259d46ff6e7318b4a596ce10d9162b",
+ "49607bb0ae936d9d8df9b1d1f16ce72e918108bc",
"support"
],
"docs/requirements.txt": [
@@ -628268,7 +628631,7 @@
"support"
],
"docs/running-tests/from-local-system.md": [
- "2d44ecb7d2f771c5e2ceb06b5847db3ac82a4f1c",
+ "5a9a776a285ad488509f6c494f43ebbdc8ec108f",
"support"
],
"docs/running-tests/from-web.md": [
@@ -634360,7 +634723,7 @@
"support"
],
"feature-policy/resources/feature-policy-wakelock.html": [
- "24fe7a526cbae846727391f7527a3165c865ca0a",
+ "fac421c09fa2274a8de5f3b914a27fd15f3aaba3",
"support"
],
"feature-policy/resources/feature-policy-webvr.html": [
@@ -637180,7 +637543,7 @@
"support"
],
"generic-sensor/generic-sensor-tests.js": [
- "1779fd6bb59235ff14f0c5ec3d67a134b74be4a2",
+ "f0d37fb9f24b68c7e155a7613cca6195208dedf4",
"support"
],
"generic-sensor/idlharness.https.window.js": [
@@ -646451,6 +646814,14 @@
"052adca4c5b0b70819c5291503fecc1f39715df6",
"testharness"
],
+ "html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html": [
+ "c59a6e1d987eefea0e357745ce52d4d0892b07ff",
+ "support"
+ ],
+ "html/rendering/non-replaced-elements/form-controls/select-sizing-001.html": [
+ "e8db3eae1d28acbb2eff0f8906e0cf253f966bdd",
+ "reftest"
+ ],
"html/rendering/non-replaced-elements/form-controls/text-transform-ref.html": [
"5dc26a78dbb0133964bf248eef2d698f32ffa329",
"support"
@@ -652636,7 +653007,7 @@
"testharness"
],
"html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html": [
- "e97ebee59f40d7e955b5f6c6b210369e1c457bb8",
+ "bdd28270d677a6f8f70610bde0160982ba56db3b",
"testharness"
],
"html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html": [
@@ -652680,7 +653051,7 @@
"testharness"
],
"html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html": [
- "b40d5fb94cf59e1b2044adc7bc73db285a85d8d8",
+ "267c22145ee35ad9956642a0684591a53be7d1c2",
"testharness"
],
"html/semantics/interactive-elements/the-dialog-element/inert-does-not-match-disabled-selector.html": [
@@ -658748,7 +659119,7 @@
"support"
],
"interfaces/mediasession.idl": [
- "ecfb70a0d80468d0dbd985c6423ea2d8b75cf493",
+ "8671af5acd9205978e1828502245ba134258c1e9",
"support"
],
"interfaces/mediastream-recording.idl": [
@@ -658948,7 +659319,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "c3e53350901c7b1e1c608ff4ee07be475c97cd9a",
+ "4e0dc0725163e42455fb3418ed9757ddc1d8f632",
"support"
],
"interfaces/web-share.idl": [
@@ -660339,6 +660710,10 @@
"d0e636c022ecae289a07533bd45aecb4ef89541f",
"testharness"
],
+ "mathml/presentation-markup/scripts/empty-underover.html": [
+ "054e8ee06ed3ba3f9a25c9b4fac227279759961b",
+ "testharness"
+ ],
"mathml/presentation-markup/scripts/subsup-1.html": [
"e5321d6c4a3c3dafca68caacdb651fed5c778c9b",
"testharness"
@@ -687328,7 +687703,7 @@
"support"
],
"resources/chromium/generic_sensor_mocks.js": [
- "eb28c48d3a719d1ea0d8cabd29afa90a487e6c2e",
+ "5e902f2523dd6ddb95b19ee55f7e7e6b8cc8877f",
"support"
],
"resources/chromium/generic_sensor_mocks.js.headers": [
@@ -693611,6 +693986,10 @@
"4a6b9f9368dcb020120f502e4528860beb5f14c6",
"testharness"
],
+ "svg/animations/end-attribute-change-end-time.html": [
+ "9f05d7d405d364a1eadfa104c1c4bd90a2bf3b8c",
+ "testharness"
+ ],
"svg/animations/force-use-shadow-tree-recreation-while-animating.html": [
"7a60e0280baa67ef8731b7bdc737788d326c3c24",
"testharness"
@@ -693676,7 +694055,7 @@
"testharness"
],
"svg/animations/slider-switch.html": [
- "1e14ae55165a1955c5cbaad5247a320c11e677f7",
+ "59aa8f29ca54c1f809d1c7080ab9a5038a9d80fe",
"testharness"
],
"svg/animations/spaces-at-end-of-path-data.html": [
@@ -698144,15 +698523,15 @@
"support"
],
"tools/certs/README.md": [
- "62c9d24685af8c00151b8fc804e6edca6d6c36d5",
+ "fd75c22ddffed2e700f5f44c2b552cc3526d460f",
"support"
],
"tools/certs/cacert.key": [
- "907b8650808e8ae858a98b48f4322dd92e140d91",
+ "1a121dfac952dfe8886b1b5e41e7c7311d5f0b32",
"support"
],
"tools/certs/cacert.pem": [
- "49b343ac6476338576cb2487812eabe2653f30c4",
+ "e1b5add54e797db1c6c1d3eda961af3e54bc7a77",
"support"
],
"tools/certs/config.json": [
@@ -698160,11 +698539,11 @@
"support"
],
"tools/certs/web-platform.test.key": [
- "6d60e8912a6400a217d963d87a653645385e881e",
+ "b62af208c34cb3167ae64038cdff696f047893eb",
"support"
],
"tools/certs/web-platform.test.pem": [
- "c9f7f57dc663e0b26925c29d0c4bcdf4d52713f7",
+ "5959316bb5b4825e640bb1f7cab08bc9f405a63a",
"support"
],
"tools/ci/__init__.py": [
@@ -698276,7 +698655,7 @@
"support"
],
"tools/ci/run_tc.py": [
- "3201ff3a9d309719da2fe038c73d1b144ffdb5d2",
+ "956d1c353e54b2179316ad56ff85823bc5009ea6",
"support"
],
"tools/ci/taskcluster-run.py": [
@@ -698311,12 +698690,8 @@
"3d41834cfb41430b4a9aa05fa8c6d6b6f2010b51",
"support"
],
- "tools/docker/Dockerfile.webkitgtk": [
- "58080def60ff4f26277c96015a8c2968254907f3",
- "support"
- ],
"tools/docker/README.md": [
- "6bcc47c7744e4cc8be96b1c9590878955080da27",
+ "450981f686bface2d9243e5628040bb6b2f6c4e0",
"support"
],
"tools/docker/__init__.py": [
@@ -698335,10 +698710,6 @@
"c4a207345820d534df5cc092c8b46838a5b8ce1f",
"support"
],
- "tools/docker/github/Dockerfile": [
- "22d47f3e5fa9032e5f016f6f15720fa98e1ba625",
- "support"
- ],
"tools/docker/retry.py": [
"6126b781bfadd15e82b8a3a3b9494050939eab6c",
"support"
@@ -703068,7 +703439,7 @@
"support"
],
"tools/wpt/browser.py": [
- "c04162fe2a15ecb0cbebf1e0c57672b24f2efc56",
+ "233778f25657cdc20582a39f7524d6fde8aab546",
"support"
],
"tools/wpt/commands.json": [
@@ -703100,7 +703471,7 @@
"support"
],
"tools/wpt/run.py": [
- "077d4a7eb87f850017298a0bb971ed74ff7ff694",
+ "de20e2916ad30244ef3635d1fce562cebbd26052",
"support"
],
"tools/wpt/testfiles.py": [
@@ -703112,7 +703483,7 @@
"support"
],
"tools/wpt/tests/test_browser.py": [
- "f691c380b7abdb97fb616217cb710eac2480e3e9",
+ "25b66e7d922f54edf197baaaf42c26c9fce04621",
"support"
],
"tools/wpt/tests/test_run.py": [
@@ -703160,39 +703531,27 @@
"support"
],
"tools/wptrunner/README.rst": [
- "d4f976dfca1a18c3b1c8b90c4175bf974f6169e2",
- "support"
- ],
- "tools/wptrunner/docs/Makefile": [
- "d02b6c5e7c4f267031bd39013c3884ab585338f8",
+ "0adf0a94b15d224ab7970e81ae7f432df34bb3d7",
"support"
],
"tools/wptrunner/docs/architecture.svg": [
"b8d5aa21c19a70af82022a438f4f63723496d360",
"support"
],
- "tools/wptrunner/docs/conf.py": [
- "c2d4fd5ab951b44636289597192bcf3b8869b89c",
- "support"
- ],
"tools/wptrunner/docs/design.rst": [
- "056c0d8663292b0de3fee6e430ca011d08965731",
+ "30f82711a59d760d70ad6965c5f517efc42f6b0c",
"support"
],
"tools/wptrunner/docs/expectation.rst": [
- "9b3e5e05e5cc3c86bb66d739e9737b4ea20b34b9",
- "support"
- ],
- "tools/wptrunner/docs/index.rst": [
- "5147d3e31c3bc44b1216e46bbc03a04c380cb3ad",
+ "2f7467c09124cdd94e5390d498d487ce4b7ea357",
"support"
],
- "tools/wptrunner/docs/make.bat": [
- "959c1615a289db0b1a90a090d894fa4b54b4fa3f",
+ "tools/wptrunner/docs/internals.rst": [
+ "780df872edc1728ce640de8834803cb28786d0a4",
"support"
],
"tools/wptrunner/docs/usage.rst": [
- "5997f4254f1eeaab48780aabfa3d233fef7f667f",
+ "5fed5fcdba4dd264e40ef0f18afd6d9596c62cf2",
"support"
],
"tools/wptrunner/requirements.txt": [
@@ -703388,7 +703747,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/base.py": [
- "d17229da4686548e05c228a7345194e0d8f4d8dd",
+ "8607f776b98c220e621b6274cc0bc28c8192414a",
"support"
],
"tools/wptrunner/wptrunner/browsers/chrome.py": [
@@ -703468,11 +703827,11 @@
"support"
],
"tools/wptrunner/wptrunner/config.py": [
- "d2a61a87594bc8f7753530ab3bd02795b68e3c37",
+ "e7f9d7b8cc987bfdfecda6548acf82d1be3a28d4",
"support"
],
"tools/wptrunner/wptrunner/environment.py": [
- "924409216411050b038b61c7402eab687b122429",
+ "e79ae3750647f88bba44703181c208229800f658",
"support"
],
"tools/wptrunner/wptrunner/executors/__init__.py": [
@@ -703480,7 +703839,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/base.py": [
- "f581c5cedb74e58ff415c19faf19f53ce50c7a9a",
+ "6305563dc69625f115c37dd07f5734b7cb4cf9ea",
"support"
],
"tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -703612,7 +703971,7 @@
"support"
],
"tools/wptrunner/wptrunner/manifestupdate.py": [
- "a3d5581471a38e39483bd0ca31e55d58a64387b3",
+ "83a4834d7859e529cf88dd886e27b01886bc2259",
"support"
],
"tools/wptrunner/wptrunner/metadata.py": [
@@ -703652,11 +704011,11 @@
"support"
],
"tools/wptrunner/wptrunner/testloader.py": [
- "1ffdda6003fad3fe6c770ad7d1bce9a20f10ccda",
+ "fa54ca361576318cb35ec716a1a159bdb532e6c8",
"support"
],
"tools/wptrunner/wptrunner/testrunner.py": [
- "5c0c60a07a9613d70ac2f2166de753dc0a007a56",
+ "c2cb5c4d26b2866c069537ceb5a96da623d11bb6",
"support"
],
"tools/wptrunner/wptrunner/tests/__init__.py": [
@@ -703744,7 +704103,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptcommandline.py": [
- "5ac29b302e65a7e6fd8330e4ad787233de7d5ec6",
+ "3fc0f6d6b537938f76b99c7122229a6a3deb2713",
"support"
],
"tools/wptrunner/wptrunner/wptlogging.py": [
@@ -703808,7 +704167,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptrunner.py": [
- "8dcdcdebe154fc09087624f20f802a8b2e0717d7",
+ "88b51d0fd6a970316ae382f9efa3d8b9c463ace9",
"support"
],
"tools/wptrunner/wptrunner/wpttest.py": [
@@ -704140,7 +704499,7 @@
"support"
],
"tools/wptserve/wptserve/sslutils/openssl.py": [
- "3c5c1dc23787095b1a67cae7c011b8ad5c785949",
+ "aea1c7380b179ced1366b6617057578b35d9e14b",
"support"
],
"tools/wptserve/wptserve/sslutils/pregenerated.py": [
@@ -709172,7 +709531,7 @@
"support"
],
"wake-lock/idlharness.https.any.js": [
- "2ad9980dae53727ea328e942dead029a936875cc",
+ "31d20aed34ce3e148d6cf31aa515058d9cff475c",
"testharness"
],
"wake-lock/resources/page1.html": [
@@ -709183,16 +709542,12 @@
"7fc080d380c4bd46dfb011910e570ee412561b92",
"support"
],
- "wake-lock/wakelock-abortsignal.https.any.js": [
- "671852f3c946716cf6cfb6dac6249a30bec1f701",
- "testharness"
- ],
"wake-lock/wakelock-active-document.https.window.js": [
- "f0f1e38ddf9defaf4a484ee5db39ec37e561ade5",
+ "ad6250e225d75b5322a88ac0f3f3833533ae643f",
"testharness"
],
"wake-lock/wakelock-disabled-by-feature-policy.https.sub.html": [
- "0d451c98debb3b8ec258c949f9e0989bcb7ed23c",
+ "07eeb3684d07ba43c8cccbe59168fff10f48a695",
"testharness"
],
"wake-lock/wakelock-disabled-by-feature-policy.https.sub.html.headers": [
@@ -709200,19 +709555,19 @@
"support"
],
"wake-lock/wakelock-document-hidden-manual.https.html": [
- "d7c12485e16a811fe680fde07048fd2a4294660f",
+ "babd629ba741ea7bb0b2f943ab60deb6a8ff555e",
"manual"
],
"wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
- "b27fbefa4ecabae1445a830af41f71f59564453f",
+ "18a2d7c6ba282e7f77487c6744563f9eb2002ac0",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html": [
- "3897df6288e7d7178dc7dfb24d680ca9ce3531e1",
+ "5587a85d4b027d360c35103f99bb6e6afe31f18a",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy.https.sub.html": [
- "f4aaa73e0efa09edd592bf1e147b1356c749e790",
+ "8573f7aa63b8460f28dc174041f9a6a644468a89",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy.https.sub.html.headers": [
@@ -709220,7 +709575,7 @@
"support"
],
"wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html": [
- "19bf59d368828c82c766d4841244c42e3b94baca",
+ "308217022e1e5fc3e592798c25d4c12aef9c60b2",
"testharness"
],
"wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html.headers": [
@@ -709232,7 +709587,7 @@
"testharness"
],
"wake-lock/wakelock-screen-type-on-worker.https.worker.js": [
- "28e3394279c0b4311a80aad43ced0f9ea79e029f",
+ "5450fe5b35fb808891cb458fec2dadad477eb09f",
"testharness"
],
"wake-lock/wakelock-supported-by-feature-policy.html": [
@@ -709240,7 +709595,7 @@
"testharness"
],
"wake-lock/wakelock-type.https.any.js": [
- "cc37c768272512ec412fb749cebd77afa8662ac3",
+ "62f59a75db2e65b24807efff74321b9083e1604b",
"testharness"
],
"wasm/META.yml": [
@@ -710072,17 +710427,21 @@
"support"
],
"web-nfc/NDEFMessage_constructor.https.html": [
- "6515a7fdd0246c23d8193f06593687a4d9bdc658",
+ "19122112f59bbbbb15f4988e841ab7b18042c4e6",
"testharness"
],
"web-nfc/NDEFRecord_constructor.https.html": [
- "7a0da33a54370dda699546553c0b18ced937a91c",
+ "849a6ae336ea4026888e9835e89db64fd03eb555",
"testharness"
],
"web-nfc/NFCErrorEvent_constructor.https.html": [
"1cc9ce160be46955a9b15485ee4c040605722961",
"testharness"
],
+ "web-nfc/NFCReader-document-hidden-manual.https.html": [
+ "6d9a52c1ecf5bfb2f9ac9876b0ff5988bcc285e0",
+ "manual"
+ ],
"web-nfc/NFCReader_options.https.html": [
"5761747f907fad40873023f8ba746bef19fb08e7",
"testharness"
@@ -710095,6 +710454,10 @@
"20585176b7f89a129fad99f17d068b2deb828f68",
"testharness"
],
+ "web-nfc/NFCWriter-document-hidden-manual.https.html": [
+ "72d8c8143cd934ad3ff0f8e32968851a1769b0c3",
+ "manual"
+ ],
"web-nfc/NFCWriter_push.https.html": [
"dda160f159a23223c0910d2393ecbc8c8e38aed1",
"testharness"
@@ -710112,7 +710475,7 @@
"testharness"
],
"web-nfc/resources/nfc-helpers.js": [
- "bace1b3752faea77e800493ec8c4385ee9aa851c",
+ "ed5cc9c9718d01580460535ea14405c2817c0986",
"support"
],
"web-share/META.yml": [
@@ -719656,7 +720019,7 @@
"support"
],
"workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js": [
- "522c5798ba738b5074e5332dbb7d7fb5268ee6a9",
+ "e8f7b0ad7879060af0ce02a840c3069c30cdefab",
"support"
],
"workers/modules/resources/dynamic-import-remote-origin-script-worker.sub.js": [
@@ -719668,7 +720031,7 @@
"support"
],
"workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js": [
- "1d68624c3cb5bc13f489e896d5f41760da85f2e3",
+ "a1c4eeae14121bbb70fcc664b03563958df300c3",
"support"
],
"workers/modules/resources/dynamic-import-worker.js": [
diff --git a/tests/wpt/metadata/css/CSS2/backgrounds/background-color-018.xht.ini b/tests/wpt/metadata/css/CSS2/backgrounds/background-color-018.xht.ini
new file mode 100644
index 00000000000..0254e2bb35a
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/backgrounds/background-color-018.xht.ini
@@ -0,0 +1,2 @@
+[background-color-018.xht]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
index 033d24e93cc..35f64aeb424 100644
--- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
+++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
@@ -2,3 +2,12 @@
[#container 1]
expected: FAIL
+ [[data-expected-height\] 1]
+ expected: FAIL
+
+ [[data-expected-height\] 2]
+ expected: FAIL
+
+ [[data-expected-height\] 7]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/inheritance.html.ini b/tests/wpt/metadata/css/css-fonts/inheritance.html.ini
index ec98ebf50f7..fbfe9bcba95 100644
--- a/tests/wpt/metadata/css/css-fonts/inheritance.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/inheritance.html.ini
@@ -59,3 +59,21 @@
[Property font-variation-settings has initial value normal]
expected: FAIL
+ [Property font-variant-alternates has initial value normal]
+ expected: FAIL
+
+ [Property font-language-override inherits]
+ expected: FAIL
+
+ [Property font-optical-sizing has initial value auto]
+ expected: FAIL
+
+ [Property font-optical-sizing inherits]
+ expected: FAIL
+
+ [Property font-variant-alternates inherits]
+ expected: FAIL
+
+ [Property font-language-override has initial value normal]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini
new file mode 100644
index 00000000000..fcfff00336d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini
@@ -0,0 +1,7 @@
+[font-language-override-computed.html]
+ [Property font-language-override value '"ksw"' computes to '"ksw"']
+ expected: FAIL
+
+ [Property font-language-override value 'normal' computes to 'normal']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-valid.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-valid.html.ini
new file mode 100644
index 00000000000..1e8c3954e96
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-valid.html.ini
@@ -0,0 +1,7 @@
+[font-language-override-valid.html]
+ [e.style['font-language-override'\] = "\\"ksw\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['font-language-override'\] = "normal" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini
new file mode 100644
index 00000000000..484fb8b1c17
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini
@@ -0,0 +1,7 @@
+[font-optical-sizing-computed.html]
+ [Property font-optical-sizing value 'none' computes to 'none']
+ expected: FAIL
+
+ [Property font-optical-sizing value 'auto' computes to 'auto']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-valid.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-valid.html.ini
new file mode 100644
index 00000000000..623452df0ad
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-valid.html.ini
@@ -0,0 +1,7 @@
+[font-optical-sizing-valid.html]
+ [e.style['font-optical-sizing'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['font-optical-sizing'\] = "none" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/client-props-inline-list-item.html.ini b/tests/wpt/metadata/css/cssom-view/client-props-inline-list-item.html.ini
new file mode 100644
index 00000000000..ace08ae0e0f
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/client-props-inline-list-item.html.ini
@@ -0,0 +1,4 @@
+[client-props-inline-list-item.html]
+ [client* returns the same for non-replaced inlines regardless of list-item-ness]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
deleted file mode 100644
index e6e1f29e274..00000000000
--- a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[matchMedia-display-none-iframe.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/css/cssom-view/matchMediaAddListener-handleEvent.html.ini b/tests/wpt/metadata/css/cssom-view/matchMediaAddListener-handleEvent.html.ini
new file mode 100644
index 00000000000..176c9ea4568
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/matchMediaAddListener-handleEvent.html.ini
@@ -0,0 +1,10 @@
+[matchMediaAddListener-handleEvent.html]
+ [throws if handleEvent is falsy and not callable]
+ expected: FAIL
+
+ [rethrows errors when getting handleEvent]
+ expected: FAIL
+
+ [throws if handleEvent is thruthy and not callable]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index cd2291d4430..fa33468f5ab 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,21 +312,21 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index d2df9b78483..5c001592859 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
+ [separate text/javascript;charset=windows-1252 error text/javascript]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index e02f179ec25..bf50d59df41 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
- [features "innerheight=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index 23eefb8eaf9..e150c9d848f 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
- [features "screenx=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screeny=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screenx=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screenx=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index 940516ddd33..ad8840fbb68 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
- [features "top=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "top=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "top=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "left=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index 9027336b453..d1ed9088b2b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
- [features "height=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "width=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index 4e44584b123..a70e9dbad4d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405LLl" should set "height=405"]
- expected: TIMEOUT
-
- [features "height=/404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [features "height=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=L404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index fcaeae5336d..779531b4a98 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405*3" should set "height=405"]
- expected: TIMEOUT
-
- [features "innerheight=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 42327fedd27..7a1b258d52e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
- expected: TIMEOUT
-
- [features "innerwidth=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index a8e4fe06618..caba4124f0b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.32" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.5" should set "left=105"]
- expected: TIMEOUT
-
- [features "left=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=/104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=_104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 64a08faf0e6..9ace8a4cbdb 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screenx.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105.32" should set "left=105"]
- expected: TIMEOUT
-
- [features "screenx=_104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=/104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index 4f22ef4ef29..a82bd0f981a 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.5" should set "height=405"]
- expected: TIMEOUT
-
- [features "screeny=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
index 8540f53d8d6..10f617db69e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-top.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105*3" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105LLl" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e-1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.32" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105 " should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105^4" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.5" should set "top=105"]
- expected: TIMEOUT
-
- [features "top=/104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=_104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=L104" should NOT set "top=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 9d841e61bc0..28f93ee71b5 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-width.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405/5" should set "width=405"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
index c12c0f8ae48..6852d7663de 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
@@ -1,4 +1,8 @@
[skip-document-with-fragment.html]
+ expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL
+ [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html.ini
new file mode 100644
index 00000000000..b86f23427ac
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html.ini
@@ -0,0 +1,2 @@
+[select-sizing-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[toggleEvent.html]
- [Calling open twice on 'details' fires only one toggle event]
- expected: FAIL
-
- [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
deleted file mode 100644
index 178680e5d14..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[script-onerror-insertion-point-2.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini
index ec371a1bf72..8594361ff44 100644
--- a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini
+++ b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini
@@ -1,5 +1,5 @@
[nested-context-navigations-iframe.html]
- expected: TIMEOUT
+ expected: CRASH
[Test that iframe navigations are not observable by the parent, even after history navigations by the parent]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
new file mode 100644
index 00000000000..dbea4f293ad
--- /dev/null
+++ b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
@@ -0,0 +1,2 @@
+[transition_calc_implicit.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml
index a25f2a256eb..78f36842789 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -17,6 +17,10 @@
# Documention for the setup of these agents:
# https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows
+trigger:
+- epochs/*
+- triggers/*
+
jobs:
# The affected tests jobs are unconditional for speed, as most PRs have one or
# more affected tests: https://github.com/web-platform-tests/wpt/issues/13936.
diff --git a/tests/wpt/web-platform-tests/.github/workflows/manifest.yml b/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
index bb89f1ab12a..8e81c1088ea 100644
--- a/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
+++ b/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
@@ -14,10 +14,11 @@ jobs:
uses: actions/checkout@v1
with:
fetch-depth: 50
+ - name: Install dependencies
+ run: |
+ sudo apt-get -qqy install zstd
+ pip install -r tools/wpt/requirements.txt
- name: Run manifest_build.py
- uses: ./tools/docker/github
+ run: tools/docker/retry.py --delay 60 python tools/ci/manifest_build.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- entrypoint: python
- args: tools/ci/manifest_build.py
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index adb81d6c027..a267540cafb 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -12,15 +12,16 @@ tasks:
$flatten:
$match: {
event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}],
- event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}, {name: webkitgtk_minibrowser, channel: stable}],
- event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}],
+ event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}, {name: webkitgtk_minibrowser, channel: nightly}],
+ event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}, {name: webkitgtk_minibrowser, channel: stable}],
event.ref == "refs/heads/triggers/chrome_stable": [{name: chrome, channel: stable}],
event.ref == "refs/heads/triggers/chrome_beta": [{name: chrome, channel: beta}],
event.ref == "refs/heads/triggers/chrome_dev": [{name: chrome, channel: dev}],
event.ref == "refs/heads/triggers/firefox_stable": [{name: firefox, channel: stable}],
event.ref == "refs/heads/triggers/firefox_beta": [{name: firefox, channel: beta}],
event.ref == "refs/heads/triggers/firefox_nightly": [{name: firefox, channel: nightly}],
- event.ref == "refs/heads/triggers/webkitgtk_minibrowser_stable": [{name: webkitgtk_minibrowser, channel: stable}]
+ event.ref == "refs/heads/triggers/webkitgtk_minibrowser_stable": [{name: webkitgtk_minibrowser, channel: stable}],
+ event.ref == "refs/heads/triggers/webkitgtk_minibrowser_nightly": [{name: webkitgtk_minibrowser, channel: nightly}]
}
each(browser):
$map:
@@ -72,10 +73,6 @@ tasks:
source: ${event.repository.url}
payload:
image:
- $if: browser.name == 'webkitgtk_minibrowser'
- then:
- cl0p3z/web-platform-tests:0.1
- else:
harjgam/web-platform-tests:0.33
maxRunTime: 7200
artifacts:
diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-001.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-001.html
index 6ebabd15dee..226a3a19ad1 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-001.html
+++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-001.html
@@ -4,24 +4,45 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<link rel="help" href="https://crbug.com/979894">
+<link rel="help" href="https://crbug.com/1011816">
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#inline-width">
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
-html, body { margin: 0; }
-div {
+#container {
font-family: Ahem;
font-size: 10px;
line-height: 1;
+ margin-left: 10ch;
}
-#container {
+inline-block {
display: inline-block;
}
+.w1 { width: 1ch; }
+.w2 { width: 2ch; }
+.w4 { width: 4ch; }
+.w5 { width: 5ch; }
span {
color: orange;
}
+img {
+ height: .6em;
+ background: orange;
+}
</style>
<body>
- <div id="container" data-expected-height=10>123 <span style="margin-left: -8ch">1234 </span></div>
-<script>checkLayout('#container');</script>
+ <section id="container">
+ <div><inline-block data-expected-height=10>123 <span style="margin-left: -8ch">1234 </span></inline-block></div>
+ <div><inline-block data-expected-height=10>123 <span style="margin-left: -8ch">123 </span></inline-block></div>
+ <div class="w4" data-expected-height=10>123 <span style="margin-left: -4ch">1234 </span></div>
+ <div class="w4" data-expected-height=10>123 <span style="margin-left: -4ch">123 </span></div>
+ <div class="w4" data-expected-height=10><img class="w4"><span style="margin-left: -4ch">123</span></div>
+ <div class="w4" data-expected-height=10><img class="w5"><span style="margin-left: -5ch">123</span></div>
+ <div class="w4" data-expected-height=20><img class="w5"><span style="margin-left: -3ch">123</span></div>
+ <div class="w4" data-expected-height=10><img class="w4"><img class="w1" style="margin-left: -1ch"></div>
+ <div class="w4" data-expected-height=20><img class="w4"><img class="w2" style="margin-left: -1ch"></div>
+ <div class="w4" data-expected-height=10><img class="w5"><img class="w1" style="margin-left: -2ch"></div>
+ <div class="w4" data-expected-height=20><img class="w5"><img class="w2" style="margin-left: -2ch"></div>
+ </section>
+<script>checkLayout('[data-expected-height]');</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline-ref.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline-ref.html
new file mode 100644
index 00000000000..135bc04d8ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+
+<p>There should be an space between "Foo" and "bar" below</p>
+<span>Foo bar</span>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline.html
new file mode 100644
index 00000000000..a97c02575ba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-whitespace-inside-inline.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: Whitespace inside display: contents is preserved correctly.</title>
+<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="match" href="display-contents-whitespace-inside-inline-ref.html">
+
+<p>There should be an space between "Foo" and "bar" below</p>
+<span>Foo<div style="display: contents"> </div>bar</span>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
index 6192e50638c..21939f06cbd 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
@@ -29,12 +29,15 @@ const mediumFontSize = getComputedStyle(box).fontSize;
assert_inherited('font-family', null, '"Not Initial!"'); // Initial value depends on user agent.
assert_inherited('font-feature-settings', 'normal', '"smcp", "swsh" 2');
assert_inherited('font-kerning', 'auto', 'none');
+assert_inherited('font-language-override', 'normal' , '"ksw"');
+assert_inherited('font-optical-sizing', 'auto' , 'none');
assert_inherited('font-size', mediumFontSize /* medium */, '123px');
assert_inherited('font-size-adjust', 'none', '1.5');
assert_inherited('font-stretch', '100%' /* normal */, '75%');
assert_inherited('font-style', 'normal', 'italic');
assert_inherited('font-synthesis', 'weight style', 'none');
assert_inherited('font-variant', 'normal', 'none');
+assert_inherited('font-variant-alternates', 'normal', 'historical-forms');
assert_inherited('font-variant-caps', 'normal', 'small-caps');
assert_inherited('font-variant-east-asian', 'normal', 'ruby');
assert_inherited('font-variant-ligatures', 'normal', 'none');
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-computed.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-computed.html
new file mode 100644
index 00000000000..76601b97282
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-computed.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: getComputedStyle().fontLanguageOverride</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-language-override">
+<meta name="assert" content="font-language-override computed value is as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value('font-language-override', 'normal');
+test_computed_value('font-language-override', '"ksw"');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-invalid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-invalid.html
new file mode 100644
index 00000000000..f69e5516581
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: parsing font-language-override with invalid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-language-override">
+<meta name="assert" content="font-language-override supports only the grammar 'normal | <string>'.">
+<meta name="assert" content="font-language-override string has three letters.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value('font-language-override', 'auto');
+test_invalid_value('font-language-override', 'normal "ksw"');
+
+test_invalid_value('font-language-override', '"tr"');
+test_invalid_value('font-language-override', '"1 %"');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-valid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-valid.html
new file mode 100644
index 00000000000..27246f46ba5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-language-override-valid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: parsing font-language-override with valid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-language-override">
+<meta name="assert" content="font-language-override supports the full grammar 'normal | <string>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value('font-language-override', 'normal');
+test_valid_value('font-language-override', '"ksw"');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-computed.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-computed.html
new file mode 100644
index 00000000000..9e0719b12c3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-computed.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: getComputedStyle().fontOpticalSizing</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-optical-sizing">
+<meta name="assert" content="font-optical-sizing computed value is as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value('font-optical-sizing', 'auto');
+test_computed_value('font-optical-sizing', 'none');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-invalid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-invalid.html
new file mode 100644
index 00000000000..efd0f6257c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: parsing font-optical-sizing with invalid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-optical-sizing">
+<meta name="assert" content="font-optical-sizing supports only the grammar 'auto | none'.">
+<meta name="assert" content="font-optical-sizing string has three letters.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value('font-optical-sizing', 'normal');
+test_invalid_value('font-optical-sizing', 'auto none');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-valid.html b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-valid.html
new file mode 100644
index 00000000000..f9545d89204
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/parsing/font-optical-sizing-valid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Fonts Module Level 4: parsing font-optical-sizing with valid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-optical-sizing">
+<meta name="assert" content="font-optical-sizing supports the full grammar 'auto | none'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value('font-optical-sizing', 'auto');
+test_valid_value('font-optical-sizing', 'none');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content.html
new file mode 100644
index 00000000000..fb3f7007ee1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout test: align-content property</title>
+<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#content-distribution">
+<meta name="assert" content="This test checks that the align-content property is applied correctly in both directions RTL and LTR.">
+<meta name="flags" content="ahem">
+<link rel="stylesheet" href="/css/support/grid.css">
+<link rel="stylesheet" href="/css/support/alignment.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+
+<style>
+body {
+ margin: 0;
+}
+
+.grid {
+ grid: 100px 100px / 50px 50px;
+ position: relative;
+ width: 200px;
+ height: 300px;
+}
+
+.verticalGrid {
+ width: 300px;
+ height: 200px;
+}
+
+.cell {
+ width: 20px;
+ height: 40px;
+}
+</style>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.grid')">
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'center'</p>
+ <div class="grid alignContentCenter" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="50" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="50" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="150" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'left'</p>
+ <div class="grid alignContentLeft" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'right'</p>
+ <div class="grid alignContentRight" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'start'</p>
+ <div class="grid alignContentStart" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'end'</p>
+ <div class="grid alignContentEnd" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="200" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="200" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'flex-start'</p>
+ <div class="grid alignContentFlexStart" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'flex-end</p>
+ <div class="grid alignContentFlexEnd" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="200" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="200" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<!-- Default alignment and initial values. -->
+<div style="position: relative">
+ <p>direction: LTR | align-content: 'auto' (resolved to 'start')</p>
+ <div class="grid" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="50" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="50" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<!-- RTL direction. -->
+<div style="position: relative">
+ <p>direction: RTL | align-content: 'center'</p>
+ <div class="grid directionRTL alignContentCenter" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="180" data-offset-y="50" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="100" data-offset-y="50" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="150" data-offset-y="150" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="130" data-offset-y="150" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: RTL | align-content: 'left'</p>
+ <div class="grid directionRTL alignContentLeft" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="100" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="150" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="130" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: RTL | align-content: 'right'</p>
+ <div class="grid directionRTL alignContentRight" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="100" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="150" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="130" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: RTL | align-content: 'start'</p>
+ <div class="grid directionRTL alignContentStart" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="100" data-offset-y="0" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="150" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="130" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>direction: RTL | align-content: 'end'</p>
+ <div class="grid directionRTL alignContentEnd" data-expected-width="200" data-expected-height="300">
+ <div class="cell firstRowFirstColumn" data-offset-x="180" data-offset-y="100" data-expected-width="20" data-expected-height="40"></div>
+ <div class="firstRowSecondColumn" data-offset-x="100" data-offset-y="100" data-expected-width="50" data-expected-height="100"></div>
+ <div class="secondRowFirstColumn" data-offset-x="150" data-offset-y="200" data-expected-width="50" data-expected-height="100"></div>
+ <div class="cell secondRowSecondColumn" data-offset-x="130" data-offset-y="200" data-expected-width="20" data-expected-height="40"></div>
+ </div>
+</div>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-001.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-001.html
index 9b49e623ad7..69c300d864e 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-001.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-001.html
@@ -38,5 +38,20 @@ x { background: grey; }
</div>
</div>
+<script>
+ const expectedResults = [
+ "subgrid [] [] [] []",
+ ];
+ [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
+ let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
+ let expected = expectedResults[i];
+ if (actual != expected) {
+ let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+ " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+ document.body.appendChild(document.createTextNode(err));
+ }
+ });
+</script>
+
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-004.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-004.html
index 0d2a96873da..84f727d2e35 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-004.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-004.html
@@ -50,5 +50,20 @@ x { background: grey; }
</div>
</div>
+<script>
+ const expectedResults = [
+ "subgrid [x] [b] [] [] [b]",
+ ];
+ [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
+ let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
+ let expected = expectedResults[i];
+ if (actual != expected) {
+ let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+ " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+ document.body.appendChild(document.createTextNode(err));
+ }
+ });
+</script>
+
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-005.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-005.html
index 43bde0b37ad..d7bcf7a7e7b 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-005.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/line-names-005.html
@@ -151,5 +151,32 @@ x {
</div>
</div>
+<script>
+ const expectedResults = [
+ "subgrid [] [] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [b] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] [] [] [] [] [] []",
+ "subgrid [] [] [] [] [] []",
+ ];
+ [...document.querySelectorAll('div > div')].forEach(function(subgrid, i) {
+ let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
+ let expected = expectedResults[i];
+ if (actual != expected) {
+ let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+ " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+ document.body.appendChild(document.createTextNode(err));
+ }
+ });
+</script>
+
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-001.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-001.html
index 643cde377e6..e17fc8274f4 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-001.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-001.html
@@ -390,5 +390,44 @@ html,body {
<div style="grid-column:y -5"></div>
</div></div>
+<script>
+ const expectedResults = [
+ "subgrid [z] [z] [z] [z] [z]",
+ "subgrid [x] [z] [z] [z] [z]",
+ "subgrid [x] [x] [z] [z] [z]",
+ "subgrid [x] [x] [x] [z] [z]",
+ "subgrid [x] [x] [x] [x] [z]",
+ "subgrid [x] [x] [x] [x] [x]",
+ "subgrid [x] [x] [x] [x] [x]",
+ "subgrid [x] [x] [x] [x] [x]",
+ "subgrid [x] [x] [x] [x] [x]",
+ "subgrid [x] [x] [x] [x] [x]",
+ "subgrid [y] [z] [z] [z] [z]",
+ "subgrid [x] [y] [z] [z] [z]",
+ "subgrid [x] [x] [y] [z] [z]",
+ "subgrid [x] [x] [x] [y] [z]",
+ "subgrid [x] [x] [x] [x] [y]",
+ "subgrid [y] [y] [z] [z] [z]",
+ "subgrid [x] [y] [y] [z] [z]",
+ "subgrid [x] [x] [y] [y] [z]",
+ "subgrid [x] [x] [x] [y] [y]",
+ "subgrid [y] [y] [y] [z] [z]",
+ "subgrid [x] [y] [y] [y] [z]",
+ "subgrid [x] [x] [y] [y] [y]",
+ "subgrid [y] [y] [y] [y] [z]",
+ "subgrid [x] [y] [y] [y] [y]",
+ "subgrid [y] [y] [y] [y] [y]",
+ ];
+ [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
+ let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
+ let expected = expectedResults[i];
+ if (actual != expected) {
+ let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+ " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+ document.body.appendChild(document.createTextNode(err));
+ }
+ });
+</script>
+
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-006.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-006.html
index 4a16d8e4a9b..8d4213c6d87 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-006.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/repeat-auto-fill-006.html
@@ -165,5 +165,40 @@ item {
</div>
</div>
+<script>
+ const expectedResults = [
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] []",
+ "subgrid [x] [x] [] [] [x]",
+ "subgrid [x] [x] [] [x] []",
+ "subgrid [x] [x] [x] [x] []",
+ "subgrid [] [] [] [] []",
+ "subgrid [] [] [] [x] []",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] []",
+ "subgrid [] [] [] [] []",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [x] [x] [] [] [x]",
+ "subgrid [x] [x] [x] [] []",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] [x]",
+ "subgrid [] [] [] [] []",
+ ];
+ [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
+ let actual = window.getComputedStyle(subgrid)['grid-template-rows'];
+ let expected = expectedResults[i];
+ if (actual != expected) {
+ let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+ " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+ document.body.appendChild(document.createTextNode(err));
+ }
+ });
+</script>
+
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-block-inline-shorthand.html b/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-block-inline-shorthand.html
new file mode 100644
index 00000000000..3b2ce6c040b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-block-inline-shorthand.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: inset-block and inset-inline set longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-inset-block">
+<meta name="assert" content="inset-block, inset-inline support the full grammar '<'top'>{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('inset-block', '10px', {
+ 'inset-block-start': '10px',
+ 'inset-block-end': '10px'
+});
+
+test_shorthand_value('inset-block', '20% auto', {
+ 'inset-block-start': '20%',
+ 'inset-block-end': 'auto'
+});
+
+test_shorthand_value('inset-inline', '30%', {
+ 'inset-inline-start': '30%',
+ 'inset-inline-end': '30%'
+});
+
+test_shorthand_value('inset-inline', 'auto 40px', {
+ 'inset-inline-start': 'auto',
+ 'inset-inline-end': '40px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/parsing/margin-block-inline-shorthand.html b/tests/wpt/web-platform-tests/css/css-logical/parsing/margin-block-inline-shorthand.html
new file mode 100644
index 00000000000..9cdae57402b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/parsing/margin-block-inline-shorthand.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: margin-block and margin-inline sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-margin-block">
+<meta name="assert" content="margin-block, margin-inline support the full grammar '<'margin-top'>{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('margin-block', '10px', {
+ 'margin-block-start': '10px',
+ 'margin-block-end': '10px'
+});
+
+test_shorthand_value('margin-block', '20% auto', {
+ 'margin-block-start': '20%',
+ 'margin-block-end': 'auto'
+});
+
+test_shorthand_value('margin-inline', '30%', {
+ 'margin-inline-start': '30%',
+ 'margin-inline-end': '30%'
+});
+
+test_shorthand_value('margin-inline', 'auto 40px', {
+ 'margin-inline-start': 'auto',
+ 'margin-inline-end': '40px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/parsing/padding-block-inline-shorthand.html b/tests/wpt/web-platform-tests/css/css-logical/parsing/padding-block-inline-shorthand.html
new file mode 100644
index 00000000000..d0811c27dc8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/parsing/padding-block-inline-shorthand.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: padding-block and padding-inline set longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-padding-block">
+<meta name="assert" content="padding-block, padding-inline support the full grammar '<'padding-top'>{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('padding-block', '0% 10px', {
+ 'padding-block-start': '0%',
+ 'padding-block-end': '10px'
+});
+
+test_shorthand_value('padding-block', '20%', {
+ 'padding-block-start': '20%',
+ 'padding-block-end': '20%'
+});
+
+test_shorthand_value('padding-inline', '10px 30%', {
+ 'padding-inline-start': '10px',
+ 'padding-inline-end': '30%'
+});
+
+test_shorthand_value('padding-inline', '0%', {
+ 'padding-inline-start': '0%',
+ 'padding-inline-end': '0%'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/nested-with-padding-and-spanner.html b/tests/wpt/web-platform-tests/css/css-multicol/nested-with-padding-and-spanner.html
new file mode 100644
index 00000000000..bea27a95781
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/nested-with-padding-and-spanner.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1006249">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; width:500px; height:500px; margin-top:-1px;">
+ <div style="columns:2; column-fill:auto; height:400px; padding-top:1px;">
+ <div></div>
+ <div style="width:100px; column-span:all; background:red;">
+ <div style="height:50px; break-inside:avoid; background:green;"></div>
+ <div style="height:50px; break-inside:avoid; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html
new file mode 100644
index 00000000000..04e1d428647
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Scroll Snap Test: scroll-margin-block, scroll-margin-inline set longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical">
+<meta name="assert" content="scroll-margin-block, scroll-margin-inline support the full grammar '<length>{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('scroll-margin-block', '10px 20px', {
+ 'scroll-margin-block-start': '10px',
+ 'scroll-margin-block-end': '20px'
+});
+
+test_shorthand_value('scroll-margin-block', '30px', {
+ 'scroll-margin-block-start': '30px',
+ 'scroll-margin-block-end': '30px'
+});
+
+test_shorthand_value('scroll-margin-inline', '50px 60px', {
+ 'scroll-margin-inline-start': '50px',
+ 'scroll-margin-inline-end': '60px'
+});
+
+test_shorthand_value('scroll-margin-inline', '-40px', {
+ 'scroll-margin-inline-start': '-40px',
+ 'scroll-margin-inline-end': '-40px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html
new file mode 100644
index 00000000000..96a45952264
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Scroll Snap Test: scroll-margin sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin">
+<meta name="assert" content="scroll-margin supports the full grammar '<length>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('scroll-margin', '10px', {
+ 'scroll-margin-top': '10px',
+ 'scroll-margin-right': '10px',
+ 'scroll-margin-bottom': '10px',
+ 'scroll-margin-left': '10px'
+});
+
+test_shorthand_value('scroll-margin', '30px 20px', {
+ 'scroll-margin-top': '30px',
+ 'scroll-margin-right': '20px',
+ 'scroll-margin-bottom': '30px',
+ 'scroll-margin-left': '20px'
+});
+
+test_shorthand_value('scroll-margin', '1px 2px 3px', {
+ 'scroll-margin-top': '1px',
+ 'scroll-margin-right': '2px',
+ 'scroll-margin-bottom': '3px',
+ 'scroll-margin-left': '2px'
+});
+
+test_shorthand_value('scroll-margin', '-1px 2px 3px 0', {
+ 'scroll-margin-top': '-1px',
+ 'scroll-margin-right': '2px',
+ 'scroll-margin-bottom': '3px',
+ 'scroll-margin-left': '0px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html
new file mode 100644
index 00000000000..491cfa9e96e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Scroll Snap Test: scroll-padding-block, scroll-padding-inline set longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical">
+<meta name="assert" content="scroll-padding-block, scroll-padding-inline support the full grammar '[ auto | <length-percentage> ]{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('scroll-padding-block', 'auto 10px', {
+ 'scroll-padding-block-start': 'auto',
+ 'scroll-padding-block-end': '10px'
+});
+
+test_shorthand_value('scroll-padding-block', '20%', {
+ 'scroll-padding-block-start': '20%',
+ 'scroll-padding-block-end': '20%'
+});
+
+test_shorthand_value('scroll-padding-inline', '10px auto', {
+ 'scroll-padding-inline-start': '10px',
+ 'scroll-padding-inline-end': 'auto'
+});
+
+test_shorthand_value('scroll-padding-inline', '0%', {
+ 'scroll-padding-inline-start': '0%',
+ 'scroll-padding-inline-end': '0%'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html
new file mode 100644
index 00000000000..2162c7f10d7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Scroll Snap Test: scroll-padding sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding">
+<meta name="assert" content="scroll-padding supports the full grammar '[ <length-percentage> | auto ]{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('scroll-padding', '10px', {
+ 'scroll-padding-top': '10px',
+ 'scroll-padding-right': '10px',
+ 'scroll-padding-bottom': '10px',
+ 'scroll-padding-left': '10px'
+});
+
+test_shorthand_value('scroll-padding', 'auto 20px', {
+ 'scroll-padding-top': 'auto',
+ 'scroll-padding-right': '20px',
+ 'scroll-padding-bottom': 'auto',
+ 'scroll-padding-left': '20px'
+});
+
+test_shorthand_value('scroll-padding', '1px 2px 3px', {
+ 'scroll-padding-top': '1px',
+ 'scroll-padding-right': '2px',
+ 'scroll-padding-bottom': '3px',
+ 'scroll-padding-left': '2px'
+});
+
+test_shorthand_value('scroll-padding', '1% 2px 3px 0', {
+ 'scroll-padding-top': '1%',
+ 'scroll-padding-right': '2px',
+ 'scroll-padding-bottom': '3px',
+ 'scroll-padding-left': '0px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-tables/background-clip-001.html b/tests/wpt/web-platform-tests/css/css-tables/background-clip-001.html
new file mode 100644
index 00000000000..b4caf5f0eb1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-tables/background-clip-001.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<title>Collapsed borders and background-clip</title>
+<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#in-collapsed-borders-mode">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#the-background-clip">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<link rel="bookmark" href="https://crbug.com/1008400" />
+<meta name="flags" content="" />
+<meta name="assert" content="background-clip on a cell with collapsed borders is calculated correctly" />
+
+<style>
+table {
+ border-collapse: collapse;
+ /* The properties after the blank line are not the behavior under test. */
+
+ background: red;
+}
+
+td {
+ background-clip: content-box;
+ border: 30px solid green;
+
+ background-color: green;
+ padding: 0px;
+ line-height: 0px;
+}
+
+.cell-content {
+ display: inline-block;
+
+ height: 40px;
+ width: 40px;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<table>
+ <tr>
+ <td>
+ <span class="cell-content"></span>
+ </td>
+ </tr>
+</table>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/text-align-computed.html b/tests/wpt/web-platform-tests/css/css-text/parsing/text-align-computed.html
new file mode 100644
index 00000000000..30c231be66f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/text-align-computed.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Module Test: getComputedStyle().textAlign</title>
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-text-align">
+<meta name="assert" content="text-align computed value is as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<style>
+ #container {
+ text-align: center;
+ }
+</style>
+</head>
+<body>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+test_computed_value("text-align", "start");
+test_computed_value("text-align", "end");
+test_computed_value("text-align", "left");
+test_computed_value("text-align", "right");
+test_computed_value("text-align", "center");
+test_computed_value("text-align", "justify");
+test_computed_value("text-align", "match-parent", "center");
+
+// TODO: Test justify-all
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats-ref.html
new file mode 100644
index 00000000000..71a4c4c284b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test Reference: positioning of a sideways-lr block alongside vertical-lr floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <meta content="image" name="flags">
+
+ <style>
+ html {
+ writing-mode: vertical-lr;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ display: flow-root; /* Establishes a block formatting context */
+ }
+ </style>
+
+ <body>
+ <p><img src="support/ortho-htb-alongside-vrl-floats-002-exp-res.png" width="300" height="36" alt="Image download support must be enabled"></p>
+ <!--
+ The image says:
+ Test passes if the orange rectangle
+ is below the blue rectangle.
+ -->
+
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats.html b/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats.html
new file mode 100644
index 00000000000..76fb454f6a1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/slr-alongside-vlr-floats.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test: positioning of a sideways-lr block alongside vertical-lr floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-writing-modes/#block-flow" title="3.2. Block Flow Direction: the writing-mode property">
+ <link rel="match" href="slr-alongside-vlr-floats-ref.html">
+
+ <!-- This test is adapted from Gérard Talbot's "ortho-htb-alongside-vrl-floats-014.xht" -->
+
+ <meta content="image" name="flags">
+ <meta content="This test verifies that the orange block box, which creates a new block formatting context, should flow next to the earliest float that offers sufficient space in the inline-direction." name="assert">
+
+ <style>
+ html {
+ writing-mode: vertical-lr;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: sideways-lr; /* Same block direction as <html> */
+ }
+ </style>
+
+ <body>
+ <p><img src="support/ortho-htb-alongside-vrl-floats-002-exp-res.png" width="300" height="36" alt="Image download support must be enabled"></p>
+ <!--
+ The image says:
+ Test passes if the orange rectangle
+ is below the blue rectangle.
+ -->
+
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats-ref.html
new file mode 100644
index 00000000000..cd6ee5e9186
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test Reference: positioning of a sideways-rl block alongside vertical-rl floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <meta content="image" name="flags">
+
+ <style>
+ html {
+ writing-mode: vertical-rl;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ display: flow-root; /* Establishes a block formatting context */
+ }
+ </style>
+
+ <body>
+ <p><img src="support/ortho-htb-alongside-vrl-floats-002-exp-res.png" width="300" height="36" alt="Image download support must be enabled"></p>
+ <!--
+ The image says:
+ Test passes if the orange rectangle
+ is below the blue rectangle.
+ -->
+
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats.html b/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats.html
new file mode 100644
index 00000000000..7b3ee59207b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/srl-alongside-vrl-floats.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test: positioning of a sideways-rl block alongside vertical-rl floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-writing-modes/#block-flow" title="3.2. Block Flow Direction: the writing-mode property">
+ <link rel="match" href="srl-alongside-vrl-floats-ref.html">
+
+ <!-- This test is adapted from Gérard Talbot's "ortho-htb-alongside-vrl-floats-014.xht" -->
+
+ <meta content="image" name="flags">
+ <meta content="This test verifies that the orange block box, which creates a new block formatting context, should flow next to the earliest float that offers sufficient space in the inline-direction." name="assert">
+
+ <style>
+ html {
+ writing-mode: vertical-rl;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: sideways-rl; /* Same block direction as <html> */
+ }
+ </style>
+
+ <body>
+ <p><img src="support/ortho-htb-alongside-vrl-floats-002-exp-res.png" width="300" height="36" alt="Image download support must be enabled"></p>
+ <!--
+ The image says:
+ Test passes if the orange rectangle
+ is below the blue rectangle.
+ -->
+
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html
new file mode 100644
index 00000000000..fc4bbee90ad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats-ref.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test Reference: positioning of a text-orientation:sideways block alongside vertical-lr floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+
+ <style>
+ html {
+ writing-mode: vertical-lr;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: vertical-lr;
+ }
+ </style>
+
+ <body>
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html b/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html
new file mode 100644
index 00000000000..f605f20aa7e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/vlr-text-orientation-sideways-alongside-vlr-floats.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test: positioning of a text-orientation:sideways block alongside vertical-lr floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-writing-modes/#block-flow" title="3.2. Block Flow Direction: the writing-mode property">
+ <link rel="match" href="vlr-text-orientation-sideways-alongside-vlr-floats-ref.html">
+
+ <!-- This test is adapted from Gérard Talbot's "ortho-htb-alongside-vrl-floats-014.xht" -->
+
+ <meta content="This test verifies that the orange block box, which should not create a new block formatting context, should flow next to the first float." name="assert">
+
+ <style>
+ html {
+ writing-mode: vertical-lr;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: vertical-lr;
+ text-orientation: sideways; /* Should not create block formatting context */
+ }
+ </style>
+
+ <body>
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html
new file mode 100644
index 00000000000..218d5abdbe7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats-ref.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test Reference: positioning of a text-orientation:sideways block alongside vertical-rl floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+
+ <style>
+ html {
+ writing-mode: vertical-rl;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: vertical-rl;
+ }
+ </style>
+
+ <body>
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html b/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html
new file mode 100644
index 00000000000..710221031a3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/vrl-text-orientation-sideways-alongside-vrl-floats.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+ <title>CSS Writing Modes Test: positioning of a text-orientation:sideways block alongside vertical-rl floats</title>
+
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-writing-modes/#block-flow" title="3.2. Block Flow Direction: the writing-mode property">
+ <link rel="match" href="vrl-text-orientation-sideways-alongside-vrl-floats-ref.html">
+
+ <!-- This test is adapted from Gérard Talbot's "ortho-htb-alongside-vrl-floats-014.xht" -->
+
+ <meta content="This test verifies that the orange block box, which should not create a new block formatting context, should flow next to the first float." name="assert">
+
+ <style>
+ html {
+ writing-mode: vertical-rl;
+ }
+
+ div {
+ block-size: 100px;
+ }
+
+ div#first-olive-float {
+ background-color: olive;
+ float: left;
+ inline-size: 50%;
+ }
+
+ div#second-blue-float-with-clear {
+ background-color: blue;
+ clear: left;
+ float: left;
+ inline-size: 25%;
+ }
+
+ div#orange-bfc {
+ background-color: orange;
+ inline-size: 75%;
+ writing-mode: vertical-rl;
+ text-orientation: sideways; /* Should not create block formatting context */
+ }
+ </style>
+
+ <body>
+ <div id="first-olive-float">&nbsp;</div>
+ <div id="second-blue-float-with-clear">&nbsp;</div>
+ <div id="orange-bfc">&nbsp;</div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-001.html
new file mode 100644
index 00000000000..02af09311f7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-001.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+ <meta charset="utf-8">
+ <title>CSS-Writing Modes Test: propagation of the writing-mode property from body to root</title>
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel=help href="https://drafts.csswg.org/css-writing-modes-3/#principal-flow">
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+ <meta name=assert content="The writing mode of the body must be propagated to the root with the dynamic change.">
+
+ <script>
+ function runTest() {
+ document.body.offsetHeight;
+ document.body.style.writingMode = "vertical-rl";
+ }
+ </script>
+
+ <style>
+ div {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+ </style>
+
+ <body onload="runTest();">
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled"></p>
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html
new file mode 100644
index 00000000000..d7ddfd553d6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <meta charset="utf-8">
+ <title>CSS-Writing Modes Test: propagation of the writing-mode property from body to root</title>
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+
+ <style>
+ html {
+ writing-mode: vertical-rl;
+ }
+
+ main {
+ writing-mode: horizontal-tb;
+ inline-size: 100px;
+ }
+
+ div {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+ </style>
+
+ <main>
+ <div></div>
+ <p>Test passes if you see a blue square in the upper-right corner of the page</p>
+ </main>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002.html
new file mode 100644
index 00000000000..1f485f68d86
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-dynamic-change-002.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+ <meta charset="utf-8">
+ <title>CSS-Writing Modes Test: propagation of the writing-mode property from body to root</title>
+ <link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel=help href="https://drafts.csswg.org/css-writing-modes-3/#principal-flow">
+ <link rel="match" href="wm-propagation-body-dynamic-change-002-ref.html">
+ <meta name=assert content="The writing mode of the newly inserted body must be propagated to the root.">
+
+ <script>
+ function runTest() {
+ document.body.offsetHeight;
+
+ var newBody = document.createElement("body");
+ newBody.id = "new-body";
+ var oldBody = document.getElementById("old-body");
+
+ /* Insert a new <body> before the old one, which should become the primary <body>. */
+ document.documentElement.insertBefore(newBody, oldBody);
+ }
+ </script>
+
+ <style>
+ #new-body {
+ /* This writing-mode should propagate to the root element. */
+ writing-mode: vertical-rl;
+ margin: 0;
+ }
+
+ #old-body {
+ writing-mode: horizontal-tb;
+ inline-size: 100px;
+ }
+
+ div {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+ </style>
+
+ <body id="old-body" onload="runTest();">
+ <div></div>
+ <p>Test passes if you see a blue square in the upper-right corner of the page</p>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/client-props-inline-list-item.html b/tests/wpt/web-platform-tests/css/cssom-view/client-props-inline-list-item.html
new file mode 100644
index 00000000000..725bb787a5e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/client-props-inline-list-item.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>client* returns the same for non-replaced inlines regardless of list-item-ness</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1581467">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<style>
+ .li {
+ display: inline list-item;
+ }
+</style>
+<div style="position: absolute"><span>Foo</span></div>
+<div style="position: absolute"><span class="li">Foo</span></div>
+<script>
+test(() => {
+ let first = document.querySelector("span");
+ let second = document.querySelector(".li");
+
+ assert_equals(first.clientWidth, second.clientWidth, "clientWidth should match");
+ assert_equals(first.clientHeight, second.clientHeight, "clientHeight should match");
+ assert_equals(first.clientTop, second.clientTop, "clientTop should match");
+ assert_equals(first.clientLeft, second.clientLeft, "clientLeft should match");
+}, "client* returns the same for non-replaced inlines regardless of list-item-ness");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/matchMediaAddListener-handleEvent.html b/tests/wpt/web-platform-tests/css/cssom-view/matchMediaAddListener-handleEvent.html
new file mode 100644
index 00000000000..8bc665693d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/matchMediaAddListener-handleEvent.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: CSSOM View matchMedia handleEvent via addListener</title>
+<link rel="help" href="https://dom.spec.whatwg.org/#callbackdef-eventlistener">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/matchMedia.js"></script>
+<div id="log"></div>
+<script>
+setup({ allow_uncaught_exception: true });
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let _this;
+ let _event;
+ const eventListener = {
+ handleEvent(event) {
+ _this = this;
+ _event = event;
+ },
+ };
+
+ mql.addListener(eventListener);
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+
+ assert_equals(_this, eventListener);
+ assert_equals(_event.matches, mql.matches);
+ assert_equals(_event.media, MEDIA_QUERY);
+}, "calls handleEvent method of event listener");
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let uncaughtError;
+ const errorHandler = event => {
+ uncaughtError = event.error;
+ };
+ window.addEventListener("error", errorHandler);
+ t.add_cleanup(() => {
+ window.removeEventListener("error", errorHandler);
+ });
+
+ const thrownError = { name: "test" };
+ mql.addListener({
+ get handleEvent() {
+ throw thrownError;
+ },
+ });
+
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+ assert_equals(uncaughtError, thrownError);
+}, "rethrows errors when getting handleEvent");
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let calls = 0;
+ mql.addListener({
+ get handleEvent() {
+ calls++;
+ return function() {};
+ },
+ });
+ assert_equals(calls, 0);
+
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+ assert_equals(calls, 1);
+
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+ assert_equals(calls, 2);
+}, "looks up handleEvent method on every event dispatch");
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let calls = 0;
+ const eventListener = function() { calls++; };
+ Object.defineProperty(eventListener, "handleEvent", {
+ get: t.unreached_func("handleEvent method should not be looked up on functions"),
+ });
+ mql.addListener(eventListener);
+
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+ assert_equals(calls, 1);
+}, "doesn't look up handleEvent method on callable event listeners");
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let uncaughtError;
+ const errorHandler = event => {
+ uncaughtError = event.error;
+ };
+ window.addEventListener("error", errorHandler);
+ t.add_cleanup(() => {
+ window.removeEventListener("error", errorHandler);
+ });
+
+ mql.addListener({ handleEvent: null });
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+
+ assert_equals(uncaughtError.name, "TypeError");
+}, "throws if handleEvent is falsy and not callable");
+
+promise_test(async t => {
+ const iframe = await createIframe(t);
+ const mql = iframe.contentWindow.matchMedia(MEDIA_QUERY);
+
+ let uncaughtError;
+ const errorHandler = event => {
+ uncaughtError = event.error;
+ };
+ window.addEventListener("error", errorHandler);
+ t.add_cleanup(() => {
+ window.removeEventListener("error", errorHandler);
+ });
+
+ mql.addListener({ handleEvent: "str" });
+ triggerMQLEvent(iframe);
+ await waitForChangesReported();
+
+ assert_equals(uncaughtError.name, "TypeError");
+}, "throws if handleEvent is thruthy and not callable");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js b/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js
new file mode 100644
index 00000000000..93f4a315050
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js
@@ -0,0 +1,32 @@
+const IFRAME_BASE_WIDTH = "200";
+const MEDIA_QUERY = `(max-width: ${IFRAME_BASE_WIDTH}px)`;
+
+function createIframe(t) {
+ const iframe = document.createElement("iframe");
+ iframe.srcdoc = "";
+ iframe.width = IFRAME_BASE_WIDTH;
+ iframe.height = "100";
+ iframe.style.border = "none";
+
+ t.add_cleanup(() => {
+ document.body.removeChild(iframe);
+ });
+
+ return new Promise(resolve => {
+ iframe.addEventListener("load", () => {
+ resolve(iframe);
+ });
+
+ document.body.appendChild(iframe);
+ });
+}
+
+function triggerMQLEvent(iframe) {
+ iframe.width = iframe.width === IFRAME_BASE_WIDTH ? "250" : IFRAME_BASE_WIDTH;
+}
+
+function waitForChangesReported() {
+ return new Promise(resolve => {
+ step_timeout(resolve, 75);
+ });
+}
diff --git a/tests/wpt/web-platform-tests/docs/Makefile b/tests/wpt/web-platform-tests/docs/Makefile
index 51d4b74a569..1b7fe8e8f59 100644
--- a/tests/wpt/web-platform-tests/docs/Makefile
+++ b/tests/wpt/web-platform-tests/docs/Makefile
@@ -20,5 +20,5 @@ tools/%:
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile tools/wptserve tools/certs
+%: Makefile tools/wptserve tools/certs tools/wptrunner
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/tests/wpt/web-platform-tests/docs/admin/index.md b/tests/wpt/web-platform-tests/docs/admin/index.md
index aa06e765d7b..8a04e2a0c80 100644
--- a/tests/wpt/web-platform-tests/docs/admin/index.md
+++ b/tests/wpt/web-platform-tests/docs/admin/index.md
@@ -11,6 +11,7 @@ infrastructure which makes the project possible.
../README
../tools/wptserve/docs/index.rst
+ ../tools/wptrunner/README
.. toctree::
:hidden:
diff --git a/tests/wpt/web-platform-tests/docs/conf.py b/tests/wpt/web-platform-tests/docs/conf.py
index dc17e6d1b76..e425667ce88 100644
--- a/tests/wpt/web-platform-tests/docs/conf.py
+++ b/tests/wpt/web-platform-tests/docs/conf.py
@@ -43,7 +43,8 @@ release = u''
extensions = [
'recommonmark',
'sphinxarg.ext',
- 'sphinx.ext.autodoc'
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.intersphinx'
]
# Add any paths that contain templates here, relative to this directory.
@@ -191,3 +192,6 @@ epub_title = project
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
+
+intersphinx_mapping = {'python': ('https://docs.python.org/2/', None),
+ 'mozilla': ('https://firefox-source-docs.mozilla.org/', None)}
diff --git a/tests/wpt/web-platform-tests/docs/make.bat b/tests/wpt/web-platform-tests/docs/make.bat
index 53732706352..49607bb0ae9 100644
--- a/tests/wpt/web-platform-tests/docs/make.bat
+++ b/tests/wpt/web-platform-tests/docs/make.bat
@@ -29,6 +29,7 @@ if not exist tools\ ( mkdir tools )
if not exist tools\wptserve\ ( mklink /d tools\wptserve ..\..\tools\wptserve )
if not exist tools\certs\ ( mklink /d tools\certs ..\..\tools\certs )
+if not exist tools\wptrunner\ ( mklink /d tools\wptrunner ..\..\tools\wptrunner )
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
index 2d44ecb7d2f..5a9a776a285 100644
--- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
+++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
@@ -147,3 +147,9 @@ Additional browser-specific documentation:
safari
webkitgtk_minibrowser
```
+
+For use in continuous integration systems, and other scenarios where regression
+tracking is required, the command-line interface supports storing and loading
+the expected result of each test in a test run. See [Expectations
+Data](../../tools/wptrunner/docs/expectation) for more information on creating
+and maintaining these files.
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
index 24fe7a526cb..fac421c09fa 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
@@ -2,24 +2,12 @@
"use strict";
Promise.resolve().then(async () => {
- // On success, WakeLock.request() returns a promise that never resolves. To
- // prevent a timeout, abort it with an AbortController and use the different
- // DOMExceptions we get to determine if this worked or not.
- const controller = new AbortController();
- const wakeLock = WakeLock.request("screen", { signal: controller.signal });
- wakeLock.catch(e => {
- if (e.name == "AbortError") {
- // We stopped due to the call to AbortController.abort(), so we did manage
- // to get the lock.
- window.parent.postMessage({ enabled: true }, "*");
- } else if (e.name == "NotAllowedError") {
- // This means requesting the lock failed.
- window.parent.postMessage({ enabled: false }, "*");
- } else {
- // We should not really hit this branch.
- window.parent.postMessage({ enabled: false }, "*");
- }
- });
- controller.abort();
+ try {
+ const wakeLock = await navigator.wakeLock.request("screen");
+ await wakeLock.release();
+ window.parent.postMessage({ enabled: true }, "*");
+ } catch (e) {
+ window.parent.postMessage({ enabled: false }, "*");
+ }
});
</script>
diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
index 1779fd6bb59..f0d37fb9f24 100644
--- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
+++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
@@ -246,12 +246,15 @@ function runGenericSensorTests(sensorName,
assert_true(verificationFunction(expected, sensor2, /*isNull=*/true));
}, `${sensorName}: sensor reading is correct.`);
- sensor_test(async t => {
+ sensor_test(async (t, sensorProvider) => {
assert_true(sensorName in self);
const sensor = new sensorType();
const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]);
sensor.start();
+ const mockSensor = await sensorProvider.getCreatedSensor(sensorName);
+ await mockSensor.setSensorReading(readings);
+
await sensorWatcher.wait_for("reading");
const cachedTimeStamp1 = sensor.timestamp;
@@ -392,6 +395,7 @@ function runGenericSensorTests(sensorName,
fastSensor.start();
const mockSensor = await sensorProvider.getCreatedSensor(sensorName);
+ await mockSensor.setSensorReading(readings);
const fastCounter = await new Promise((resolve, reject) => {
let fastSensorNotifiedCounter = 0;
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html
new file mode 100644
index 00000000000..c59a6e1d987
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001-ref.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Reference for sizing of select elements, with wide vs. empty option selected</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ select {
+ color: transparent;
+ margin: 1px;
+ }
+ div.customBorder > select {
+ /* This class is to let us test select elements *without* native theming
+ (for browsers that have both native and non-native controls): */
+ border: 3px solid black;
+ }
+ </style>
+</head>
+<body>
+ <div>
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ </div>
+
+ <!-- This is the same as above, but now with a custom border on the
+ select elements: -->
+ <div class="customBorder">
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <select>
+ <option>some wide option</option>
+ </select>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html
new file mode 100644
index 00000000000..e8db3eae1d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/select-sizing-001.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test for sizing of select elements, with wide vs. empty option selected</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#list-box">
+ <link rel="match" href="select-sizing-001-ref.html">
+ <style>
+ select {
+ color: transparent;
+ margin: 1px;
+ }
+ div.customBorder > select {
+ /* This class is to let us test select elements *without* native theming
+ (for browsers that have both native and non-native controls): */
+ border: 3px solid black;
+ }
+ </style>
+</head>
+<body>
+ <div>
+ <!-- Wide thing is 2nd, and not selected: -->
+ <select>
+ <option></option>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <!-- Wide thing is 2nd, and selected: -->
+ <select>
+ <option></option>
+ <option selected>some wide option</option>
+ </select>
+ <br>
+ <!-- Wide thing is 1st, and selected (implicitly): -->
+ <select>
+ <option>some wide option</option>
+ <option></option>
+ </select>
+ <br>
+ <!-- Wide thing is 1st, and not selected: -->
+ <select>
+ <option>some wide option</option>
+ <option selected></option>
+ </select>
+ </div>
+
+ <!-- This is the same as above, but now with a custom border on the
+ select elements: -->
+ <div class="customBorder">
+ <!-- Wide thing is 2nd, and not selected: -->
+ <select>
+ <option></option>
+ <option>some wide option</option>
+ </select>
+ <br>
+ <!-- Wide thing is 2nd, and selected: -->
+ <select>
+ <option></option>
+ <option selected>some wide option</option>
+ </select>
+ <br>
+ <!-- Wide thing is 1st, and selected (implicitly): -->
+ <select>
+ <option>some wide option</option>
+ <option></option>
+ </select>
+ <br>
+ <!-- Wide thing is 1st, and not selected: -->
+ <select>
+ <option>some wide option</option>
+ <option selected></option>
+ </select>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html
index e97ebee59f4..bdd28270d67 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html
@@ -63,12 +63,15 @@ var relativeContainer = document.querySelector('#relative-div');
reset();
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
checkVerticallyCentered(dialog);
- reset();
}, "showModal() should center in the viewport");
test(function() {
+ this.add_cleanup(reset);
+
assert_equals(window.getComputedStyle(dialog).top, 'auto');
assert_equals(window.getComputedStyle(dialog).bottom, 'auto');
@@ -80,19 +83,21 @@ test(function() {
// Set back original value to 'height'.
dialog.style.height = 'auto';
- reset();
}, "The dialog is a positioned element, so the top and bottom should not have style auto.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
dialog.close();
window.scroll(0, 2 * window.scrollY);
dialog.showModal();
checkVerticallyCentered(dialog);
- reset();
}, "Dialog should be recentered if showModal() is called after close()");
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
var expectedTop = dialog.getBoundingClientRect().top;
window.scroll(0, window.scrollY * 2);
@@ -102,30 +107,33 @@ test(function() {
window.scroll(0, window.scrollY / 2);
assert_equals(dialog.getBoundingClientRect().top, expectedTop);
- reset();
}, "Dialog should not recenter on relayout.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.style.height = '20000px';
dialog.showModal();
assert_equals(dialog.getBoundingClientRect().top, 0);
// Set back original value to 'height'.
dialog.style.height = 'auto';
- reset();
}, "A tall dialog should be positioned at the top of the viewport.");
test(function() {
+ this.add_cleanup(reset);
+
document.body.style.width = '4000px';
dialog.showModal();
checkVerticallyCentered(dialog);
// Set back original value to 'width'.
document.body.style.width = 'auto';
- reset();
}, "The dialog should be centered regardless of the presence of a horizontal scrollbar.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.remove();
absoluteContainer.appendChild(dialog);
dialog.showModal();
@@ -136,21 +144,21 @@ test(function() {
relativeContainer.appendChild(dialog);
dialog.showModal();
checkVerticallyCentered(dialog);
-
- reset();
}, "Centering should work when dialog is inside positioned containers.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
var expectedTop = dialog.getBoundingClientRect().top;
relativeContainer.style.display = 'none';
relativeContainer.style.display = 'block';
assert_equals(dialog.getBoundingClientRect().top, expectedTop);
-
- reset();
}, "A centered dialog's position should survive becoming display:none temporarily.");
test(function() {
+ this.add_cleanup(reset);
+
// Remove and reinsert so that the document position isn't changed by the second remove and reinsert
dialog.remove();
relativeContainer.appendChild(dialog);
@@ -162,11 +170,11 @@ test(function() {
relativeContainer.appendChild(dialog);
assert_equals(dialog.parentNode, relativeContainer);
assert_equals(dialog.getBoundingClientRect().top, relativeContainer.getBoundingClientRect().top);
-
- reset();
}, "Dialog should lose centering when removed from the document.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
dialog.style.top = '0px';
var expectedTop = dialog.getBoundingClientRect().top;
@@ -176,21 +184,22 @@ test(function() {
// Set back original value to 'top'.
dialog.style.top = 'auto';
- reset();
}, "Dialog's specified position should survive after close() and showModal().");
test(function() {
+ this.add_cleanup(reset);
+
dialog.showModal();
dialog.removeAttribute('open');
window.scroll(0, window.scrollY * 2);
checkNotVerticallyCentered(dialog);
dialog.showModal();
checkVerticallyCentered(dialog);
-
- reset();
}, "Dialog should be recentered if showModal() is called after removing 'open'.");
test(function() {
+ this.add_cleanup(reset);
+
dialog.remove();
absoluteContainer.appendChild(dialog);
absoluteContainer.style.display = 'none';
@@ -198,26 +207,27 @@ test(function() {
absoluteContainer.style.display = 'block';
// Since dialog's containing block is the ICB, it's statically positioned after <body>.
assert_equals(dialog.getBoundingClientRect().top, document.body.getBoundingClientRect().bottom);
- reset();
}, "Dialog should not be centered if showModal() was called when an ancestor had display 'none'.");
test(function() {
+ this.add_cleanup(reset);
+
var offset = 50;
dialog.style.top = offset + 'px';
dialog.showModal();
assert_equals(dialog.getBoundingClientRect().top + window.scrollY, offset);
// Set back original value to 'top'.
dialog.style.top = 'auto';
- reset();
}, "A dialog with specified 'top' should be positioned as usual");
test(function() {
+ this.add_cleanup(reset);
+
var offset = 50;
dialog.style.bottom = offset + 'px';
dialog.showModal();
assert_equals(dialog.getBoundingClientRect().bottom + window.scrollY, window.innerHeight - offset);
// Set back original value to 'bottom'.
dialog.style.bottom = 'auto';
- reset();
}, "A dialog with specified 'bottom' should be positioned as usual");
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
index b40d5fb94cf..267c22145ee 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
@@ -70,9 +70,9 @@
});
test(function(){
+ this.add_cleanup(function() { d2.close(); });
assert_throws("INVALID_STATE_ERR", function() {
d2.showModal();
- this.add_cleanup(function() { d2.close(); });
});
}, "showModal() on a <dialog> that already has an open attribute throws an InvalidStateError exception");
@@ -88,9 +88,9 @@
test(function(){
var d = document.createElement("dialog");
+ this.add_cleanup(function() { d.close(); });
assert_throws("INVALID_STATE_ERR", function() {
d.showModal();
- this.add_cleanup(function() { d.close(); });
});
}, "showModal() on a <dialog> not in a Document throws an InvalidStateError exception");
diff --git a/tests/wpt/web-platform-tests/interfaces/mediasession.idl b/tests/wpt/web-platform-tests/interfaces/mediasession.idl
index ecfb70a0d80..8671af5acd9 100644
--- a/tests/wpt/web-platform-tests/interfaces/mediasession.idl
+++ b/tests/wpt/web-platform-tests/interfaces/mediasession.idl
@@ -36,7 +36,7 @@ interface MediaSession {
void setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler);
- void setPositionState(optional MediaPositionState? state);
+ void setPositionState(optional MediaPositionState state = {});
};
[Exposed=Window]
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index c3e53350901..4e0dc072516 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -21,9 +21,9 @@ interface NDEFRecord {
readonly attribute USVString mediaType;
readonly attribute USVString id;
- USVString? toText();
- [NewObject] ArrayBuffer? toArrayBuffer();
- [NewObject] any toJSON();
+ USVString? text();
+ [NewObject] ArrayBuffer? arrayBuffer();
+ [NewObject] any json();
sequence<NDEFRecord> toRecords();
};
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/empty-underover.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/empty-underover.html
new file mode 100644
index 00000000000..054e8ee06ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/empty-underover.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Test Script and Limit Schemata</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#script-and-limit-schemata">
+<meta name="assert" content="Script and Limit Schemata should not render anything when empty.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script>
+ var epsilon = 1;
+
+ function getBox(aId) {
+ return document.getElementById(aId).getBoundingClientRect();
+ }
+
+ setup({ explicit_done: true });
+ window.addEventListener("load", () => { document.fonts.ready.then(runTests); });
+
+ function runTests() {
+ test(function() {
+ ["over", "under", "underover", "sub", "sup", "subsup", "multiscripts"].forEach(function(name) {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_approx_equals(getBox(name).width, 0, epsilon, "width of empty " + name);
+ assert_approx_equals(getBox(name).height, 0, epsilon, "height of empty " + name);
+ });
+ }, "Size of empty script elements");
+
+ done();
+ }
+</script>
+</head>
+<body>
+ <div id="log"></div>
+ <p>
+ <math>
+ <munderover id="underover">
+ </munderover>
+ </math>
+ <math>
+ <munder id="under">
+ </munder>
+ </math>
+ <math>
+ <mover id="over">
+ </mover>
+ </math>
+ <math>
+ <msub id="sub">
+ </msub>
+ </math>
+ <math>
+ <msup id="sup">
+ </msup>
+ </math>
+ <math>
+ <msubsup id="subsup">
+ </msubsup>
+ </math>
+ <math>
+ <mmultiscripts id="multiscripts">
+ </mmultiscripts>
+ </math>
+ </p>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
index eb28c48d3a7..5e902f2523d 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
@@ -199,6 +199,19 @@ var GenericSensorTest = (() => {
this.maxFrequency_ = Math.min(10, this.maxFrequency_);
}
+ // Chromium applies some rounding and other privacy-related measures that
+ // can cause ALS not to report a reading when it has not changed beyond a
+ // certain threshold compared to the previous illuminance value. Make
+ // each reading return a different value that is significantly different
+ // from the previous one when setSensorReading() is not called by client
+ // code (e.g. run_generic_sensor_iframe_tests()).
+ if (type == device.mojom.SensorType.AMBIENT_LIGHT) {
+ this.activeSensors_.get(type).setSensorReading([
+ [window.performance.now() * 100],
+ [(window.performance.now() + 50) * 100]
+ ]);
+ }
+
const initParams = new device.mojom.SensorInitParams({
sensor: sensorPtr,
clientReceiver: mojo.makeRequest(this.activeSensors_.get(type).client_),
diff --git a/tests/wpt/web-platform-tests/svg/animations/end-attribute-change-end-time.html b/tests/wpt/web-platform-tests/svg/animations/end-attribute-change-end-time.html
new file mode 100644
index 00000000000..9f05d7d405d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/animations/end-attribute-change-end-time.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>Mutation of the 'end' attribute changes current interval end</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg>
+ <rect width="100" height="100" fill="green">
+ <set attributeName="fill" to="red"/>
+ </rect>
+</svg>
+<script>
+ async_test(t => {
+ onload = t.step_func(() => {
+ t.step_timeout(() => {
+ let set = document.querySelector('set');
+ set.setAttribute('end', '0s');
+ requestAnimationFrame(t.step_func_done(() => {
+ assert_equals(getComputedStyle(set.targetElement, null).fill, 'rgb(0, 128, 0)');
+ }));
+ });
+ });
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/animations/slider-switch.html b/tests/wpt/web-platform-tests/svg/animations/slider-switch.html
index 1e14ae55165..59aa8f29ca5 100644
--- a/tests/wpt/web-platform-tests/svg/animations/slider-switch.html
+++ b/tests/wpt/web-platform-tests/svg/animations/slider-switch.html
@@ -1,13 +1,10 @@
<!doctype html>
-
<title>Check correct event bases for onclick</title>
<meta charset="utf-8">
<link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#interact-EventAttributes">
<link rel="author" title="Edvard Thörnros" href="mailto:edvardt@opera.com">
-
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-
<svg width="200" height="100">
<rect x="0" y="0" width="100" height="100" id="a" fill="#0AA">
<set begin="a.click" attributeName="display" to="none" fill="freeze"/>
@@ -18,24 +15,33 @@
<set begin="b.click" attributeName="display" to="none" fill="freeze"/>
</rect>
</svg>
-
<script>
- let retries = 3;
+ let clicks_remaining = 2;
let a = document.querySelector("#a");
let b = document.querySelector("#b");
- let t = async_test();
- let interval = setInterval(t.step_func(function() {
- retries--;
- if (retries == 0) {
- clearInterval(interval);
- assert_equals(window.getComputedStyle(a).display, "block");
- assert_equals(window.getComputedStyle(b).display, "none");
- t.done();
- return;
- }
- a.dispatchEvent(new Event("click"));
+ function perform_clicks(t) {
t.step_timeout(function() {
- b.dispatchEvent(new Event("click"));
+ a.dispatchEvent(new Event("click"));
+ t.step_timeout(function() {
+ b.dispatchEvent(new Event("click"));
+ }, 20);
}, 20);
- }), 20 * 2);
+ }
+ async_test(t => {
+ let observer = document.querySelector("#b > set + set");
+ observer.addEventListener('beginEvent', t.step_func(function() {
+ if (clicks_remaining == 0) {
+ assert_equals(window.getComputedStyle(a).display, "block");
+ assert_equals(window.getComputedStyle(b).display, "none");
+ t.done();
+ return;
+ }
+ perform_clicks(t);
+ clicks_remaining--;
+ }));
+ window.onload = t.step_func(() => {
+ perform_clicks(t);
+ clicks_remaining--;
+ });
+ });
</script>
diff --git a/tests/wpt/web-platform-tests/tools/certs/README.md b/tests/wpt/web-platform-tests/tools/certs/README.md
index 62c9d24685a..fd75c22ddff 100644
--- a/tests/wpt/web-platform-tests/tools/certs/README.md
+++ b/tests/wpt/web-platform-tests/tools/certs/README.md
@@ -74,3 +74,8 @@ the path to the OpenSSL config file (typically this will be
},
}
```
+
+### Regenerating the pregenerated certificates
+
+From the root, run `./wpt serve --config tools/certs/config.json` and terminate
+it after it has started up.
diff --git a/tests/wpt/web-platform-tests/tools/certs/cacert.key b/tests/wpt/web-platform-tests/tools/certs/cacert.key
index 907b8650808..1a121dfac95 100644
--- a/tests/wpt/web-platform-tests/tools/certs/cacert.key
+++ b/tests/wpt/web-platform-tests/tools/certs/cacert.key
@@ -1,30 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQILCSlhTzkRTICAggA
-MB0GCWCGSAFlAwQBKgQQgcOfWGRpzftycTbFVXO4mgSCBNDv5/+mh+AabEQwzjk/
-RIVjff2flwV0TooLISvRZYPEi60EsqsDhBpJ5iC6N8GFYXgoz06BaMQsuMGA8cRe
-qcL6uGNdwexoReO7SGD2p3jBQU+r6SpDdVicMDUzYWt8P+kYemFVoCoFrhCiCx2k
-p9ylcERn4JlUP3fW/FZslN77Nyx/M+hPowGmSBsCyFz9FiENeCRLMlyQpyG8Zp9Q
-hNbWmXp5HL/Yato/wySxtDFwC/93sus1TbgSpmmp3csiDE1TIZ2FtlDCjqd0puY8
-UVhhq+0ce01vZgOT4SWXaiMfXOt9tZ6vqsgTakQzQDXKPbPlM3ppFtTMUyNUPmol
-Fj36DxrVEArb7CT/tgbNfd/cdVonDtJJF7vxrAWWKzbhXpLfKAx4j54gdDz/ng0D
-LDvJwlCtMqS5qz30kOJLvSQu+ifG9ib+GBkiihG5VeYKjfvjxWl/3bHamIrwV8Lp
-ijHF2rsSSdzlKksSga+84jmDgAlqCsFdEAzGL8Dg4zk55Wlkr6+EshOQJN8vQz+f
-7O7fyLCS6hjjskmYTTXlHvtLiro870jd+nRXmwNlZ9DDayJCfUMayoihHqeIX4u6
-ZQhjk+54Ln9vEMUlhkiGL/1rE6APVCBnlPzJfX/K2BXHWdu/NRT4rHG6zGQLViJr
-yaaLV6F2bxCACjyjQmYzdGb238ApG5ubY50Eu4UfuB8N1zGDxqU7KQpRXLECmfKw
-qa7lHHpuakC5gFddKHI62rQc9Tw5jLRohFTFA2e54d+rN5axiSBoeYY0Ky+Y6Id4
-xGLkJoNeleyrXKj09ercxcUhg2EL/B4wHiyBLKikZiA4gUaCnCZ7WRPsGpJ5wo/K
-TXiAj1W0QQELGo+k8xmXP9y6Qb4ZcJsnWJ35Spn5CeuI/y/Bms/o2klqbhn9h+gz
-4w4Zo4PoKEfjnFublCoCa7F9jvxSM7GTeaRPf8E6/wYBV8Xdu/rAd3ypCXBRULR1
-xqXvhp6u/k8XmAyd62mAwHRG1RDHZ2Kg1pspV8YGnYYE0pXRSsVKT1+Yu6pQ65n8
-SG0YmZRN2/In0cyTkNwWwl9Bpdd7mghwiZ8uTed00Q7UvxBZxRe8I1VOwBrvA8Jo
-HZ25f0fuzNYkGmLq80jVE6k4dPowOQVp7dKcH8EvGJunUJKeAZrh0B9At52XzqJX
-9uibQrDyJvFKTepH7Gm/NuUQK1XG0tkJbysnvUk3Ezj6nihxL903IfyLhNI/R22P
-45nQeqRzrxLq4pfjW/KY+7IkX8tdabfPDHmtjLi3DhpYlDQ8JTDMn6dElN6wNIpe
-w8wh6c9srD5zbaguaMRy+5R46zyLkDIY/SOMDgXqg6rTsSSnEXc5RD1F2amBXRJF
-g8evdUJ7klx6pDh91Sspn9B/RJs1se5H37Wq9AFvrSHvktNVS0kqim+dimNKRFQr
-kJ8eqxoqJ268wTlnppn14LSig9iwE8a/+yEhfXfoZ12mYCVjT9Y8+ZtrzI+TqIDh
-ThfExeBYbPe+KTcsmuaYHw4Dbf4j8EMh7TJZlVx0o3Aqiw5MOAti5nIYt4kqJx/T
-+pNPJPhMEq0nGyE/iInxrYgH6JdNJqctexhxj5ZdfmrwpFPpDq5ZZ49HT1XFP5jE
-WgiOtgAhQ01A0xiCr0EZbFczHg==
+MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIminHTzkXhrsCAggA
+MB0GCWCGSAFlAwQBKgQQXVwJcqWze6A3VYuAS0BPgwSCBNCRtvroB6qroQlF58HE
+5SJHF/jQRJRxf051lrq+jfUxM7kZucNN+myV2ziLoga6OQM579D8vy8tqkrLpnsT
+cXkgHuwtBJF47w1YAPGGARe3Ksv/2C9sUVcPvmnVrzSMX86EserffqM3zfwZ2H3S
+jxTDSyIvJUU+4XfxrWegTiQQPNqDyLfO5dBfatT2ztXCmu3BFipuhGFpwwCJirKr
+1xb6XPEuT0PCzTNpeSURpXFKHMDMkcjOkNAUygIEw+Lg7etVfLcsgBuzEA3RWwf3
+OMY1mTBJlvx6zZxdX7a0QmxerUDkDS9YYAEGSFa+Fx6cGW5Pyeef9xtlHxZHi+pm
+TxCwcvJyXqeD4gWm3s1gwOji5WmXvo2EircxfSKk8TUwapxfCYQbOjQIPaHnEGoa
+CQhSEgDX5ufwsXJ9/pSP6kjW+y+f0gnhHVuKJKsOBmjg6iqwnqEhw+uNFWKKl/Mo
+TFT7CrayJTvo+9UdQTJV9MBAsMUQS7d+HH9kNOAn/hfmEzzGUKVTZ0zId0fKH13p
+TnoYgMYbm2Urn0NXBFO8RvzY3KpKyRhMcOLKxkPVUjKUA5BuAv6rcvMflI6Hn5wU
+qPM+uECSgdOnNeImi1Ff+cW8dTGGRb+iha+EnABoX3wR5OvzgCYHeENJb32FUoVs
+ID2T5MZtQNArkis/xWZ7JyPbmsQo2wyiFLasX8Wgh+8MgFxolpvjlX3/QdTTJqEc
+rofVGOPOmfoHo3eYNJOlLbaJTDIe8OrK49PIeu1gm8zqB2WYqmF/3AYy4IAIwUYu
+rbPwUC9HyceRPSYePM9Wf1xM2proK3nmp6apdHCRNjbd4689ELmB90b2aw6NFiam
+3taKPmFLb/vt2YxgqOtagPrTlc1QLHBKrsnpg/BhcBjupqRKGFmXCJziPIaDKvAs
+jtg4KDo8jNIxmwQAwEV4+aH0hhMumxa8yaXoC/3G6JxD2sdoraOp+vrTzjUMkIoc
+xLqWl8GHVLF09fZJ4StJfIWIOmmpicSxW1vDICaZuU+iPwlNOzF7sePRkixbarHr
+iqTlLG//+Huq/n9IRxhzmSOur63WMXFRy0sKW5W+uQ9xsnV8SdjwRmAGLtnZHq4Y
+NOCQ/+yORl4yxkPvV01HykAl4CRtPBGR+4ZC5NKhpyhJbu6WcqwiXyAehU/cPgL+
+h8NwEoyP+OHrvEYdy4ocBnJq/436WwzfWis8nIG4bSlD3DSEgJF/QUmq4i/EUq/A
+D6SfzbFpPGtTj3KZ6D8DPrwWG68OCFsqRW9YEvUIK8JT265BN3MzI5i0/+k4CdAg
+aSaiC97qg7qJaVM9b9EHscUXR/feFxvO5QkkkY5CTU3Bxb0s1I4Rw2MYoAdMGtbA
+6mdzmRVYoRv9NMdzL6zOToPU6oOg6mbjHgZQgNd7w8GtTFW+sfslLOXXC8erzbHl
+ByQJGcFGtKTBUD+7VHZhpwM7bPObtzyA2r0UbS1Qx0IznvubdFVcXyE7dIjW7cAg
+IbBzKeiERwpu3rMq2bYVW3DA33VlrTfpjXujhHv1iX15i6qsWd7OtZw6x7TccH1Z
+jdmh9XB9xDydnss3u9DwGREMYC9TdPZY/nui6lgCjjOhaTaunMuigFBMWUBkDlIb
+uju+Atv+PSBT9DmTyTQGhPZRIw==
-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/wpt/web-platform-tests/tools/certs/cacert.pem b/tests/wpt/web-platform-tests/tools/certs/cacert.pem
index 49b343ac647..e1b5add54e7 100644
--- a/tests/wpt/web-platform-tests/tools/certs/cacert.pem
+++ b/tests/wpt/web-platform-tests/tools/certs/cacert.pem
@@ -1,116 +1,125 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 372738 (0x5b002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=web-platform-tests
- Validity
- Not Before: Dec 20 12:20:35 2018 GMT
- Not After : Dec 17 12:20:35 2028 GMT
- Subject: CN=web-platform-tests
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a5:c0:b9:6d:f2:13:01:17:f3:ec:bf:91:db:4f:
- cd:4a:73:c7:d1:6a:b8:0d:c0:1e:7a:06:df:f2:f6:
- 08:c1:36:a2:11:da:fb:0a:7a:2a:4f:a9:c0:6f:19:
- 0b:e2:6d:26:3a:f9:3e:71:29:45:a4:4f:27:1d:6d:
- ef:40:98:dc:01:7f:2c:4f:e2:35:4d:2b:8e:97:c5:
- 41:9e:cd:f4:0e:60:fc:65:a4:39:5c:88:36:05:60:
- e8:7f:b4:b4:32:9c:70:47:08:15:51:c8:cb:d8:21:
- ba:54:48:73:72:e3:8a:95:61:e6:00:ef:e3:5f:f6:
- 18:b6:4e:24:b5:41:7f:ce:b2:d7:28:33:ee:06:21:
- 4f:cb:d6:4f:55:3a:bb:4f:74:e9:b6:e8:3b:cc:a7:
- bb:f3:86:7a:c8:71:e1:f4:f2:2b:fe:1f:71:5e:1f:
- 49:12:f9:c3:8a:7e:dc:5f:75:38:4d:7b:4a:a2:e5:
- 6e:bf:ce:d9:9c:99:af:a7:6e:38:97:3c:b5:3f:13:
- 0c:63:7e:78:ee:e4:ad:d8:18:c7:ec:da:38:44:49:
- af:fb:44:8d:79:29:db:cf:4c:0a:6a:fd:5a:54:15:
- e0:cd:ac:4d:17:5d:ef:58:c8:3d:84:fd:20:79:55:
- 9f:14:c7:c8:5f:c8:98:5c:3c:ff:53:89:c5:1f:e7:
- 83:a3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:TRUE
- X509v3 Subject Key Identifier:
- 7A:EA:6A:75:AA:23:78:B5:5E:06:61:4A:56:CF:56:A9:6D:B0:54:02
- X509v3 Authority Key Identifier:
- keyid:7A:EA:6A:75:AA:23:78:B5:5E:06:61:4A:56:CF:56:A9:6D:B0:54:02
- DirName:/CN=web-platform-tests
- serial:05:B0:02
-
- X509v3 Key Usage:
- Certificate Sign
- X509v3 Name Constraints:
- Permitted:
- DNS:web-platform.test
- DNS:not-web-platform.test
- DNS:www.web-platform.test
- DNS:www1.web-platform.test
- DNS:www2.web-platform.test
- DNS:www.not-web-platform.test
- DNS:www2.not-web-platform.test
- DNS:www1.not-web-platform.test
- DNS:xn--lve-6lad.web-platform.test
- DNS:xn--lve-6lad.not-web-platform.test
- DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test
- DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication
- X509v3 Subject Alternative Name:
- DNS:web-platform.test, DNS:not-web-platform.test, DNS:www.web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.not-web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
- Signature Algorithm: sha256WithRSAEncryption
- 57:8e:97:2b:a5:3f:82:be:c9:80:b3:ef:0f:c8:b9:4c:f2:a6:
- 91:40:ab:1f:70:0e:31:fb:74:ae:17:23:ea:b1:c8:19:f7:29:
- 13:da:59:aa:61:7f:24:17:24:84:22:81:4c:23:b1:e6:a8:d8:
- 65:95:b0:a9:2e:2d:b8:8f:86:67:69:b8:d2:7a:87:d3:75:67:
- 6a:24:2a:a9:af:31:a6:33:2a:50:46:c4:2e:37:f0:e0:e0:a1:
- e0:fe:bb:2f:6a:8d:9c:a6:45:cd:3f:8f:cd:fd:95:b1:70:24:
- b8:2b:39:56:3f:81:0d:42:59:0a:8e:b2:c4:a7:1b:8a:73:98:
- 51:4d:f5:14:ab:8b:95:dc:5e:6a:bc:30:57:79:16:3e:6c:73:
- 09:f9:be:1b:4b:bf:cb:f4:ae:3a:ad:0e:57:20:e7:2f:f5:1f:
- b3:7b:cf:1a:77:73:94:c6:f5:08:d5:24:29:12:9c:f1:0a:75:
- 99:43:7b:91:c7:69:6f:ff:86:10:54:94:22:73:f9:00:c2:91:
- 3d:6d:52:e5:5a:c6:43:e2:37:84:4c:59:02:b7:59:6c:b0:c5:
- 18:72:03:61:94:00:11:e6:a3:cb:18:99:3e:8e:a2:00:82:4a:
- 65:c3:08:3b:c9:10:19:c3:09:44:3c:a9:b0:2a:c3:84:2c:46:
- 43:ba:dc:bf
-----BEGIN CERTIFICATE-----
-MIIGVzCCBT+gAwIBAgIDBbACMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
-Yi1wbGF0Zm9ybS10ZXN0czAeFw0xODEyMjAxMjIwMzVaFw0yODEyMTcxMjIwMzVa
+MIIW5zCCFc+gAwIBAgIDBbFHMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xOTEwMTQxMzQ5MjlaFw0yOTEwMTExMzQ5Mjla
MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAKXAuW3yEwEX8+y/kdtPzUpzx9FquA3AHnoG3/L2CME2
-ohHa+wp6Kk+pwG8ZC+JtJjr5PnEpRaRPJx1t70CY3AF/LE/iNU0rjpfFQZ7N9A5g
-/GWkOVyINgVg6H+0tDKccEcIFVHIy9ghulRIc3LjipVh5gDv41/2GLZOJLVBf86y
-1ygz7gYhT8vWT1U6u0906bboO8ynu/OGeshx4fTyK/4fcV4fSRL5w4p+3F91OE17
-SqLlbr/O2ZyZr6duOJc8tT8TDGN+eO7krdgYx+zaOERJr/tEjXkp289MCmr9WlQV
-4M2sTRdd71jIPYT9IHlVnxTHyF/ImFw8/1OJxR/ng6MCAwEAAaOCA54wggOaMAwG
-A1UdEwQFMAMBAf8wHQYDVR0OBBYEFHrqanWqI3i1XgZhSlbPVqltsFQCMEcGA1Ud
-IwRAMD6AFHrqanWqI3i1XgZhSlbPVqltsFQCoSGkHzAdMRswGQYDVQQDDBJ3ZWIt
-cGxhdGZvcm0tdGVzdHOCAwWwAjALBgNVHQ8EBAMCAgQwggGLBgNVHR4EggGCMIIB
-fqCCAXowE4IRd2ViLXBsYXRmb3JtLnRlc3QwF4IVbm90LXdlYi1wbGF0Zm9ybS50
+BQADggEPADCCAQoCggEBANQI10vytPN5G8m6cWePZLHYgBIJsWfjx2NWk/WFELoc
+DnUv2zRp5E27AhxEJJ6c6JGu+3WjT7l+fGykoK1RwOn4Oi/KNJnDE2XeSjQH/awP
+Mi2j0hAivTvCXnomTXn3cqcTkrapcDXV1+WUSaebJw+8wHLoJUWIbeU7KLVgXscf
+hLGBQB6p/uQewzmmb1bUbizF3GnbFxSbFgkK3Ttf9NpHqqRtgUAaZtP9eda/kRP7
+j0iIQncCyhwUMcEg/9YsKeLOSUGzLjUSCJqOIvULnQwRBYjIEwui00qdChqV8chz
+Kbk32dj6vLFs3t7P+xoj/JjZXZiWQFTzFSVjpS5A7MECAwEAAaOCFC4wghQqMAwG
+A1UdEwQFMAMBAf8wHQYDVR0OBBYEFEFJ/4xmUF+HoQaou6uK3XMNDjcaMEcGA1Ud
+IwRAMD6AFEFJ/4xmUF+HoQaou6uK3XMNDjcaoSGkHzAdMRswGQYDVQQDDBJ3ZWIt
+cGxhdGZvcm0tdGVzdHOCAwWxRzALBgNVHQ8EBAMCAgQwggoFBgNVHR4Eggn8MIIJ
++KCCCfQwE4IRd2ViLXBsYXRmb3JtLnRlc3QwF4IVbm90LXdlYi1wbGF0Zm9ybS50
ZXN0MBeCFXd3dy53ZWItcGxhdGZvcm0udGVzdDAYghZ3d3cxLndlYi1wbGF0Zm9y
bS50ZXN0MBiCFnd3dzIud2ViLXBsYXRmb3JtLnRlc3QwG4IZd3d3Lm5vdC13ZWIt
-cGxhdGZvcm0udGVzdDAcghp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdDAcghp3
-d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdDAggh54bi0tbHZlLTZsYWQud2ViLXBs
-YXRmb3JtLnRlc3QwJIIieG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVz
-dDArgil4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdDAv
-gi14bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qw
-EwYDVR0lBAwwCgYIKwYBBQUHAwEwggFvBgNVHREEggFmMIIBYoIRd2ViLXBsYXRm
-b3JtLnRlc3SCFW5vdC13ZWItcGxhdGZvcm0udGVzdIIVd3d3LndlYi1wbGF0Zm9y
-bS50ZXN0ghZ3d3cxLndlYi1wbGF0Zm9ybS50ZXN0ghZ3d3cyLndlYi1wbGF0Zm9y
-bS50ZXN0ghl3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghp3d3cyLm5vdC13ZWIt
-cGxhdGZvcm0udGVzdIIad3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnhuLS1s
-dmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIIieG4tLWx2ZS02bGFkLm5vdC13ZWIt
-cGxhdGZvcm0udGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRm
-b3JtLnRlc3SCLXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
-cm0udGVzdDANBgkqhkiG9w0BAQsFAAOCAQEAV46XK6U/gr7JgLPvD8i5TPKmkUCr
-H3AOMft0rhcj6rHIGfcpE9pZqmF/JBckhCKBTCOx5qjYZZWwqS4tuI+GZ2m40nqH
-03VnaiQqqa8xpjMqUEbELjfw4OCh4P67L2qNnKZFzT+Pzf2VsXAkuCs5Vj+BDUJZ
-Co6yxKcbinOYUU31FKuLldxearwwV3kWPmxzCfm+G0u/y/SuOq0OVyDnL/Ufs3vP
-GndzlMb1CNUkKRKc8Qp1mUN7kcdpb/+GEFSUInP5AMKRPW1S5VrGQ+I3hExZArdZ
-bLDFGHIDYZQAEeajyxiZPo6iAIJKZcMIO8kQGcMJRDypsCrDhCxGQ7rcvw==
+cGxhdGZvcm0udGVzdDAbghl3d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0MByCGnd3
+dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dzEubm90LXdlYi1wbGF0Zm9y
+bS50ZXN0MByCGnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dzIud3d3
+LndlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dzEud3d3LndlYi1wbGF0Zm9ybS50ZXN0
+MByCGnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0MB2CG3d3dzEud3d3MS53ZWIt
+cGxhdGZvcm0udGVzdDAdght3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QwHYIb
+d3d3Mi53d3cyLndlYi1wbGF0Zm9ybS50ZXN0MB2CG3d3dzIud3d3MS53ZWItcGxh
+dGZvcm0udGVzdDAfgh13d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdDAggh53
+d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwIIIed3d3MS53d3cubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0MCCCHnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
+dDAggh53d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwIIIed3d3Mi53d3cu
+bm90LXdlYi1wbGF0Zm9ybS50ZXN0MCGCH3d3dzIud3d3Mi5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3QwIYIfd3d3Mi53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdDAhgh93
+d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0MCGCH3d3dzEud3d3Mi5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3QwJIIieG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZv
+cm0udGVzdDAkgiJ3d3cueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0MCSC
+InhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwJYIjeG4tLWx2ZS02
+bGFkLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QwJYIjd3d3Mi54bi0tbHZlLTZsYWQu
+d2ViLXBsYXRmb3JtLnRlc3QwJYIjd3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRm
+b3JtLnRlc3QwJYIjeG4tLWx2ZS02bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3Qw
+KIImeG4tLWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwKIImd3d3
+LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwKYIneG4tLWx2ZS02
+bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0MCmCJ3d3dzIueG4tLWx2ZS02
+bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdDApgid3d3cxLnhuLS1sdmUtNmxhZC5u
+b3Qtd2ViLXBsYXRmb3JtLnRlc3QwKYIneG4tLWx2ZS02bGFkLnd3dzIubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0MCuCKXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1w
+bGF0Zm9ybS50ZXN0MC2CK3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBs
+YXRmb3JtLnRlc3QwL4IteG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0MC+CLXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWIt
+cGxhdGZvcm0udGVzdDAvgi13d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3QwMIIud3d3MS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
+ZWItcGxhdGZvcm0udGVzdDAwgi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cx
+LndlYi1wbGF0Zm9ybS50ZXN0MDCCLnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYy
+OGEud2ViLXBsYXRmb3JtLnRlc3QwMIIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
+d3d3Mi53ZWItcGxhdGZvcm0udGVzdDAxgi94bi0tbHZlLTZsYWQueG4tLWx2ZS02
+bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdDAzgjF4bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0MDOCMXd3dy54bi0tbjhqNmRz
+NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwNIIyd3d3MS54bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwNIIyeG4t
+LW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qw
+NIIyeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3QwNIIyd3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3QwOII2eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02
+bGFkLndlYi1wbGF0Zm9ybS50ZXN0MDiCNnhuLS1sdmUtNmxhZC54bi0tbjhqNmRz
+NTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdDA8gjp4bi0tbHZlLTZsYWQu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0MDyC
+OnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3QwQ4JBeG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QwR4JFeG4tLW44ajZkczUz
+bHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
+Zm9ybS50ZXN0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiC
+EXdlYi1wbGF0Zm9ybS50ZXN0ghVub3Qtd2ViLXBsYXRmb3JtLnRlc3SCFXd3dy53
+ZWItcGxhdGZvcm0udGVzdIIWd3d3MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53
+ZWItcGxhdGZvcm0udGVzdIIZd3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZd3d3
+Lnd3dy53ZWItcGxhdGZvcm0udGVzdIIad3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3SCGnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghp3d3cud3d3Mi53ZWItcGxh
+dGZvcm0udGVzdIIad3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEud3d3
+LndlYi1wbGF0Zm9ybS50ZXN0ghp3d3cud3d3MS53ZWItcGxhdGZvcm0udGVzdIIb
+d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0ght3d3cxLnd3dzIud2ViLXBsYXRm
+b3JtLnRlc3SCG3d3dzIud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cx
+LndlYi1wbGF0Zm9ybS50ZXN0gh13d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
+dIIed3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh53d3cxLnd3dy5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCHnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
+dIIed3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh53d3cyLnd3dy5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3SCH3d3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3MS5u
+b3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3SCInhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3SCInd3dy54
+bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0giN3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIIjd3d3
+MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53
+d3cyLndlYi1wbGF0Zm9ybS50ZXN0giZ4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWIt
+cGxhdGZvcm0udGVzdIImd3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3SCJ3huLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIn
+d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhu
+LS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53
+d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYy
+OGEud2ViLXBsYXRmb3JtLnRlc3SCK3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQu
+d2ViLXBsYXRmb3JtLnRlc3SCLXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13
+ZWItcGxhdGZvcm0udGVzdIIteG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lndl
+Yi1wbGF0Zm9ybS50ZXN0gi13d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2Vi
+LXBsYXRmb3JtLnRlc3SCL3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0gjF4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0gjF3d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
+bm90LXdlYi1wbGF0Zm9ybS50ZXN0gjJ3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2
+MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYy
+OGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMnhuLS1uOGo2ZHM1M2x3d2ty
+cWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjJ3d3cyLnhuLS1uOGo2
+ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdII2eG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gjZ4
+bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3Jt
+LnRlc3SCOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1s
+dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2ty
+cWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
+gkV4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4
+YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJKoZIhvcNAQELBQADggEBAHXiq1vA
+xjc8ij34i4b+8inVBVwTWyHtczlZnIQTCxqJCDk83pz8QFHGyHYz+db36U6YwHak
+I3HYhipPMB1VnlHkMA6xFuZL/aFWywLNU9nTmaAV0fP/R5k9vt8AEm0ZmEWkNYtL
+opcy0rqjAaXTIWes91OZfniTFQDHMiurK8Vq+fq/Ozw+YQbRbU1KlHCNayisvQa4
+TLO+DjMR0hzDT3DHEwPJLPYaa6RnIwo8zvCqk0ZRPAxeuldAe/u1PzteXRzEHTAE
+DMVLMwM752bLFufv1GRCZNHELZKyhUoFrP30AqE7r3pnwQRW8Kdid38IMo7u9Dem
+u5/tHefPKD7bm/Y=
-----END CERTIFICATE-----
diff --git a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key
index 6d60e8912a6..b62af208c34 100644
--- a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key
+++ b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpxFZDnnjgGrPj
-2OirthoMrhDXhgQ0MupElcIG3ZtE9PNAqT20Ysr7cYgg1vQdylSo1aK3ZcBbtfuQ
-8Yfa7+o6TiTcKiEmTWB34rJPx1t37rJz7nWC0JjIOArtpSIAI8yIXkAtw5TnHcL5
-AAC7alliVMyF15UVxdeTUgmvw5IUGzfRX9HUVhCFvxtsS+GTOoDLHFqYGH4Qc6sg
-dOEtzUPuRS51zKTwaG4QopCKfkvj3MLZ19/k0aJPibvLNACpkMlPFYZZekvt+WsB
-AUjtixXM8f9Yon2XV9F7MXvDsaZUgebuYt7qxaG0xGNez8riLIhQB8wGSIJ18Ziy
-VN62q9/bAgMBAAECggEAO9k7kBsOAfNn96tAW0iXZmD3DwPv93b7n7Ir9L+rPWQd
-XW5MkotBg+NCWlFtPhNWRS8Lbhww9CPzy+VaP5TUvjlORU+U4CvnFlyVAAsH8//y
-aWxngPaI5gzbzWup0OLN+EVB2uBYXiHf2mhl2axkVoYOlCCsLkDQ/t6tC4mmte9P
-JB8VuMWKDc+Q0bMyGQ9V/qgQuw38mYyuBrbS3pwG9/1S7qADZ4/HK85CtEY6f0wQ
-dyK7Rxjpo4eq/MWPTlrLYRZcPKkllFLLbU+346OPD06spMOxleYkMVLMhW9CZVSM
-cRqxa7MLel7XumUK+7oC5bXuBICrAu69XtW8E6fsAQKBgQDfp+e+gb/ISu5CPgFu
-/y2i191lr6uIIYTB8URx92WWqabim7U8YiSzaexY9qTNvMjxnn/qLnKvEtxLPjSx
-3J+3ewoE62G7QjNSzwTRNTrhDDzh9MhzIr3YtLvPwpobd++TpbtVHxYOEzT9dI/w
-jSIztVzLK+Md2ID7sqkwPxBmWQKBgQDCUWC99hi7mvmjoGsGpy5iZ5EL66GHlA9y
-ivgg+DCoFQ7twiASqmrsVwztFvEV2P/JZVMleHOvMumOSRdI6CG3GpXRWi4rSrS5
-K02bUS8GGE/Aobh2q6bNQfM2ujl+k/wlIIJHxlFb0JqLOEpuLft0Kf52odtLC8fV
-lGDsabwZUwKBgHYoH19e7rHjHDJ0zY8VUsfIIRf6kbVud9N6If3PhKTu5dKsDjhj
-ZR4/5HQvgWuLw+EaKlvOxBnH7gf2SiJ4+wwU/XsR22TxmWmzIslfxMZmD7gT+N4S
-yZc2DE67cWz3lOM82FYlASLYdNM+BFlCRoJo2yge/HKlEadngMiTWJepAoGAB9Ja
-wIq9aB/O2KVGaZglJ9TfY8lyURDGpmetoTYcT0e5uBxOSjIN58GBRbHctnJrqWGo
-vSNiFLVJ7W5Hv6mIYeRyD2E/5oI1UBbMIupbqDUmUKyxziUOq8hxz8wjMFMonR33
-4Ie9EqMM9XmolVLIgl6GXaQaPaUVwCUe2aVP6v0CgYEAtxJq1dY+w+79WXu6/pDj
-fX7Np07DRgrkmWL4db+ytQpONvbxXZwduSfb4dv3lfCiPzib+WXdxpGDOR94d/qL
-zhrQq25s44TtvdeUzdn5+lZYn+15ZtNgUTYDal82dxwIR56fCRdLWC26CwaBevXX
-lK3MgwivpX6mQ3nr7s/4x2A=
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCrZXVXmOPlqo/+
+2xj15PgcZGHGo/bofiQQ3gl6JL1VX1GptYINhTq2sUhfN8tCb+cHyzapO9oUmwqw
+p5Up7tJ4Ip7uE1/wwSxVcvCawG5/PN5iD7H2wsmEppHXOc3Ll085/gzes+1+Nn+q
+ARmp1bF/vjplD6VdH2rBW3sJ3DAoBaoXlAMfeRAFDpaqa+9lxMrM5WkUHndQ+uEM
+6kZyevhyp02XDP0vLwNCtPLGB0emAAfC7xpwRGVGStEsUhf/mc9yNNaKgqBKI0no
+oVnuU3RGdKHP18vcjtBSV0lYgjfg9a07OBu1hgQffhofi2BydfaCpBAMzFhlu1uy
+s6ahVkJpAgMBAAECggEAfmvzxY0MbFcGp2FMY/Nj3u1cAXznnk2MpLRiISoATXxl
+a9xp9TcUO7VAQJuS3YpUyrbltqZjEVfa5rp1l9yEegBvYgQAfEDARrblKgBOgKOR
+FJunFPBQW/vRDwOf/E+7LHdrXskwoCvqtqbhGxh4OFVEFU8ZFjsaL00e0AMNsjZl
+0OsEONlIH4nCa7E6DTasHxc1VkHQr3uvBl5/4HfOc05tr+ZKlMYXzAPWkL0sC216
+Dqy4AxJ0M0ax8BYEZuo0gqQmMAonJTkEnpyoD4z89S877vFp8w1VPbGYkV48yjV/
+I7fQ6Yjt3yg+as+s4arGEsUB0l+XApBYYY/J+qcYUQKBgQDed7DOMJUc3kPTFEcN
+p/EbSh9TXxS/74cIyGid9IEiREJYxYv8kz0KplGuJolIQ3/Ik9Rac6B3Tu4WkW0g
+TPbNunYEsydZBAnaQ4eAVdOfvRQ6V3eBZ2vErsHJRFaj5cOcesUXxBZI6m2tQESx
+dBWFDNG9kztr0HmaL6Puz4zZIwKBgQDFOxfR7FcpGdw61ziSsZmtvkf6epkG3+ou
+uhY50J0UrTbK7TuimkoRw/XHeBe4db+ejOOuLD9QE/yXvmtEWuyUTTYOVvZ+HuNj
+Rp3kdi1GuWXn6gRvdlkf9XwW7jHmgkpbA5A+uDXs3EYYa18LxPNfMSvhyHdkFnUG
+aTzyYNpdAwKBgGv/QNan4Qt1nwluU5v+hl6QGir4AnO2zR/nYloj4ziGWIsNw4pm
+1ABCg25+iLCLDBKMKU+LyD+DErPj/0zp7/opZbecXSKqgjnyBGq5v5VRTeuQoJQy
+Z6/AgpS5VzITjWV+eAW0jHjzTTEI/RAEYZoIgh18xyDswMuoCvYYzbBvAoGBAMM2
+I/Nw+ywBHotWrfXztunSpidy5Ld7NKyfHpSGuJLYhpz/hcEA+ULwM/oEEWZPlSN2
+y3t+7AN0ZNREcqMrY3G9oj07ManPJL0EDg8sMNAJfKW4aD9yYfBR50pC5D0ExFel
+BUYuyaDwvKg6zc42V7PmVUqaQiFcYOPBkcNMvZTFAoGBALBtdt0iIvtBopp+IQaV
+zZMA5ZQIQ5n5v071LKa1s7ar3+hIoDRsZbM7XkUIA8zQlrwFRhbU5YFNcbpooQSm
+7j4+fIudcpxj9tAMGAb5yg89k1DjTy7FUWL9elGIgvJMqgF6IQ53+vR8xwGDyQLB
+sP5mizF1wi47DYPJQcDRCzU+
-----END PRIVATE KEY-----
diff --git a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem
index c9f7f57dc66..5959316bb5b 100644
--- a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem
+++ b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem
@@ -1,90 +1,133 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number: 372739 (0x5b003)
+ Serial Number: 373064 (0x5b148)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=web-platform-tests
Validity
- Not Before: Dec 20 12:20:36 2018 GMT
- Not After : Dec 17 12:20:36 2028 GMT
+ Not Before: Oct 14 13:49:29 2019 GMT
+ Not After : Oct 11 13:49:29 2029 GMT
Subject: CN=web-platform.test
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
- 00:a9:c4:56:43:9e:78:e0:1a:b3:e3:d8:e8:ab:b6:
- 1a:0c:ae:10:d7:86:04:34:32:ea:44:95:c2:06:dd:
- 9b:44:f4:f3:40:a9:3d:b4:62:ca:fb:71:88:20:d6:
- f4:1d:ca:54:a8:d5:a2:b7:65:c0:5b:b5:fb:90:f1:
- 87:da:ef:ea:3a:4e:24:dc:2a:21:26:4d:60:77:e2:
- b2:4f:c7:5b:77:ee:b2:73:ee:75:82:d0:98:c8:38:
- 0a:ed:a5:22:00:23:cc:88:5e:40:2d:c3:94:e7:1d:
- c2:f9:00:00:bb:6a:59:62:54:cc:85:d7:95:15:c5:
- d7:93:52:09:af:c3:92:14:1b:37:d1:5f:d1:d4:56:
- 10:85:bf:1b:6c:4b:e1:93:3a:80:cb:1c:5a:98:18:
- 7e:10:73:ab:20:74:e1:2d:cd:43:ee:45:2e:75:cc:
- a4:f0:68:6e:10:a2:90:8a:7e:4b:e3:dc:c2:d9:d7:
- df:e4:d1:a2:4f:89:bb:cb:34:00:a9:90:c9:4f:15:
- 86:59:7a:4b:ed:f9:6b:01:01:48:ed:8b:15:cc:f1:
- ff:58:a2:7d:97:57:d1:7b:31:7b:c3:b1:a6:54:81:
- e6:ee:62:de:ea:c5:a1:b4:c4:63:5e:cf:ca:e2:2c:
- 88:50:07:cc:06:48:82:75:f1:98:b2:54:de:b6:ab:
- df:db
+ 00:ab:65:75:57:98:e3:e5:aa:8f:fe:db:18:f5:e4:
+ f8:1c:64:61:c6:a3:f6:e8:7e:24:10:de:09:7a:24:
+ bd:55:5f:51:a9:b5:82:0d:85:3a:b6:b1:48:5f:37:
+ cb:42:6f:e7:07:cb:36:a9:3b:da:14:9b:0a:b0:a7:
+ 95:29:ee:d2:78:22:9e:ee:13:5f:f0:c1:2c:55:72:
+ f0:9a:c0:6e:7f:3c:de:62:0f:b1:f6:c2:c9:84:a6:
+ 91:d7:39:cd:cb:97:4f:39:fe:0c:de:b3:ed:7e:36:
+ 7f:aa:01:19:a9:d5:b1:7f:be:3a:65:0f:a5:5d:1f:
+ 6a:c1:5b:7b:09:dc:30:28:05:aa:17:94:03:1f:79:
+ 10:05:0e:96:aa:6b:ef:65:c4:ca:cc:e5:69:14:1e:
+ 77:50:fa:e1:0c:ea:46:72:7a:f8:72:a7:4d:97:0c:
+ fd:2f:2f:03:42:b4:f2:c6:07:47:a6:00:07:c2:ef:
+ 1a:70:44:65:46:4a:d1:2c:52:17:ff:99:cf:72:34:
+ d6:8a:82:a0:4a:23:49:e8:a1:59:ee:53:74:46:74:
+ a1:cf:d7:cb:dc:8e:d0:52:57:49:58:82:37:e0:f5:
+ ad:3b:38:1b:b5:86:04:1f:7e:1a:1f:8b:60:72:75:
+ f6:82:a4:10:0c:cc:58:65:bb:5b:b2:b3:a6:a1:56:
+ 42:69
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- F7:EE:CA:20:37:0F:BC:CF:F3:B7:DC:12:76:D1:D1:CA:40:67:3A:6D
+ 2A:18:0B:09:22:6E:28:D2:DB:FD:C2:2D:40:A6:F3:38:62:6E:C7:C5
X509v3 Authority Key Identifier:
- keyid:7A:EA:6A:75:AA:23:78:B5:5E:06:61:4A:56:CF:56:A9:6D:B0:54:02
+ keyid:41:49:FF:8C:66:50:5F:87:A1:06:A8:BB:AB:8A:DD:73:0D:0E:37:1A
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Alternative Name:
- DNS:web-platform.test, DNS:not-web-platform.test, DNS:www.web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.not-web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
+ DNS:web-platform.test, DNS:not-web-platform.test, DNS:www.web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.not-web-platform.test, DNS:www.www.web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:www.www2.web-platform.test, DNS:www2.www.web-platform.test, DNS:www1.www.web-platform.test, DNS:www.www1.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www1.www2.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www.www.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www1.www.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www.www1.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
Signature Algorithm: sha256WithRSAEncryption
- 63:c9:58:a8:38:b5:1f:2d:41:9f:06:a3:50:bc:a4:da:f5:e9:
- c6:05:64:0e:d6:7e:ee:31:8d:81:00:c1:90:fd:71:4d:3c:92:
- 44:7f:c5:b6:be:fe:8d:c0:85:90:04:5c:20:08:88:47:8c:b6:
- 0d:b4:1f:22:a8:10:a9:e7:0d:9d:a0:79:44:0b:f3:3a:77:e6:
- e2:89:f9:a4:ee:dc:e9:6c:6c:2c:1c:6f:c6:fb:e3:2c:36:a3:
- 72:89:4e:c2:9c:51:23:cc:af:2f:9d:67:82:d2:59:ea:ff:fd:
- ef:7c:bc:c8:ff:a7:19:43:64:e6:5f:82:28:c9:de:8e:97:e6:
- 42:e0:ca:74:e6:c8:e0:d3:6a:bc:04:ca:bb:53:f0:64:b1:31:
- 98:af:e1:b8:6b:7d:0c:ad:b3:e0:29:00:1b:50:af:30:b3:fa:
- d4:d3:0e:45:4b:12:0d:5a:ea:11:cd:29:be:32:ea:4f:4f:7c:
- 58:7d:e2:33:37:b9:ce:0f:94:00:6d:16:e4:91:6f:e6:4c:47:
- a7:cd:b7:f1:ab:86:68:e2:6e:c5:e9:60:b7:24:b1:aa:1b:f6:
- f5:ce:a4:03:bf:ed:20:92:a9:f7:ad:57:61:ef:d8:9a:b6:df:
- cb:2f:4d:3b:ab:8f:71:c4:f2:87:93:25:48:89:c5:9c:c8:d8:
- 46:c5:5e:ac
+ af:c2:ea:cc:6a:5e:49:e0:db:72:14:05:3c:21:a0:8b:ff:b6:
+ a9:71:82:f7:61:cd:23:2a:00:66:91:ac:01:99:63:38:11:21:
+ 85:b2:57:92:0b:3f:79:68:f5:d8:59:8b:a7:74:19:eb:0b:e7:
+ 3d:86:4e:66:d4:e6:2f:ff:ed:6c:7d:9a:5e:12:4e:bf:39:ff:
+ f7:d0:fb:52:53:a0:fb:b1:5c:9a:91:92:36:00:d8:a4:6f:f9:
+ 9c:36:21:b2:c2:5e:14:11:ca:55:e7:88:30:60:8d:86:da:65:
+ 26:ff:e2:45:36:2a:09:3d:a4:bb:38:61:4d:57:e4:c9:b6:50:
+ 3c:06:2f:6b:bf:04:34:42:54:dc:53:b6:61:c5:4e:40:00:d6:
+ 5e:19:17:3a:54:2c:c5:16:7a:6d:4a:70:56:45:cd:99:5a:2a:
+ d1:a7:4e:35:97:3d:d8:c9:95:80:ab:15:42:86:f6:a0:a6:c3:
+ 21:c1:9a:07:34:49:ad:61:3c:bc:94:b2:2d:92:f7:44:80:01:
+ 5f:27:bd:83:f5:51:22:39:cd:98:b1:39:23:b8:f4:5c:08:20:
+ 9e:fe:f1:2d:9a:e9:9b:c7:5e:b8:33:8b:16:77:52:3d:c9:7a:
+ 43:9e:25:d0:c7:5a:96:08:53:1a:dc:75:53:75:44:62:18:7c:
+ ef:fb:73:52
-----BEGIN CERTIFICATE-----
-MIIEnDCCA4SgAwIBAgIDBbADMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
-Yi1wbGF0Zm9ybS10ZXN0czAeFw0xODEyMjAxMjIwMzZaFw0yODEyMTcxMjIwMzZa
+MIIMsjCCC5qgAwIBAgIDBbFIMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xOTEwMTQxMzQ5MjlaFw0yOTEwMTExMzQ5Mjla
MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAqcRWQ5544Bqz49joq7YaDK4Q14YENDLqRJXCBt2bRPTz
-QKk9tGLK+3GIINb0HcpUqNWit2XAW7X7kPGH2u/qOk4k3CohJk1gd+KyT8dbd+6y
-c+51gtCYyDgK7aUiACPMiF5ALcOU5x3C+QAAu2pZYlTMhdeVFcXXk1IJr8OSFBs3
-0V/R1FYQhb8bbEvhkzqAyxxamBh+EHOrIHThLc1D7kUudcyk8GhuEKKQin5L49zC
-2dff5NGiT4m7yzQAqZDJTxWGWXpL7flrAQFI7YsVzPH/WKJ9l1fRezF7w7GmVIHm
-7mLe6sWhtMRjXs/K4iyIUAfMBkiCdfGYslTetqvf2wIDAQABo4IB5DCCAeAwCQYD
-VR0TBAIwADAdBgNVHQ4EFgQU9+7KIDcPvM/zt9wSdtHRykBnOm0wHwYDVR0jBBgw
-FoAUeupqdaojeLVeBmFKVs9WqW2wVAIwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG
-CCsGAQUFBwMBMIIBbwYDVR0RBIIBZjCCAWKCEXdlYi1wbGF0Zm9ybS50ZXN0ghVu
+AAOCAQ8AMIIBCgKCAQEAq2V1V5jj5aqP/tsY9eT4HGRhxqP26H4kEN4JeiS9VV9R
+qbWCDYU6trFIXzfLQm/nB8s2qTvaFJsKsKeVKe7SeCKe7hNf8MEsVXLwmsBufzze
+Yg+x9sLJhKaR1znNy5dPOf4M3rPtfjZ/qgEZqdWxf746ZQ+lXR9qwVt7CdwwKAWq
+F5QDH3kQBQ6WqmvvZcTKzOVpFB53UPrhDOpGcnr4cqdNlwz9Ly8DQrTyxgdHpgAH
+wu8acERlRkrRLFIX/5nPcjTWioKgSiNJ6KFZ7lN0RnShz9fL3I7QUldJWII34PWt
+OzgbtYYEH34aH4tgcnX2gqQQDMxYZbtbsrOmoVZCaQIDAQABo4IJ+jCCCfYwCQYD
+VR0TBAIwADAdBgNVHQ4EFgQUKhgLCSJuKNLb/cItQKbzOGJux8UwHwYDVR0jBBgw
+FoAUQUn/jGZQX4ehBqi7q4rdcw0ONxowCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiCEXdlYi1wbGF0Zm9ybS50ZXN0ghVu
b3Qtd2ViLXBsYXRmb3JtLnRlc3SCFXd3dy53ZWItcGxhdGZvcm0udGVzdIIWd3d3
MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53ZWItcGxhdGZvcm0udGVzdIIZd3d3
-Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
-c3SCGnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh54bi0tbHZlLTZsYWQud2Vi
-LXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl
-c3SCKXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gi14
-bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJ
-KoZIhvcNAQELBQADggEBAGPJWKg4tR8tQZ8Go1C8pNr16cYFZA7Wfu4xjYEAwZD9
-cU08kkR/xba+/o3AhZAEXCAIiEeMtg20HyKoEKnnDZ2geUQL8zp35uKJ+aTu3Ols
-bCwcb8b74yw2o3KJTsKcUSPMry+dZ4LSWer//e98vMj/pxlDZOZfgijJ3o6X5kLg
-ynTmyODTarwEyrtT8GSxMZiv4bhrfQyts+ApABtQrzCz+tTTDkVLEg1a6hHNKb4y
-6k9PfFh94jM3uc4PlABtFuSRb+ZMR6fNt/GrhmjibsXpYLcksaob9vXOpAO/7SCS
-qfetV2Hv2Jq238svTTurj3HE8oeTJUiJxZzI2EbFXqw=
+Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZd3d3Lnd3dy53ZWItcGxhdGZvcm0udGVz
+dIIad3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEubm90LXdlYi1wbGF0
+Zm9ybS50ZXN0ghp3d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIad3d3Mi53d3cu
+d2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghp3
+d3cud3d3MS53ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0ght3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCG3d3dzIud3d3Mi53
+ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0gh13
+d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIed3d3Lnd3dzIubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cxLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnhu
+LS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIIed3d3Lnd3dzEubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3
+dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3MS5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC
+H3d3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC53
+d3cud2ViLXBsYXRmb3JtLnRlc3SCInd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRm
+b3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCI3hu
+LS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0giN3d3cyLnhuLS1sdmUt
+NmxhZC53ZWItcGxhdGZvcm0udGVzdIIjd3d3MS54bi0tbHZlLTZsYWQud2ViLXBs
+YXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0
+giZ4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIImd3d3Lnhu
+LS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53
+d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIInd3d3Mi54bi0tbHZlLTZsYWQubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SC
+K3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCLXhu
+LS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdIIteG4t
+LW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0gi13d3cu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzEu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzIu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCL3huLS1s
+dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF4bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF3
+d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+gjJ3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCMnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gjJ3d3cyLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13
+ZWItcGxhdGZvcm0udGVzdII2eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2
+ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gjZ4bi0tbHZlLTZsYWQueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUtNmxhZC54
+bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCOnhu
+LS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3
+d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3QwDQYJKoZIhvcNAQELBQADggEBAK/C6sxqXkng23IUBTwhoIv/tqlxgvdhzSMq
+AGaRrAGZYzgRIYWyV5ILP3lo9dhZi6d0GesL5z2GTmbU5i//7Wx9ml4STr85//fQ
++1JToPuxXJqRkjYA2KRv+Zw2IbLCXhQRylXniDBgjYbaZSb/4kU2Kgk9pLs4YU1X
+5Mm2UDwGL2u/BDRCVNxTtmHFTkAA1l4ZFzpULMUWem1KcFZFzZlaKtGnTjWXPdjJ
+lYCrFUKG9qCmwyHBmgc0Sa1hPLyUsi2S90SAAV8nvYP1USI5zZixOSO49FwIIJ7+
+8S2a6ZvHXrgzixZ3Uj3JekOeJdDHWpYIUxrcdVN1RGIYfO/7c1I=
-----END CERTIFICATE-----
diff --git a/tests/wpt/web-platform-tests/tools/ci/run_tc.py b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
index 3201ff3a9d3..956d1c353e5 100755
--- a/tests/wpt/web-platform-tests/tools/ci/run_tc.py
+++ b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
@@ -41,6 +41,7 @@ import os
import re
import subprocess
import sys
+import tempfile
try:
from urllib2 import urlopen
except ImportError:
@@ -149,20 +150,35 @@ def install_webkitgtk_from_apt_repository(channel):
# Configure webkitgtk.org/debian repository for $channel and pin it with maximum priority
run(["sudo", "apt-key", "adv", "--fetch-keys", "https://webkitgtk.org/debian/apt.key"])
with open("/tmp/webkitgtk.list", "w") as f:
- f.write("deb [arch=amd64] https://webkitgtk.org/debian buster-wpt-webkit-updates %s\n" % channel)
+ f.write("deb [arch=amd64] https://webkitgtk.org/apt bionic-wpt-webkit-updates %s\n" % channel)
run(["sudo", "mv", "/tmp/webkitgtk.list", "/etc/apt/sources.list.d/"])
with open("/tmp/99webkitgtk", "w") as f:
f.write("Package: *\nPin: origin webkitgtk.org\nPin-Priority: 1999\n")
run(["sudo", "mv", "/tmp/99webkitgtk", "/etc/apt/preferences.d/"])
- # Install webkit2gtk from the webkitgtk.org/debian repository for $channel
+ # Install webkit2gtk from the webkitgtk.org/apt repository for $channel
run(["sudo", "apt-get", "-qqy", "update"])
run(["sudo", "apt-get", "-qqy", "upgrade"])
- run(["sudo", "apt-get", "-qqy", "-t", "buster-wpt-webkit-updates", "install", "webkit2gtk-driver"])
+ run(["sudo", "apt-get", "-qqy", "-t", "bionic-wpt-webkit-updates", "install", "webkit2gtk-driver"])
+
+
+def install_webkitgtk_from_tarball_bundle(channel):
+ with tempfile.NamedTemporaryFile(suffix=".tar.xz") as temp_tarball:
+ resp = urlopen("https://webkitgtk.org/built-products/nightly/webkitgtk-nightly-build-last.tar.xz")
+ while True:
+ chunk = resp.read(16*1024)
+ if not chunk:
+ break
+ temp_tarball.write(chunk)
+ temp_tarball.flush()
+ run(["sudo", "tar", "xfa", temp_tarball.name, "-C", "/"])
+ # Install dependencies
+ run(["sudo", "apt-get", "-qqy", "update"])
+ run(["sudo", "/opt/webkitgtk/nightly/install-dependencies"])
def install_webkitgtk(channel):
if channel in ("experimental", "dev", "nightly"):
- raise NotImplementedError("Still can't install from release channel: %s" % channel)
+ install_webkitgtk_from_tarball_bundle(channel)
elif channel in ("beta", "stable"):
install_webkitgtk_from_apt_repository(channel)
else:
diff --git a/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk b/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk
deleted file mode 100644
index 58080def60f..00000000000
--- a/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk
+++ /dev/null
@@ -1,82 +0,0 @@
-# This image for WebKitGTK tests is based on Debian stable to ensure binary
-# compatibility with ToT/trunk built-products from build.webkit.org bots.
-# See https://github.com/web-platform-tests/wpt/pull/18595#issuecomment-537267080
-FROM debian:10
-
-# No interactive frontend during docker build
-ENV DEBIAN_FRONTEND=noninteractive \
- DEBCONF_NONINTERACTIVE_SEEN=true
-
-
-# Update and upgrade.
-RUN apt-get -qqy update \
- && apt-get -qqy upgrade
-
-# Install general requirements not in the base image
-RUN apt-get -qqy install \
- bzip2 \
- ca-certificates \
- dbus-x11 \
- earlyoom \
- fluxbox \
- gdebi \
- git \
- locales \
- pulseaudio \
- python \
- python-pip \
- python-virtualenv \
- tzdata \
- sudo \
- unzip \
- wget \
- xvfb \
- git-core
-
-
-# To speed up testers, cache in the image most of WebKitGTK dependencies
-# but don't install them (that will be done at test time)
-RUN apt-get install -qqy --download-only webkit2gtk-driver
-
-# Set the timezone
-ENV TZ "UTC"
-RUN echo "${TZ}" > /etc/timezone \
- && dpkg-reconfigure --frontend noninteractive tzdata
-
-# Set the locale
-RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
- && dpkg-reconfigure --frontend noninteractive locales
-ENV LANG en_US.UTF-8
-ENV LANGUAGE en_US:en
-ENV LC_ALL en_US.UTF-8
-
-RUN useradd test \
- --shell /bin/bash \
- --create-home \
- && usermod -a -G sudo test \
- && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
- && echo 'test:secret' | chpasswd
-
-ENV SCREEN_WIDTH 1280
-ENV SCREEN_HEIGHT 1024
-ENV SCREEN_DEPTH 24
-ENV DISPLAY :99.0
-
-USER test
-
-WORKDIR /home/test
-
-# Remove information on how to use sudo on login
-RUN sudo echo ""
-
-RUN mkdir -p /home/test/artifacts
-RUN mkdir -p /home/test/bin
-
-ENV PATH="/home/test/bin:/home/test/.local/bin:${PATH}"
-
-WORKDIR /home/test/
-
-COPY .bashrc /home/test/.bashrc
-
-COPY start.sh /home/test/start.sh
-COPY retry.py /home/test/bin/retry
diff --git a/tests/wpt/web-platform-tests/tools/docker/README.md b/tests/wpt/web-platform-tests/tools/docker/README.md
index 6bcc47c7744..450981f686b 100644
--- a/tests/wpt/web-platform-tests/tools/docker/README.md
+++ b/tests/wpt/web-platform-tests/tools/docker/README.md
@@ -1,6 +1,6 @@
-This docker images is used for testing Chrome, Firefox and running other tasks
-on Taskcluster. When any of the files in this directory change, the images must
-be updated as well. To do this, assuming you have docker installed:
+This docker images is used for testing Chrome, Firefox, WebKitGTK and running
+other tasks on Taskcluster. When any of the files in this directory change, the
+images must be updated as well. To do this, assuming you have docker installed:
In this directory, run
```sh
@@ -8,10 +8,3 @@ docker build -t <tag> .
docker push <tag>
```
-Then update the `image` specified in the project's .taskcluster.yml file.
-
-To update the image used for WebKitGTK:
-```sh
-docker build -f Dockerfile.webkitgtk -t <tag> .
-docker push <tag>
-```
diff --git a/tests/wpt/web-platform-tests/tools/docker/github/Dockerfile b/tests/wpt/web-platform-tests/tools/docker/github/Dockerfile
deleted file mode 100644
index 22d47f3e5fa..00000000000
--- a/tests/wpt/web-platform-tests/tools/docker/github/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM ubuntu:18.04
-
-# No interactive frontend during docker build
-ENV DEBIAN_FRONTEND=noninteractive \
- DEBCONF_NONINTERACTIVE_SEEN=true
-
-RUN apt-get -qqy update \
- && apt-get -qqy install \
- bzip2 \
- git \
- locales \
- python \
- python-pip \
- tzdata \
- zstd
-
-RUN pip install --upgrade pip
-RUN pip install virtualenv
-RUN pip install requests
-
-ENV TZ "UTC"
-RUN echo "${TZ}" > /etc/timezone \
- && dpkg-reconfigure --frontend noninteractive tzdata
-
-# Set the locale
-RUN locale-gen en_US.UTF-8
-ENV LANG en_US.UTF-8
-ENV LANGUAGE en_US:en
-ENV LC_ALL en_US.UTF-8
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index c04162fe2a1..233778f2565 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -1118,10 +1118,15 @@ class WebKitGTKMiniBrowser(WebKit):
pass
# Add Debian/Ubuntu path
libexecpaths.append("/usr/lib/%s/webkit2gtk-4.0" % triplet)
+ if channel == "nightly":
+ libexecpaths.append("/opt/webkitgtk/nightly")
return find_executable("MiniBrowser", os.pathsep.join(libexecpaths))
def find_webdriver(self, channel=None):
- return find_executable("WebKitWebDriver")
+ path = os.environ['PATH']
+ if channel == "nightly":
+ path = "%s:%s" % (path, "/opt/webkitgtk/nightly")
+ return find_executable("WebKitWebDriver", path)
def version(self, binary=None, webdriver_binary=None):
if binary is None:
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 077d4a7eb87..de20e2916ad 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -592,14 +592,14 @@ class WebKitGTKMiniBrowser(BrowserSetup):
def setup_kwargs(self, kwargs):
if kwargs["binary"] is None:
- binary = self.browser.find_binary()
+ binary = self.browser.find_binary(channel=kwargs["browser_channel"])
if binary is None:
raise WptrunError("Unable to find MiniBrowser binary")
kwargs["binary"] = binary
if kwargs["webdriver_binary"] is None:
- webdriver_binary = self.browser.find_webdriver()
+ webdriver_binary = self.browser.find_webdriver(channel=kwargs["browser_channel"])
if webdriver_binary is None:
raise WptrunError("Unable to find WebKitWebDriver in PATH")
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
index f691c380b7a..25b66e7d922 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
@@ -43,9 +43,13 @@ def test_safari_version_errors(mocked_check_output):
def test_webkitgtk_minibrowser_version(mocked_check_output):
webkitgtk_minibrowser = browser.WebKitGTKMiniBrowser(logger)
+ # stable version
mocked_check_output.return_value = 'WebKitGTK 2.26.1\n'
assert webkitgtk_minibrowser.version(binary='MiniBrowser') == '2.26.1'
+ # nightly version
+ mocked_check_output.return_value = 'WebKitGTK 2.27.1 (r250823)\n'
+ assert webkitgtk_minibrowser.version(binary='MiniBrowser') == '2.27.1 (r250823)'
@mock.patch('subprocess.check_output')
def test_webkitgtk_minibrowser_version_errors(mocked_check_output):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst
index d4f976dfca1..0adf0a94b15 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst
@@ -3,239 +3,12 @@ wptrunner: A web-platform-tests harness
wptrunner is a harness for running the W3C `web-platform-tests testsuite`_.
-.. contents::
+.. toctree::
+ :maxdepth: 2
-Installation
-~~~~~~~~~~~~
-
-wptrunner is expected to be installed into a virtualenv using pip. For
-development, it can be installed using the `-e` option::
-
- pip install -e ./
-
-Running the Tests
-~~~~~~~~~~~~~~~~~
-
-After installation, the command ``wptrunner`` should be available to run
-the tests.
-
-The ``wptrunner`` command takes multiple options, of which the
-following are most significant:
-
-``--product`` (defaults to `firefox`)
- The product to test against: `chrome`, `firefox`, or `servo`.
-
-``--binary`` (required if product is `firefox` or `servo`)
- The path to a binary file for the product (browser) to test against.
-
-``--webdriver-binary`` (required if product is `chrome`)
- The path to a `driver` binary; e.g., a `chromedriver` binary.
-
-``--certutil-binary`` (required if product is `firefox` [#]_)
- The path to a `certutil` binary (for tests that must be run over https).
-
-``--metadata`` (required)
- The path to a directory containing test metadata. [#]_
-
-``--tests`` (required)
- The path to a directory containing a web-platform-tests checkout.
-
-``--prefs-root`` (required only when testing a Firefox binary)
- The path to a directory containing Firefox test-harness preferences. [#]_
-
-``--config`` (should default to `wptrunner.default.ini`)
- The path to the config (ini) file.
-
-.. [#] The ``--certutil-binary`` option is required when the product is
- ``firefox`` unless ``--ssl-type=none`` is specified.
-
-.. [#] The ``--metadata`` path is to a directory that contains:
-
- * a ``MANIFEST.json`` file (instructions on generating this file are
- available in the `detailed documentation
- <http://wptrunner.readthedocs.org/en/latest/usage.html#installing-wptrunner>`_);
- and
- * (optionally) any expectation files (see below)
-
-.. [#] Example ``--prefs-root`` value: ``~/mozilla-central/testing/profiles``.
-
-There are also a variety of other options available; use ``--help`` to
-list them.
-
--------------------------------
-Example: How to start wptrunner
--------------------------------
-
-To test a Firefox Nightly build in an OS X environment, you might start
-wptrunner using something similar to the following example::
-
- wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
- --binary=~/mozilla-central/obj-x86_64-apple-darwin14.3.0/dist/Nightly.app/Contents/MacOS/firefox \
- --certutil-binary=~/mozilla-central/obj-x86_64-apple-darwin14.3.0/security/nss/cmd/certutil/certutil \
- --prefs-root=~/mozilla-central/testing/profiles
-
-And to test a Chromium build in an OS X environment, you might start
-wptrunner using something similar to the following example::
-
- wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
- --binary=~/chromium/src/out/Release/Chromium.app/Contents/MacOS/Chromium \
- --webdriver-binary=/usr/local/bin/chromedriver --product=chrome
-
--------------------------------------
-Example: How to run a subset of tests
--------------------------------------
-
-To restrict a test run just to tests in a particular web-platform-tests
-subdirectory, specify the directory name in the positional arguments after
-the options; for example, run just the tests in the `dom` subdirectory::
-
- wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
- --binary=/path/to/firefox --certutil-binary=/path/to/certutil \
- --prefs-root=/path/to/testing/profiles \
- dom
-
-Output
-~~~~~~
-
-By default wptrunner just dumps its entire output as raw JSON messages
-to stdout. This is convenient for piping into other tools, but not ideal
-for humans reading the output.
-
-As an alternative, you can use the ``--log-mach`` option, which provides
-output in a reasonable format for humans. The option requires a value:
-either the path for a file to write the `mach`-formatted output to, or
-"`-`" (a hyphen) to write the `mach`-formatted output to stdout.
-
-When using ``--log-mach``, output of the full raw JSON log is still
-available, from the ``--log-raw`` option. So to output the full raw JSON
-log to a file and a human-readable summary to stdout, you might start
-wptrunner using something similar to the following example::
-
- wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
- --binary=/path/to/firefox --certutil-binary=/path/to/certutil \
- --prefs-root=/path/to/testing/profiles \
- --log-raw=output.log --log-mach=-
-
-Expectation Data
-~~~~~~~~~~~~~~~~
-
-wptrunner is designed to be used in an environment where it is not
-just necessary to know which tests passed, but to compare the results
-between runs. For this reason it is possible to store the results of a
-previous run in a set of ini-like "expectation files". This format is
-documented below. To generate the expectation files use `wptrunner` with
-the `--log-raw=/path/to/log/file` option. This can then be used as
-input to the `wptupdate` tool.
-
-Expectation File Format
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Metadata about tests, notably including their expected results, is
-stored in a modified ini-like format that is designed to be human
-editable, but also to be machine updatable.
-
-Each test file that requires metadata to be specified (because it has
-a non-default expectation or because it is disabled, for example) has
-a corresponding expectation file in the `metadata` directory. For
-example a test file `html/test1.html` containing a failing test would
-have an expectation file called `html/test1.html.ini` in the
-`metadata` directory.
-
-An example of an expectation file is::
-
- example_default_key: example_value
-
- [filename.html]
- [subtest1]
- expected: FAIL
-
- [subtest2]
- expected:
- if platform == 'win': TIMEOUT
- if platform == 'osx': ERROR
- FAIL
-
- [subtest3]
- expected: [PASS, TIMEOUT]
-
- [filename.html?query=something]
- disabled: bug12345
-
-The file consists of two elements, key-value pairs and
-sections.
-
-Sections are delimited by headings enclosed in square brackets. Any
-closing square bracket in the heading itself my be escaped with a
-backslash. Each section may then contain any number of key-value pairs
-followed by any number of subsections. So that it is clear which data
-belongs to each section without the use of end-section markers, the
-data for each section (i.e. the key-value pairs and subsections) must
-be indented using spaces. Indentation need only be consistent, but
-using two spaces per level is recommended.
-
-In a test expectation file, each resource provided by the file has a
-single section, with the section heading being the part after the last
-`/` in the test url. Tests that have subsections may have subsections
-for those subtests in which the heading is the name of the subtest.
-
-Simple key-value pairs are of the form::
-
- key: value
-
-Note that unlike ini files, only `:` is a valid separator; `=` will
-not work as expected. Key-value pairs may also have conditional
-values of the form::
-
- key:
- if condition1: value1
- if condition2: value2
- default
-
-In this case each conditional is evaluated in turn and the value is
-that on the right hand side of the first matching conditional. In the
-case that no condition matches, the unconditional default is used. If
-no condition matches and no default is provided it is equivalent to
-the key not being present. Conditionals use a simple python-like expression
-language e.g.::
-
- if debug and (platform == "linux" or platform == "osx"): FAIL
-
-For test expectations the available variables are those in the
-`run_info` which for desktop are `version`, `os`, `bits`, `processor`,
-`debug` and `product`.
-
-Key-value pairs specified at the top level of the file before any
-sections are special as they provide defaults for the rest of the file
-e.g.::
-
- key1: value1
-
- [section 1]
- key2: value2
-
- [section 2]
- key1: value3
-
-In this case, inside section 1, `key1` would have the value `value1`
-and `key2` the value `value2` whereas in section 2 `key1` would have
-the value `value3` and `key2` would be undefined.
-
-The web-platform-test harness knows about several keys:
-
-`expected`
- Must evaluate to a possible test status indicating the expected
- result of the test. The implicit default is PASS or OK when the
- field isn't present. When `expected` is a list, the first status
- is the primary expected status and the trailing statuses listed are
- expected intermittent statuses.
-
-`disabled`
- Any value indicates that the test is disabled.
-
-`reftype`
- The type of comparison for reftests; either `==` or `!=`.
-
-`refurl`
- The reference url for reftests.
+ docs/usage
+ docs/expectation
+ docs/design
+ docs/internals
.. _`web-platform-tests testsuite`: https://github.com/web-platform-tests/wpt
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/Makefile b/tests/wpt/web-platform-tests/tools/wptrunner/docs/Makefile
deleted file mode 100644
index d02b6c5e7c4..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/Makefile
+++ /dev/null
@@ -1,177 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# User-friendly check for sphinx-build
-ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
-$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
-endif
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " xml to make Docutils-native XML files"
- @echo " pseudoxml to make pseudoxml-XML files for display purposes"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- rm -rf $(BUILDDIR)/*
-
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/wptrunner.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/wptrunner.qhc"
-
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/wptrunner"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/wptrunner"
- @echo "# devhelp"
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-latexpdfja:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through platex and dvipdfmx..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
-
-xml:
- $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
- @echo
- @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
-
-pseudoxml:
- $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
- @echo
- @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py b/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py
deleted file mode 100644
index c2d4fd5ab95..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py
+++ /dev/null
@@ -1,267 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# wptrunner documentation build configuration file, created by
-# sphinx-quickstart on Mon May 19 18:14:20 2014.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-#import sys
-#import os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.autodoc',
- 'sphinx.ext.intersphinx',
- 'sphinx.ext.viewcode',
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'wptrunner'
-copyright = u''
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '0.3'
-# The full version, including alpha/beta/rc tags.
-release = '0.3'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
-
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = 'default'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'wptrunnerdoc'
-
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- #'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- #'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- ('index', 'wptrunner.tex', u'wptrunner Documentation',
- u'James Graham', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- ('index', 'wptrunner', u'wptrunner Documentation',
- [u'James Graham'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- ('index', 'wptrunner', u'wptrunner Documentation',
- u'James Graham', 'wptrunner', 'One line description of project.',
- 'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#texinfo_no_detailmenu = False
-
-
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'python': ('http://docs.python.org/', None),
- 'mozlog': ('https://firefox-source-docs.mozilla.org/', None)}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/design.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/design.rst
index 056c0d86632..30f82711a59 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/design.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/design.rst
@@ -43,64 +43,66 @@ The overall architecture of wptrunner is shown in the diagram below:
.. image:: architecture.svg
-The main entry point to the code is :py:func:`run_tests` in
+.. currentmodule:: wptrunner
+
+The main entry point to the code is :py:func:`~wptrunner.run_tests` in
``wptrunner.py``. This is responsible for setting up the test
environment, loading the list of tests to be executed, and invoking
the remainder of the code to actually execute some tests.
The test environment is encapsulated in the
-:py:class:`TestEnvironment` class. This defers to code in
+:py:class:`~environment.TestEnvironment` class. This defers to code in
``web-platform-tests`` which actually starts the required servers to
run the tests.
The set of tests to run is defined by the
-:py:class:`TestLoader`. This is constructed with a
-:py:class:`TestFilter` (not shown), which takes any filter arguments
+:py:class:`~testloader.TestLoader`. This is constructed with a
+:py:class:`~testloader.TestFilter` (not shown), which takes any filter arguments
from the command line to restrict the set of tests that will be
-run. The :py:class:`TestLoader` reads both the ``web-platform-tests``
+run. The :py:class:`~testloader.TestLoader` reads both the ``web-platform-tests``
JSON manifest and the expectation data stored in ini files and
produces a :py:class:`multiprocessing.Queue` of tests to run, and
their expected results.
Actually running the tests happens through the
-:py:class:`ManagerGroup` object. This takes the :py:class:`Queue` of
-tests to be run and starts a :py:class:`testrunner.TestRunnerManager` for each
+:py:class:`~testrunner.ManagerGroup` object. This takes the :py:class:`~multiprocessing.Queue` of
+tests to be run and starts a :py:class:`~testrunner.TestRunnerManager` for each
instance of the browser under test that will be started. These
-:py:class:`TestRunnerManager` instances are each started in their own
+:py:class:`~testrunner.TestRunnerManager` instances are each started in their own
thread.
-A :py:class:`TestRunnerManager` coordinates starting the product under
+A :py:class:`~testrunner.TestRunnerManager` coordinates starting the product under
test, and outputting results from the test. In the case that the test
has timed out or the browser has crashed, it has to restart the
browser to ensure the test run can continue. The functionality for
initialising the browser under test, and probing its state
(e.g. whether the process is still alive) is implemented through a
-:py:class:`Browser` object. An implementation of this class must be
+:py:class:`~browsers.base.Browser` object. An implementation of this class must be
provided for each product that is supported.
The functionality for actually running the tests is provided by a
-:py:class:`TestRunner` object. :py:class:`TestRunner` instances are
+:py:class:`~testrunner.TestRunner` object. :py:class:`~testrunner.TestRunner` instances are
run in their own child process created with the
:py:mod:`multiprocessing` module. This allows them to run concurrently
and to be killed and restarted as required. Communication between the
-:py:class:`TestRunnerManager` and the :py:class:`TestRunner` is
+:py:class:`~testrunner.TestRunnerManager` and the :py:class:`~testrunner.TestRunner` is
provided by a pair of queues, one for sending messages in each
direction. In particular test results are sent from the
-:py:class:`TestRunner` to the :py:class:`TestRunnerManager` using one
+:py:class:`~testrunner.TestRunner` to the :py:class:`~testrunner.TestRunnerManager` using one
of these queues.
-The :py:class:`TestRunner` object is generic in that the same
-:py:class:`TestRunner` is used regardless of the product under
+The :py:class:`~testrunner.TestRunner` object is generic in that the same
+:py:class:`~testrunner.TestRunner` is used regardless of the product under
test. However the details of how to run the test may vary greatly with
the product since different products support different remote control
protocols (or none at all). These protocol-specific parts are placed
-in the :py:class:`Executor` object. There is typically a different
-:py:class:`Executor` class for each combination of control protocol
-and test type. The :py:class:`TestRunner` is responsible for pulling
-each test off the :py:class:`Queue` of tests and passing it down to
-the :py:class:`Executor`.
+in the :py:class:`~executors.base.TestExecutor` object. There is typically a different
+:py:class:`~executors.base.TestExecutor` class for each combination of control protocol
+and test type. The :py:class:`~testrunner.TestRunner` is responsible for pulling
+each test off the :py:class:`multiprocessing.Queue` of tests and passing it down to
+the :py:class:`~executors.base.TestExecutor`.
The executor often requires access to details of the particular
browser instance that it is testing so that it knows e.g. which port
to connect to to send commands to the browser. These details are
-encapsulated in the :py:class:`ExecutorBrowser` class.
+encapsulated in the :py:class:`~browsers.base.ExecutorBrowser` class.
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
index 9b3e5e05e5c..2f7467c0912 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
@@ -160,6 +160,24 @@ A simple example of a manifest file is::
[another_section]
another_key: another_value
+The web-platform-test harness knows about several keys:
+
+`expected`
+ Must evaluate to a possible test status indicating the expected
+ result of the test. The implicit default is PASS or OK when the
+ field isn't present. When `expected` is a list, the first status
+ is the primary expected status and the trailing statuses listed are
+ expected intermittent statuses.
+
+`disabled`
+ Any value indicates that the test is disabled.
+
+`reftype`
+ The type of comparison for reftests; either `==` or `!=`.
+
+`refurl`
+ The reference url for reftests.
+
Conditional Values
~~~~~~~~~~~~~~~~~~
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/index.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/index.rst
deleted file mode 100644
index 5147d3e31c3..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/index.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-.. wptrunner documentation master file, created by
- sphinx-quickstart on Mon May 19 18:14:20 2014.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-Welcome to wptrunner's documentation!
-=====================================
-
-Contents:
-
-.. toctree::
- :maxdepth: 2
-
- usage
- expectation
- design
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/internals.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/internals.rst
new file mode 100644
index 00000000000..780df872edc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/internals.rst
@@ -0,0 +1,23 @@
+wptrunner Internals
+===================
+
+.. These modules are intentionally referenced as submodules from the parent
+ directory. This ensures that Sphinx interprets them as packages.
+
+.. automodule:: wptrunner.browsers.base
+ :members:
+
+.. automodule:: wptrunner.environment
+ :members:
+
+.. automodule:: wptrunner.executors.base
+ :members:
+
+.. automodule:: wptrunner.wptrunner
+ :members:
+
+.. automodule:: wptrunner.testloader
+ :members:
+
+.. automodule:: wptrunner.testrunner
+ :members:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/make.bat b/tests/wpt/web-platform-tests/tools/wptrunner/docs/make.bat
deleted file mode 100644
index 959c1615a28..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/make.bat
+++ /dev/null
@@ -1,242 +0,0 @@
-@ECHO OFF
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-set I18NSPHINXOPTS=%SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
- set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
- set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
- :help
- echo.Please use `make ^<target^>` where ^<target^> is one of
- echo. html to make standalone HTML files
- echo. dirhtml to make HTML files named index.html in directories
- echo. singlehtml to make a single large HTML file
- echo. pickle to make pickle files
- echo. json to make JSON files
- echo. htmlhelp to make HTML files and a HTML help project
- echo. qthelp to make HTML files and a qthelp project
- echo. devhelp to make HTML files and a Devhelp project
- echo. epub to make an epub
- echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
- echo. text to make text files
- echo. man to make manual pages
- echo. texinfo to make Texinfo files
- echo. gettext to make PO message catalogs
- echo. changes to make an overview over all changed/added/deprecated items
- echo. xml to make Docutils-native XML files
- echo. pseudoxml to make pseudoxml-XML files for display purposes
- echo. linkcheck to check all external links for integrity
- echo. doctest to run all doctests embedded in the documentation if enabled
- goto end
-)
-
-if "%1" == "clean" (
- for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
- del /q /s %BUILDDIR%\*
- goto end
-)
-
-
-%SPHINXBUILD% 2> nul
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.http://sphinx-doc.org/
- exit /b 1
-)
-
-if "%1" == "html" (
- %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/html.
- goto end
-)
-
-if "%1" == "dirhtml" (
- %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
- goto end
-)
-
-if "%1" == "singlehtml" (
- %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
- goto end
-)
-
-if "%1" == "pickle" (
- %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can process the pickle files.
- goto end
-)
-
-if "%1" == "json" (
- %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can process the JSON files.
- goto end
-)
-
-if "%1" == "htmlhelp" (
- %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
- goto end
-)
-
-if "%1" == "qthelp" (
- %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
- echo.^> qcollectiongenerator %BUILDDIR%\qthelp\wptrunner.qhcp
- echo.To view the help file:
- echo.^> assistant -collectionFile %BUILDDIR%\qthelp\wptrunner.ghc
- goto end
-)
-
-if "%1" == "devhelp" (
- %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished.
- goto end
-)
-
-if "%1" == "epub" (
- %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The epub file is in %BUILDDIR%/epub.
- goto end
-)
-
-if "%1" == "latex" (
- %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
- goto end
-)
-
-if "%1" == "latexpdf" (
- %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
- cd %BUILDDIR%/latex
- make all-pdf
- cd %BUILDDIR%/..
- echo.
- echo.Build finished; the PDF files are in %BUILDDIR%/latex.
- goto end
-)
-
-if "%1" == "latexpdfja" (
- %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
- cd %BUILDDIR%/latex
- make all-pdf-ja
- cd %BUILDDIR%/..
- echo.
- echo.Build finished; the PDF files are in %BUILDDIR%/latex.
- goto end
-)
-
-if "%1" == "text" (
- %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The text files are in %BUILDDIR%/text.
- goto end
-)
-
-if "%1" == "man" (
- %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The manual pages are in %BUILDDIR%/man.
- goto end
-)
-
-if "%1" == "texinfo" (
- %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
- goto end
-)
-
-if "%1" == "gettext" (
- %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
- goto end
-)
-
-if "%1" == "changes" (
- %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
- if errorlevel 1 exit /b 1
- echo.
- echo.The overview file is in %BUILDDIR%/changes.
- goto end
-)
-
-if "%1" == "linkcheck" (
- %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
- if errorlevel 1 exit /b 1
- echo.
- echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
- goto end
-)
-
-if "%1" == "doctest" (
- %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
- if errorlevel 1 exit /b 1
- echo.
- echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
- goto end
-)
-
-if "%1" == "xml" (
- %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The XML files are in %BUILDDIR%/xml.
- goto end
-)
-
-if "%1" == "pseudoxml" (
- %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
- goto end
-)
-
-:end
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst
index 5997f4254f1..5fed5fcdba4 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst
@@ -164,15 +164,15 @@ metadata files in a subdirectory of the current directory named ``meta``.
Output
------
-wptrunner uses the :py:mod:`mozlog` package for output. This
+wptrunner uses [the `mozlog` package](https://firefox-source-docs.mozilla.org/mozbase/mozlog.html) for output. This
structures events such as test results or log messages as JSON objects
that can then be fed to other tools for interpretation. More details
-about the message format are given in the
-:py:mod:`mozlog` documentation.
+about the message format are given in [the
+`mozlog` documentation](https://firefox-source-docs.mozilla.org/mozbase/mozlog.html).
By default the raw JSON messages are dumped to stdout. This is
convenient for piping into other tools, but not ideal for humans
-reading the output. :py:mod:`mozlog` comes with several other
+reading the output. [`mozlog`](https://firefox-source-docs.mozilla.org/mozbase/mozlog.html) comes with several other
formatters, which are accessible through command line options. The
general format of these options is ``--log-name=dest``, where ``name``
is the name of the format and ``dest`` is a path to a destination
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py
index d17229da468..8607f776b98 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/base.py
@@ -88,21 +88,21 @@ class BrowserError(Exception):
class Browser(object):
+ """Abstract class serving as the basis for Browser implementations.
+
+ The Browser is used in the TestRunnerManager to start and stop the browser
+ process, and to check the state of that process. This class also acts as a
+ context manager, enabling it to do browser-specific setup at the start of
+ the testrun and cleanup after the run is complete.
+
+ :param logger: Structured logger to use for output.
+ """
__metaclass__ = ABCMeta
process_cls = None
init_timeout = 30
def __init__(self, logger):
- """Abstract class serving as the basis for Browser implementations.
-
- The Browser is used in the TestRunnerManager to start and stop the browser
- process, and to check the state of that process. This class also acts as a
- context manager, enabling it to do browser-specific setup at the start of
- the testrun and cleanup after the run is complete.
-
- :param logger: Structured logger to use for output.
- """
self.logger = logger
def __enter__(self):
@@ -182,14 +182,14 @@ class NullBrowser(Browser):
class ExecutorBrowser(object):
+ """View of the Browser used by the Executor object.
+ This is needed because the Executor runs in a child process and
+ we can't ship Browser instances between processes on Windows.
+
+ Typically this will have a few product-specific properties set,
+ but in some cases it may have more elaborate methods for setting
+ up the browser from the runner process.
+ """
def __init__(self, **kwargs):
- """View of the Browser used by the Executor object.
- This is needed because the Executor runs in a child process and
- we can't ship Browser instances between processes on Windows.
-
- Typically this will have a few product-specific properties set,
- but in some cases it may have more elaborate methods for setting
- up the browser from the runner process.
- """
for k, v in kwargs.iteritems():
setattr(self, k, v)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.py
index d2a61a87594..e7f9d7b8cc9 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.py
@@ -30,7 +30,7 @@ def read(config_path):
for section in parser.sections():
rv[section] = ConfigDict(config_root)
for key in parser.options(section):
- rv[section][key] = parser.get(section, key, False, subns)
+ rv[section][key] = parser.get(section, key, raw=False, vars=subns)
return rv
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index 92440921641..e79ae375064 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -50,9 +50,9 @@ class TestEnvironmentError(Exception):
class TestEnvironment(object):
+ """Context manager that owns the test environment i.e. the http and
+ websockets servers"""
def __init__(self, test_paths, testharness_timeout_multipler, pause_after_test, debug_info, options, ssl_config, env_extras):
- """Context manager that owns the test environment i.e. the http and
- websockets servers"""
self.test_paths = test_paths
self.server = None
self.config_ctx = None
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index f581c5cedb7..6305563dc69 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -129,6 +129,17 @@ class ExecutorException(Exception):
class TestExecutor(object):
+ """Abstract Base class for object that actually executes the tests in a
+ specific browser. Typically there will be a different TestExecutor
+ subclass for each test type and method of executing tests.
+
+ :param browser: ExecutorBrowser instance providing properties of the
+ browser that will be tested.
+ :param server_config: Dictionary of wptserve server configuration of the
+ form stored in TestEnvironment.config
+ :param timeout_multiplier: Multiplier relative to base timeout to use
+ when setting test timeout.
+ """
__metaclass__ = ABCMeta
test_type = None
@@ -138,17 +149,6 @@ class TestExecutor(object):
def __init__(self, browser, server_config, timeout_multiplier=1,
debug_info=None, **kwargs):
- """Abstract Base class for object that actually executes the tests in a
- specific browser. Typically there will be a different TestExecutor
- subclass for each test type and method of executing tests.
-
- :param browser: ExecutorBrowser instance providing properties of the
- browser that will be tested.
- :param server_config: Dictionary of wptserve server configuration of the
- form stored in TestEnvironment.config
- :param timeout_multiplier: Multiplier relative to base timeout to use
- when setting test timeout.
- """
self.runner = None
self.browser = browser
self.server_config = server_config
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py
index a3d5581471a..83a4834d785 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py
@@ -3,6 +3,7 @@ import os
from six.moves.urllib.parse import urljoin, urlsplit
from collections import namedtuple, defaultdict, deque
from math import ceil
+from six import iterkeys, itervalues, iteritems
from wptmanifest import serialize
from wptmanifest.node import (DataNode, ConditionalNode, BinaryExpressionNode,
@@ -75,7 +76,7 @@ class UpdateProperties(object):
return name in self._classes
def __iter__(self):
- for name in self._classes.iterkeys():
+ for name in iterkeys(self._classes):
yield getattr(self, name)
@@ -312,8 +313,8 @@ def build_conditional_tree(_, run_info_properties, results):
def build_unconditional_tree(_, run_info_properties, results):
root = expectedtree.Node(None, None)
- for run_info, values in results.iteritems():
- for value, count in values.iteritems():
+ for run_info, values in iteritems(results):
+ for value, count in iteritems(values):
root.result_values[value] += count
root.run_info.add(run_info)
return root
@@ -498,7 +499,7 @@ class PropertyUpdate(object):
for run_info in node.run_info}
node_by_run_info = {run_info: node
- for (run_info, node) in run_info_index.iteritems()
+ for (run_info, node) in iteritems(run_info_index)
if node.result_values}
run_info_by_condition = self.run_info_by_condition(run_info_index,
@@ -511,7 +512,7 @@ class PropertyUpdate(object):
# using the properties we've specified and not matching any run_info
top_level_props, dependent_props = self.node.root.run_info_properties
update_properties = set(top_level_props)
- for item in dependent_props.itervalues():
+ for item in itervalues(dependent_props):
update_properties |= set(dependent_props)
for condition in current_conditions:
if ((not condition.variables.issubset(update_properties) and
@@ -694,7 +695,7 @@ class ExpectedUpdate(PropertyUpdate):
raise ConditionError
counts = {}
- for status, count in new.iteritems():
+ for status, count in iteritems(new):
if isinstance(status, tuple):
counts[status[0]] = count
counts.update({intermittent: 0 for intermittent in status[1:] if intermittent not in counts})
@@ -708,7 +709,7 @@ class ExpectedUpdate(PropertyUpdate):
# Counts with 0 are considered intermittent.
statuses = ["OK", "PASS", "FAIL", "ERROR", "TIMEOUT", "CRASH"]
status_priority = {value: i for i, value in enumerate(statuses)}
- sorted_new = sorted(counts.iteritems(), key=lambda x:(-1 * x[1],
+ sorted_new = sorted(iteritems(counts), key=lambda x:(-1 * x[1],
status_priority.get(x[0],
len(status_priority))))
expected = []
@@ -821,7 +822,7 @@ class LeakThresholdUpdate(PropertyUpdate):
return result
def to_ini_value(self, data):
- return ["%s:%s" % item for item in sorted(data.iteritems())]
+ return ["%s:%s" % item for item in sorted(iteritems(data))]
def from_ini_value(self, data):
rv = {}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
index 1ffdda6003f..fa54ca36157 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
@@ -69,6 +69,8 @@ class DirectoryHashChunker(TestChunker):
class TestFilter(object):
+ """Callable that restricts the set of tests in a given manifest according
+ to initial criteria"""
def __init__(self, test_manifests, include=None, exclude=None, manifest_path=None, explicit=False):
if manifest_path is None or include or explicit:
self.manifest = manifestinclude.IncludeManifest.create()
@@ -147,6 +149,7 @@ def iterfilter(filters, iter):
class TestLoader(object):
+ """Loads tests according to a WPT manifest and any associated expectation files"""
def __init__(self,
test_manifests,
test_types,
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 5c0c60a07a9..c2cb5c4d26b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -51,19 +51,19 @@ for level_name in structuredlog.log_levels:
class TestRunner(object):
+ """Class implementing the main loop for running tests.
+
+ This class delegates the job of actually running a test to the executor
+ that is passed in.
+
+ :param logger: Structured logger
+ :param command_queue: subprocess.Queue used to send commands to the
+ process
+ :param result_queue: subprocess.Queue used to send results to the
+ parent TestRunnerManager process
+ :param executor: TestExecutor object that will actually run a test.
+ """
def __init__(self, logger, command_queue, result_queue, executor):
- """Class implementing the main loop for running tests.
-
- This class delegates the job of actually running a test to the executor
- that is passed in.
-
- :param logger: Structured logger
- :param command_queue: subprocess.Queue used to send commands to the
- process
- :param result_queue: subprocess.Queue used to send results to the
- parent TestRunnerManager process
- :param executor: TestExecutor object that will actually run a test.
- """
self.command_queue = command_queue
self.result_queue = result_queue
@@ -773,6 +773,7 @@ def make_test_queue(tests, test_source_cls, **test_source_kwargs):
class ManagerGroup(object):
+ """Main thread object that owns all the TestRunnerManager threads."""
def __init__(self, suite_name, size, test_source_cls, test_source_kwargs,
browser_cls, browser_kwargs,
executor_cls, executor_kwargs,
@@ -782,7 +783,6 @@ class ManagerGroup(object):
restart_on_unexpected=True,
debug_info=None,
capture_stdio=True):
- """Main thread object that owns all the TestRunnerManager threads."""
self.suite_name = suite_name
self.size = size
self.test_source_cls = test_source_cls
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
index 5ac29b302e6..3fc0f6d6b53 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -5,6 +5,7 @@ import sys
from collections import OrderedDict
from distutils.spawn import find_executable
from datetime import timedelta
+from six import iterkeys, itervalues, iteritems
from . import config
from . import wpttest
@@ -368,7 +369,7 @@ def set_from_config(kwargs):
("host_cert_path", "host_cert_path", True),
("host_key_path", "host_key_path", True)]}
- for section, values in keys.iteritems():
+ for section, values in iteritems(keys):
for config_value, kw_value, is_path in values:
if kw_value in kwargs and kwargs[kw_value] is None:
if not is_path:
@@ -404,7 +405,7 @@ def get_test_paths(config):
# Set up test_paths
test_paths = OrderedDict()
- for section in config.iterkeys():
+ for section in iterkeys(config):
if section.startswith("manifest:"):
manifest_opts = config.get(section)
url_base = manifest_opts.get("url_base", "/")
@@ -430,7 +431,7 @@ def exe_path(name):
def check_paths(kwargs):
- for test_paths in kwargs["test_paths"].itervalues():
+ for test_paths in itervalues(kwargs["test_paths"]):
if not ("tests_path" in test_paths and
"metadata_path" in test_paths):
print("Fatal: must specify both a test path and metadata path")
@@ -438,7 +439,7 @@ def check_paths(kwargs):
if "manifest_path" not in test_paths:
test_paths["manifest_path"] = os.path.join(test_paths["metadata_path"],
"MANIFEST.json")
- for key, path in test_paths.iteritems():
+ for key, path in iteritems(test_paths):
name = key.split("_", 1)[0]
if name == "manifest":
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 8dcdcdebe15..88b51d0fd6a 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -134,6 +134,8 @@ def get_pause_after_test(test_loader, **kwargs):
def run_tests(config, test_paths, product, **kwargs):
+ """Set up the test environment, load the list of tests to be executed, and
+ invoke the remainder of the code to execute tests"""
with capture.CaptureIO(logger, not kwargs["no_capture_stdio"]):
env.do_delayed_imports(logger, test_paths)
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py
index 3c5c1dc2378..aea1c7380b1 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py
@@ -362,6 +362,7 @@ class OpenSSLEnvironment(object):
"-passin", "pass:%s" % self.password,
"-selfsign",
"-extensions", "v3_ca",
+ "-notext",
"-in", req_path,
"-out", cert_path)
diff --git a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
index 2ad9980dae5..31d20aed34c 100644
--- a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
@@ -10,7 +10,7 @@ idl_test(
['dom', 'html', 'permissions'],
idl_array => {
idl_array.add_objects({
- WakeLock: []
+ WakeLock: ['navigator.wakeLock'],
});
}
);
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal.https.any.js b/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal.https.any.js
deleted file mode 100644
index 671852f3c94..00000000000
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal.https.any.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// META: title=WakeLock.request() AbortSignal Test
-
-'use strict';
-
-promise_test(async t => {
- const invalidSignals = [
- "string",
- 123,
- {},
- true,
- Symbol(),
- () => {},
- self
- ];
-
- for (let signal of invalidSignals) {
- await promise_rejects(t, new TypeError(), WakeLock.request('system', { signal: signal }));
- }
-}, "'TypeError' is thrown when the signal option is not an AbortSignal");
-
-promise_test(t => {
- const abortController = new AbortController();
- const abortSignal = abortController.signal;
- abortController.abort();
- assert_true(abortSignal.aborted);
-
- return promise_rejects(t, "AbortError", WakeLock.request('system', { signal: abortSignal }));
-}, "A WakeLock request with an AbortSignal whose abort flag is set always aborts");
-
-promise_test(async t => {
- const abortController = new AbortController();
- const abortSignal = abortController.signal;
- abortController.abort();
- assert_true(abortSignal.aborted);
-
- const lock1 = WakeLock.request('system', { signal: abortSignal });
- const lock2 = WakeLock.request('system', { signal: abortSignal });
- const lock3 = WakeLock.request('system', { signal: abortSignal });
-
- await promise_rejects(t, "AbortError", lock1);
- await promise_rejects(t, "AbortError", lock2);
- await promise_rejects(t, "AbortError", lock3);
-}, "The same AbortSignal can be used to cause multiple wake locks to abort");
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js b/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js
index f0f1e38ddf9..ad6250e225d 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js
@@ -3,8 +3,8 @@ function getWakeLockObject(iframe, url) {
iframe.addEventListener(
"load",
() => {
- const { WakeLock } = iframe.contentWindow;
- resolve(WakeLock);
+ const { wakeLock } = iframe.contentWindow.navigator;
+ resolve(wakeLock);
},
{ once: true }
);
@@ -35,7 +35,7 @@ promise_test(async t => {
);
// We are done, so clean up.
iframe.remove();
-}, "WakeLock.request() aborts if the document is not active.");
+}, "navigator.wakeLock.request() aborts if the document is not active.");
promise_test(async t => {
// We nest two iframes and wait for them to load.
@@ -78,4 +78,4 @@ promise_test(async t => {
);
// We are done, so clean up.
outerIframe.remove();
-}, "WakeLock.request() aborts if the document is active, but not fully active.");
+}, "navigator.wakeLock.request() aborts if the document is active, but not fully active.");
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
index 0d451c98deb..07eeb3684d0 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
@@ -12,12 +12,12 @@
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
promise_test(t => {
- return promise_rejects(t, "NotAllowedError", WakeLock.request("screen"));
+ return promise_rejects(t, "NotAllowedError", navigator.wakeLock.request("screen"));
}, 'Feature-Policy header {"wake-lock" : []} disallows the top-level document.');
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
same_origin_src,
expect_feature_unavailable_default
@@ -26,7 +26,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html
index d7c12485e16..babd629ba74 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html
@@ -8,30 +8,20 @@
<script>
promise_test(async t => {
- const controller = new AbortController();
- const screenWakeLock = WakeLock.request('screen', { signal: controller.signal });
- const systemWakeLock = WakeLock.request('system', { signal: controller.signal });
- const systemWakeLockPromise = new Promise((resolve, reject) => {
- systemWakeLock.catch(error => {
- assert_equals("AbortError", error.name, "systemWakeLock must have been aborted");
- assert_false(document.hidden, "systemWakeLock must have been aborted after the page is visible again");
- resolve();
- });
- });
+ const screenWakeLock = await navigator.wakeLock.request('screen');
+ const screenWakeLockReleased =
+ new EventWatcher(t, screenWakeLock, "release").wait_for("release");
const eventWatcher = new EventWatcher(t, document, "visibilitychange");
await eventWatcher.wait_for("visibilitychange");
assert_true(document.hidden, "document is hidden after the visibilitychange event");
- await promise_rejects(t, "AbortError", screenWakeLock, "existing screen locks are aborted");
- await promise_rejects(t, "NotAllowedError", WakeLock.request('screen'),
+ await screenWakeLockReleased;
+ await promise_rejects(t, "NotAllowedError", navigator.wakeLock.request('screen'),
"new screen locks are not allowed when the page is not visible");
await eventWatcher.wait_for("visibilitychange");
assert_false(document.hidden, "document is no longer hidden after the visibilitychange event");
- controller.abort();
-
- return systemWakeLockPromise;
-}, "Test screen locks respect page visibility changes and system locks are unchanged");
+}, "Test screen locks respect page visibility changes");
</script>
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
index b27fbefa4ec..18a2d7c6ba2 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
@@ -12,9 +12,13 @@
const cross_origin_src =
base_src + "https://{{domains[www]}}:{{ports[https][0]}}" + relative_path;
+ // request() checks for both Feature Policy and permission, so the tests below
+ // can have inconsistent results due to the default permission a wake lock
+ // request might return.
+
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default,
@@ -24,7 +28,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default,
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
index 3897df6288e..5587a85d4b0 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
@@ -13,7 +13,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default,
@@ -23,7 +23,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_available_default,
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
index f4aaa73e0ef..8573f7aa63b 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
@@ -11,16 +11,17 @@
const cross_origin_src =
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
+ // request() checks for both Feature Policy and permission, so the tests below
+ // can have inconsistent results due to the default permission a wake lock
+ // request might return.
+
promise_test(t => {
- const controller = new AbortController();
- const lock = WakeLock.request("screen", { signal: controller.signal });
- controller.abort();
- return promise_rejects(t, "AbortError", lock);
+ return navigator.wakeLock.request('screen').then(lock => lock.release());
}, 'Feature-Policy header {"wake-lock" : ["*"]} allows the top-level document.');
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default
@@ -29,7 +30,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_available_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
index 19bf59d3688..308217022e1 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
@@ -12,16 +12,17 @@
const cross_origin_src =
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
+ // request() checks for both Feature Policy and permission, so the tests below
+ // can have inconsistent results due to the default permission a wake lock
+ // request might return.
+
promise_test(t => {
- const controller = new AbortController();
- const lock = WakeLock.request("screen", { signal: controller.signal });
- controller.abort();
- return promise_rejects(t, "AbortError", lock);
+ return navigator.wakeLock.request('screen').then(lock => lock.release());
}, 'Feature-Policy header wake-lock "self" allows the top-level document.');
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default
@@ -30,7 +31,7 @@
async_test(t => {
test_feature_availability(
- 'WakeLock.request("screen")',
+ 'navigator.wakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-screen-type-on-worker.https.worker.js b/tests/wpt/web-platform-tests/wake-lock/wakelock-screen-type-on-worker.https.worker.js
index 28e3394279c..5450fe5b35f 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-screen-type-on-worker.https.worker.js
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-screen-type-on-worker.https.worker.js
@@ -2,7 +2,7 @@
importScripts("/resources/testharness.js");
promise_test(t => {
- return promise_rejects(t, "NotAllowedError", WakeLock.request('screen'));
+ return promise_rejects(t, "NotAllowedError", navigator.wakeLock.request('screen'));
}, "Screen wake lock should not be allowed in dedicated worker");
done();
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-type.https.any.js b/tests/wpt/web-platform-tests/wake-lock/wakelock-type.https.any.js
index cc37c768272..62f59a75db2 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-type.https.any.js
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-type.https.any.js
@@ -1,7 +1,7 @@
-//META: title=WakeLock.request() with invalid type
+//META: title=navigator.wakeLock.request() with invalid type
promise_test(async t => {
- await promise_rejects(t, new TypeError(), WakeLock.request());
+ return promise_rejects(t, new TypeError(), navigator.wakeLock.request());
}, "'TypeError' is thrown when set an empty wake lock type");
promise_test(t => {
@@ -14,6 +14,6 @@ promise_test(t => {
true
];
return Promise.all(invalidTypes.map(invalidType => {
- return promise_rejects(t, new TypeError(), WakeLock.request(invalidType));
+ return promise_rejects(t, new TypeError(), navigator.wakeLock.request(invalidType));
}));
}, "'TypeError' is thrown when set an invalid wake lock type");
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
index 6515a7fdd02..19122112f59 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
@@ -23,13 +23,13 @@
assert_equals(message.records.length, 1, 'one text record');
assert_equals(message.records[0].recordType, 'text', 'messageType');
assert_equals(message.records[0].mediaType, 'text/plain', 'mediaType');
- assert_true(typeof message.records[0].toText() === 'string');
- assert_equals(message.records[0].toText(), test_text_data,
- 'toText() contains the same text content');
- assert_equals(message.records[0].toArrayBuffer(), null,
- 'toArrayBuffer() returns null');
- assert_equals(message.records[0].toJSON(), null,
- 'toJSON() returns null');
+ assert_true(typeof message.records[0].text() === 'string');
+ assert_equals(message.records[0].text(), test_text_data,
+ 'text() contains the same text content');
+ assert_equals(message.records[0].arrayBuffer(), null,
+ 'arrayBuffer() returns null');
+ assert_equals(message.records[0].json(), null,
+ 'json() returns null');
}, 'NDEFMessage constructor with a text record');
</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
index 7a0da33a543..849a6ae336e 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
@@ -20,16 +20,16 @@
const record = new NDEFRecord(createTextRecord(test_text_data));
assert_equals(record.recordType, 'text', 'recordType');
assert_equals(record.mediaType, 'text/plain', 'mediaType');
- assert_equals(record.toText(), test_text_data,
- 'toText() has the same content with the original dictionary');
+ assert_equals(record.text(), test_text_data,
+ 'text() has the same content with the original dictionary');
}, 'NDEFRecord constructor with text record type');
test(() => {
const record = new NDEFRecord(createUrlRecord(test_url_data));
assert_equals(record.recordType, 'url', 'recordType');
assert_equals(record.mediaType, 'text/plain', 'mediaType');
- assert_equals(record.toText(), test_url_data,
- 'toText() has the same content with the original dictionary');
+ assert_equals(record.text(), test_url_data,
+ 'text() has the same content with the original dictionary');
}, 'NDEFRecord constructor with url record type');
test(() => {
@@ -41,28 +41,28 @@
assert_equals(record.recordType, 'opaque', 'recordType');
assert_equals(record.mediaType, 'application/octet-stream', 'mediaType');
- const data_1 = record.toArrayBuffer();
+ const data_1 = record.arrayBuffer();
assert_true(data_1 instanceof ArrayBuffer);
- assert_not_equals(data_1, buffer, 'toArrayBuffer() returns a new object');
+ assert_not_equals(data_1, buffer, 'arrayBuffer() returns a new object');
assert_array_equals(new Uint8Array(data_1), original_data,
- 'toArrayBuffer() has the same content with the original buffer');
+ 'arrayBuffer() has the same content with the original buffer');
- const data_2 = record.toArrayBuffer();
+ const data_2 = record.arrayBuffer();
assert_true(data_2 instanceof ArrayBuffer);
assert_not_equals(data_2, data_1,
- 'toArrayBuffer() again returns another new object');
+ 'arrayBuffer() again returns another new object');
assert_array_equals(new Uint8Array(data_2), original_data,
- 'toArrayBuffer() has the same content with the original buffer');
+ 'arrayBuffer() has the same content with the original buffer');
buffer_view.set([4, 3, 2, 1]);
- const data_3 = record.toArrayBuffer();
+ const data_3 = record.arrayBuffer();
assert_true(data_3 instanceof ArrayBuffer);
assert_array_equals(new Uint8Array(data_1), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
assert_array_equals(new Uint8Array(data_2), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
assert_array_equals(new Uint8Array(data_3), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
}, 'NDEFRecord constructor with opaque record type');
test(() => {
@@ -70,18 +70,18 @@
assert_equals(record.recordType, 'json', 'recordType');
assert_equals(record.mediaType, 'application/json', 'mediaType');
- const data_1 = record.toJSON();
+ const data_1 = record.json();
assert_true(typeof data_1 === 'object');
- assert_not_equals(data_1, test_json_data, 'toJSON() returns a new object');
+ assert_not_equals(data_1, test_json_data, 'json() returns a new object');
assert_object_equals(data_1, test_json_data,
- 'toJSON() has the same content with the original dictionary');
+ 'json() has the same content with the original dictionary');
- const data_2 = record.toJSON();
+ const data_2 = record.json();
assert_true(typeof data_2 === 'object');
assert_not_equals(data_2, data_1,
- 'toJSON() again returns another new object');
+ 'json() again returns another new object');
assert_object_equals(data_2, test_json_data,
- 'toJSON() has the same content with the original dictionary');
+ 'json() has the same content with the original dictionary');
}, 'NDEFRecord constructor with JSON record type');
test(() => {
@@ -93,28 +93,28 @@
assert_equals(record.recordType, 'foo.example.com:bAr*-', 'recordType');
assert_equals(record.mediaType, 'application/octet-stream', 'mediaType');
- const data_1 = record.toArrayBuffer();
+ const data_1 = record.arrayBuffer();
assert_true(data_1 instanceof ArrayBuffer);
- assert_not_equals(data_1, buffer, 'toArrayBuffer() returns a new object');
+ assert_not_equals(data_1, buffer, 'arrayBuffer() returns a new object');
assert_array_equals(new Uint8Array(data_1), original_data,
- 'toArrayBuffer() has the same content with the original buffer');
+ 'arrayBuffer() has the same content with the original buffer');
- const data_2 = record.toArrayBuffer();
+ const data_2 = record.arrayBuffer();
assert_true(data_2 instanceof ArrayBuffer);
assert_not_equals(data_2, data_1,
- 'toArrayBuffer() again returns another new object');
+ 'arrayBuffer() again returns another new object');
assert_array_equals(new Uint8Array(data_2), original_data,
- 'toArrayBuffer() has the same content with the original buffer');
+ 'arrayBuffer() has the same content with the original buffer');
buffer_view.set([4, 3, 2, 1]);
- const data_3 = record.toArrayBuffer();
+ const data_3 = record.arrayBuffer();
assert_true(data_3 instanceof ArrayBuffer);
assert_array_equals(new Uint8Array(data_1), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
assert_array_equals(new Uint8Array(data_2), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
assert_array_equals(new Uint8Array(data_3), original_data,
- 'Modifying the original buffer does not affect toArrayBuffer() content');
+ 'Modifying the original buffer does not affect arrayBuffer() content');
}, 'NDEFRecord constructor with external record type');
test(() => {
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader-document-hidden-manual.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader-document-hidden-manual.https.html
new file mode 100644
index 00000000000..6d9a52c1ecf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader-document-hidden-manual.https.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<title>NFCReader.onreading respect page visibility changes</title>
+<link rel="help" href="https://w3c.github.io/web-nfc/#visible-document">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+promise_test(async t => {
+ const reader = new NFCReader();
+ reader.scan();
+ const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
+
+ return await new Promise((resolve, reject) => {
+ readerWatcher.wait_for("reading").then(event => {
+ if (document.hidden) reject();
+ resolve();
+ });
+ });
+}, "Test NFCReader.onreading is not fired when document is hidden");
+
+</script>
+
+<p>Step1: switch the page to the background, then tap a formatted NFC tag.</p>
+<p>Step2: switch back to the page, then tap the tag again.</p>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCWriter-document-hidden-manual.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCWriter-document-hidden-manual.https.html
new file mode 100644
index 00000000000..72d8c8143cd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCWriter-document-hidden-manual.https.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<title>NFCWriter.push respect page visibility changes</title>
+<link rel="help" href="https://w3c.github.io/web-nfc/#visible-document">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/nfc-helpers.js"></script>
+<script>
+
+promise_test(async t => {
+ const writer = new NFCWriter();
+ const p1 = writer.push(test_text_data);
+
+ return await new Promise((resolve, reject) => {
+ p1.then(() => {
+ assert_false(document.hidden);
+ resolve();
+ }).catch(e => {
+ reject();
+ });
+ });
+}, "Test NFCWriter.push operation should be suspend when document is not visible");
+
+</script>
+
+<p>Step1: switch the page to the background, then tap an NFC tag.</p>
+<p>Step2: switch back to the page, then tap the tag again.</p>
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index bace1b3752f..ed5cc9c9718 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -152,17 +152,17 @@ function assertWebNDEFMessagesEqual(message, expectedMessage) {
assert_equals(record.mediaType, expectedRecord.mediaType);
// Compares record data
- assert_equals(record.toText(), expectedRecord.toText());
- assert_array_equals(new Uint8Array(record.toArrayBuffer()),
- new Uint8Array(expectedRecord.toArrayBuffer()));
+ assert_equals(record.text(), expectedRecord.text());
+ assert_array_equals(new Uint8Array(record.arrayBuffer()),
+ new Uint8Array(expectedRecord.arrayBuffer()));
let json;
try {
- json = record.toJSON();
+ json = record.json();
} catch (e) {
}
let expectedJson;
try {
- expectedJson = expectedRecord.toJSON();
+ expectedJson = expectedRecord.json();
} catch (e) {
}
if (json === undefined || json === null)
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js
index 522c5798ba7..e8f7b0ad787 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js
@@ -1,2 +1,3 @@
// Import a remote origin script.
-import('https://{{domains[www1]}}:{{ports[https][0]}}/workers/modules/resources/referrer-checker.py');
+import('https://{{domains[www1]}}:{{ports[https][0]}}/workers/modules/resources/referrer-checker.py')
+ .catch(error => postMessage(`Import failed: ${error}`));
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js
index 1d68624c3cb..a1c4eeae141 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js
@@ -1 +1,2 @@
-import('./referrer-checker.py');
+import('./referrer-checker.py')
+ .catch(error => postMessage(`Import failed: ${error}`));
diff --git a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
index 0e7c48f1481..436b6e96fe7 100644
--- a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
+++ b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
@@ -1,4 +1,5 @@
[canvas-resizing-with-pbo-bound.html]
+ expected: TIMEOUT
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL