aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini4
-rw-r--r--tests/wpt/metadata/MANIFEST.json349
-rw-r--r--tests/wpt/metadata/css/css-text/line-breaking/line-breaking-013.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/line-breaking/line-breaking-014.html.ini2
-rw-r--r--tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini36
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/forms/textfieldselection/selection-start-end-extra.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/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml2
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/stateful-animator.https.html162
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-size-multicol-as-flex-item.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-001-manual.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-002-manual.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-003-manual.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-004-manual.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040-manual.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040a-manual.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-041-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-044-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-045-manual.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-046a-manual.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048-manual.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048a-manual.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-049-manual.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-082-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-085-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097a-manual.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-013.html60
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-014.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/line-breaking/reference/line-breaking-013-ref.html41
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html29
-rw-r--r--tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra.html36
-rw-r--r--tests/wpt/web-platform-tests/interfaces/wake-lock.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl3
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl9
-rw-r--r--tests/wpt/web-platform-tests/url/resources/urltestdata.json16
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html138
53 files changed, 1900 insertions, 88 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 76b398963ae..dd4ffcf4345 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
@@ -1,5 +1,4 @@
[url-in-tags-revoke.window.html]
- expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
@@ -15,6 +14,3 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: FAIL
- [Fetching a blob URL immediately before revoking it works in <script> tags.]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index df93c43600a..6870675a9a9 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -8773,12 +8773,174 @@
{}
]
],
+ "css/css-text-decor/text-decoration-line-001-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-001-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-002-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-002-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-003-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-003-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-004-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-004-manual.html",
+ {}
+ ]
+ ],
"css/css-text-decor/text-decoration-line-014.xht": [
[
"css/css-text-decor/text-decoration-line-014.xht",
{}
]
],
+ "css/css-text-decor/text-decoration-line-040-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-040-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-040a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-040a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-041-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-041-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-044-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-044-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-045-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-045-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-046a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-046a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-048-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-048-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-048a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-048a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-049-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-049-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-082-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-082-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-085-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-085-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-090-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-090-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-090a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-090a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-091-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-091-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-091a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-091a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-092-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-092-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-092a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-092a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-095-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-095-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-095a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-095a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-096-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-096-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-096a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-096a-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-097-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-097-manual.html",
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-decoration-line-097a-manual.html": [
+ [
+ "css/css-text-decor/text-decoration-line-097a-manual.html",
+ {}
+ ]
+ ],
"css/css-text/hanging-punctuation/hanging-punctuation-allow-end-001.xht": [
[
"css/css-text/hanging-punctuation/hanging-punctuation-allow-end-001.xht",
@@ -141941,6 +142103,30 @@
{}
]
],
+ "css/css-text/line-breaking/line-breaking-013.html": [
+ [
+ "css/css-text/line-breaking/line-breaking-013.html",
+ [
+ [
+ "/css/css-text/line-breaking/reference/line-breaking-013-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/line-breaking/line-breaking-014.html": [
+ [
+ "css/css-text/line-breaking/line-breaking-014.html",
+ [
+ [
+ "/css/css-text/line-breaking/reference/line-breaking-013-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/line-breaking/line-breaking-ic-001.html": [
[
"css/css-text/line-breaking/line-breaking-ic-001.html",
@@ -275052,6 +275238,11 @@
{}
]
],
+ "css/css-text/line-breaking/reference/line-breaking-013-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/line-breaking/reference/line-breaking-ic-001-ref.html": [
[
{}
@@ -346422,6 +346613,12 @@
{}
]
],
+ "animation-worklet/stateful-animator.https.html": [
+ [
+ "animation-worklet/stateful-animator.https.html",
+ {}
+ ]
+ ],
"animation-worklet/worklet-animation-creation.https.html": [
[
"animation-worklet/worklet-animation-creation.https.html",
@@ -353627,6 +353824,12 @@
{}
]
],
+ "css/css-contain/contain-size-multicol-as-flex-item.html": [
+ [
+ "css/css-contain/contain-size-multicol-as-flex-item.html",
+ {}
+ ]
+ ],
"css/css-contain/inheritance.html": [
[
"css/css-contain/inheritance.html",
@@ -474107,7 +474310,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "b0a60cf98816141332d91ec1027c8a39bd2a6be7",
+ "aff69297b39caef1c35fd77aac4ef941da5bdbb0",
"support"
],
".codecov.yml": [
@@ -482122,6 +482325,10 @@
"761e66e7d76f4aaf64c7744d0d04a06e3ba16cd1",
"testharness"
],
+ "animation-worklet/stateful-animator.https.html": [
+ "c4b6301fd9dc2e5cf021cb79ddb05032679010f9",
+ "testharness"
+ ],
"animation-worklet/worklet-animation-cancel-ref.html": [
"d44927374703ef2b38d3ed0c9570609b62baec65",
"support"
@@ -574786,6 +574993,10 @@
"81465c02d6114aa4a27637b2e77b3d62161c0864",
"reftest"
],
+ "css/css-contain/contain-size-multicol-as-flex-item.html": [
+ "19aa12262f9a7dc35f3682b1f7baa3c12949a906",
+ "testharness"
+ ],
"css/css-contain/contain-size-replaced-001.html": [
"b0dba02f1cd56f4fccc772cfb948dbabb1d600e2",
"reftest"
@@ -602374,6 +602585,22 @@
"fd5bc5da3a800a7f7e97211e8cb2438bfdc0c462",
"reftest"
],
+ "css/css-text-decor/text-decoration-line-001-manual.html": [
+ "76a8f5401494b508b14fc5cc19f07108f53b12a1",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-002-manual.html": [
+ "0e41fd1fcfe713c4b63f7c3d8ed34ea6aee1fe71",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-003-manual.html": [
+ "2e94e8e946b553c02e9c09460723afdc93e741dc",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-004-manual.html": [
+ "5c6da02d1e0e3aa097120a2da527139e9cfdbe3b",
+ "manual"
+ ],
"css/css-text-decor/text-decoration-line-010.xht": [
"f4b16e32aa185d204c1793f9ca1b0eda502c60fd",
"reftest"
@@ -602394,6 +602621,98 @@
"7d5f0570b324b81761a1b5dfdc24e3bcc5b66869",
"manual"
],
+ "css/css-text-decor/text-decoration-line-040-manual.html": [
+ "c93f4b99084a9c8f54dee6130493c3cc631b434a",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-040a-manual.html": [
+ "5020a1fd118ea0e8bd81994c4e38449b2b33826a",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-041-manual.html": [
+ "7c7c920e990688518acab7aeb054ef713d36f36e",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-044-manual.html": [
+ "2d9048d3d1d5e5a5d97ea3127ae08f38054f9b1e",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-045-manual.html": [
+ "b9d688387569958283f24c3811cd97d8210a48bb",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-046a-manual.html": [
+ "67f2b89ea23576cf51a8654859f5d9d47a8215fc",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-048-manual.html": [
+ "f3a6e137e2d7ae5bc9ab3e930392a7c347661cd5",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-048a-manual.html": [
+ "9bd48defaf03432a5e0acddd4d68aa81a7ea20c4",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-049-manual.html": [
+ "31f9aa762183f604bbdb5964b79052084a1c7f40",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-082-manual.html": [
+ "c4425f90729ca688bd38283a8e5dc1ea42806e49",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-085-manual.html": [
+ "88a5fc02a048dfc12aa981938379c50c59675570",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-090-manual.html": [
+ "f4484c0ee282bb8bdcfc5130a7275a3878fe2cbc",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-090a-manual.html": [
+ "e98688521ffcc4508befe9b9dc019339d6f9c08b",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-091-manual.html": [
+ "94405c0362bc231c2092401fbd066d291a63fed9",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-091a-manual.html": [
+ "e1ba036c257eb4bc4670c3856f86381146641cf0",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-092-manual.html": [
+ "4dffcf6a00efffdfdb042f28cb5994be029fbf00",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-092a-manual.html": [
+ "7f803a35f1603795a6709ee052cd9e544dfabd3d",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-095-manual.html": [
+ "62ca5d1a19e40dfa59fadf8353629686de0894d1",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-095a-manual.html": [
+ "f5bab19374f94fe60c07f7742222ec27180d5881",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-096-manual.html": [
+ "01eaf87875b47897164e7407c01aba59024f7e19",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-096a-manual.html": [
+ "233006c904ebc8568ca18547f48749315847727a",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-097-manual.html": [
+ "9502b2367aca0bae91d2cac7ace69a2dfcd8e96d",
+ "manual"
+ ],
+ "css/css-text-decor/text-decoration-line-097a-manual.html": [
+ "e037e15d73c445a72bd81e5fd4971c9e17eba456",
+ "manual"
+ ],
"css/css-text-decor/text-decoration-line-recalc.html": [
"321aea9f3d93f31685878a14bfc67f9c3e9cf63e",
"reftest"
@@ -605002,6 +605321,14 @@
"08f956c9166df4770cdd1d2d60aac9c8acd675d2",
"reftest"
],
+ "css/css-text/line-breaking/line-breaking-013.html": [
+ "448a41d88f1ff099866f1597edec3ebf5128ecb6",
+ "reftest"
+ ],
+ "css/css-text/line-breaking/line-breaking-014.html": [
+ "ea9956362beecb2da890dbef24362a6e9a8be905",
+ "reftest"
+ ],
"css/css-text/line-breaking/line-breaking-ic-001.html": [
"6cfe6f86a452c19eae31a076710f02dfc8c4ec4e",
"reftest"
@@ -605022,6 +605349,10 @@
"463dc2287ea251750e0c542873011c9c8707dd30",
"support"
],
+ "css/css-text/line-breaking/reference/line-breaking-013-ref.html": [
+ "816015adeab54895037530b8e4d410f81082931f",
+ "support"
+ ],
"css/css-text/line-breaking/reference/line-breaking-ic-001-ref.html": [
"421002818f6d5f9837c5de3967a1c3d7b441244f",
"support"
@@ -640487,7 +640818,7 @@
"testharness"
],
"dom/events/Event-dispatch-on-disabled-elements.html": [
- "72e63c4d1e97f1113dd7db357921fd1b0ab9372b",
+ "361006a7240496e9be747faca5056fe2a62a2cff",
"testharness"
],
"dom/events/Event-dispatch-order.html": [
@@ -640611,7 +640942,7 @@
"testharness"
],
"dom/events/EventTarget-dispatchEvent.html": [
- "1a8bf3de915d5cb8c608ecdef69511d4dbffe113",
+ "8a0d7353bc62ba8330069fef4c71a0e33321b0aa",
"testharness"
],
"dom/events/EventTarget-removeEventListener.html": [
@@ -662211,7 +662542,7 @@
"testharness"
],
"html/semantics/forms/textfieldselection/selection-start-end-extra.html": [
- "af51354035c5cae33d35cbff03e2eed5d5359f85",
+ "e76f5f6ea70c2ba769fe6a75e9aa1c95d98e2760",
"testharness"
],
"html/semantics/forms/textfieldselection/selection-start-end.html": [
@@ -669347,7 +669678,7 @@
"support"
],
"interfaces/wake-lock.idl": [
- "202dc6b09f7e6aa56289b62bb810ed0fb2e289d0",
+ "4c11b695f49986e7e9852348f21fe9bd5e68d185",
"support"
],
"interfaces/wasm-js-api.idl": [
@@ -669403,7 +669734,7 @@
"support"
],
"interfaces/webrtc-stats.idl": [
- "0992b341e1fe3cede699c09eeb5838bd1e7a3999",
+ "d9d20191ad851f4b6d85cd09e8a53b8697bc840e",
"support"
],
"interfaces/webrtc.idl": [
@@ -669419,7 +669750,7 @@
"support"
],
"interfaces/webxr.idl": [
- "8a3264073e8268282c3db6a891b860d57bfcdb28",
+ "4c74fdac384299ed22a9b9244411c3755a8741db",
"support"
],
"interfaces/worklets.idl": [
@@ -710559,7 +710890,7 @@
"support"
],
"url/resources/urltestdata.json": [
- "26b8ea2e0bc9a166deef8af1a0df87e0a7e0fda4",
+ "bf4e2a7833d17fab604eb634051e627887fe936a",
"support"
],
"url/toascii.window.js": [
@@ -715711,7 +716042,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-onnegotiationneeded.html": [
- "f7bf8bd3e3bdc24c63a92da22eaae77b95f0d4fd",
+ "336b100de058200ab49400fac9ae00f8524b9da9",
"testharness"
],
"webrtc/RTCPeerConnection-onsignalingstatechanged.https.html": [
diff --git a/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-013.html.ini b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-013.html.ini
new file mode 100644
index 00000000000..e6270623da9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-013.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-013.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-014.html.ini b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-014.html.ini
new file mode 100644
index 00000000000..d9ffea5b5ee
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-breaking/line-breaking-014.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-014.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini
index cdf64e987c2..aec746ae879 100644
--- a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini
+++ b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini
@@ -36,3 +36,6 @@
[If the event's initialized flag is not set, an InvalidStateError must be thrown (WheelEvent).]
expected: FAIL
+ [Capturing event listeners should be called before non-capturing ones]
+ 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 b9facf16b81..005878525f0 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -22,7 +22,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/plain */*;charset=gbk]
- expected: TIMEOUT
+ expected: FAIL
[fetch(): separate response Content-Type: text/html;x=" text/plain]
expected: NOTRUN
@@ -163,7 +163,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" " text/plain]
- expected: TIMEOUT
+ expected: FAIL
[Request: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
expected: NOTRUN
@@ -172,7 +172,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
- expected: TIMEOUT
+ expected: FAIL
[Response: combined response Content-Type: text/html;x=" text/plain]
expected: NOTRUN
@@ -202,7 +202,7 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" " text/plain]
- expected: TIMEOUT
+ expected: FAIL
[fetch(): separate response Content-Type: text/plain */*;charset=gbk]
expected: NOTRUN
@@ -286,7 +286,7 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
- expected: TIMEOUT
+ expected: FAIL
[fetch(): combined response Content-Type: text/html;" " text/plain]
expected: NOTRUN
@@ -310,32 +310,8 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
- expected: TIMEOUT
-
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
- expected: TIMEOUT
-
- [<iframe>: combined response Content-Type: text/html;" text/plain]
- expected: TIMEOUT
-
- [<iframe>: combined response Content-Type: text/html */*]
- expected: TIMEOUT
-
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: TIMEOUT
-
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
- expected: TIMEOUT
+ expected: FAIL
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
- expected: TIMEOUT
-
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
- expected: TIMEOUT
-
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..536384f36e1 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [X-Content-Type-Options%3A%20%2Cnosniff]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
deleted file mode 100644
index 385376c7321..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_4.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/forms/textfieldselection/selection-start-end-extra.html.ini b/tests/wpt/metadata/html/semantics/forms/textfieldselection/selection-start-end-extra.html.ini
index f4b8503325f..3e87a254e39 100644
--- a/tests/wpt/metadata/html/semantics/forms/textfieldselection/selection-start-end-extra.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/textfieldselection/selection-start-end-extra.html.ini
@@ -14,6 +14,6 @@
[Setting value to a shorter string than defaultValue should correct the cursor position]
expected: FAIL
- [Shortening value by turning the input type into 'color' and back to 'text' should correct selection{Start,End}]
+ [Removing child nodes in non-dirty textarea should make selection{Start,End} 0]
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/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 b0a60cf9881..aff69297b39 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -186,7 +186,7 @@ jobs:
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- - script: python ./wpt run --no-manifest-update --no-fail-on-unexpected --install-fonts --webdriver-arg=--verbose --test-types reftest testharness --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edge_webdriver
+ - script: python ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --webdriver-arg=--verbose --test-types reftest testharness --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edge_webdriver
displayName: 'Run tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
diff --git a/tests/wpt/web-platform-tests/animation-worklet/stateful-animator.https.html b/tests/wpt/web-platform-tests/animation-worklet/stateful-animator.https.html
new file mode 100644
index 00000000000..c4b6301fd9d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/stateful-animator.https.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<title>Basic use of stateful animator</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<script src="common.js"></script>
+
+<div id="target"></div>
+
+<script id="stateful_animator_basic" type="text/worklet">
+ registerAnimator("stateful_animator_basic", class {
+ constructor(options, state = { test_local_time: 0 }) {
+ this.test_local_time = state.test_local_time;
+ }
+ animate(currentTime, effect) {
+ effect.localTime = this.test_local_time++;
+ }
+ state() {
+ return {
+ test_local_time: this.test_local_time
+ };
+ }
+ });
+</script>
+
+<script id="stateless_animator_basic" type="text/worklet">
+ registerAnimator("stateless_animator_basic", class {
+ constructor(options, state = { test_local_time: 0 }) {
+ this.test_local_time = state.test_local_time;
+ }
+ animate(currentTime, effect) {
+ effect.localTime = this.test_local_time++;
+ }
+ // Unless a valid state function is provided, the animator is considered
+ // stateless. e.g. animator with incorrect state function name.
+ State() {
+ return {
+ test_local_time: this.test_local_time
+ };
+ }
+ });
+</script>
+
+<script id="state_function_returns_empty" type="text/worklet">
+ registerAnimator("state_function_returns_empty", class {
+ constructor(options, state = { test_local_time: 0 }) {
+ this.test_local_time = state.test_local_time;
+ }
+ animate(currentTime, effect) {
+ effect.localTime = this.test_local_time++;
+ }
+ state() {}
+ });
+</script>
+
+<script id="state_function_returns_not_serializable" type="text/worklet">
+ registerAnimator("state_function_returns_not_serializable", class {
+ constructor(options) {
+ this.test_local_time = 0;
+ }
+ animate(currentTime, effect) {
+ effect.localTime = this.test_local_time++;
+ }
+ state() {
+ return new Error('foo');
+ }
+ });
+</script>
+
+<script>
+ async function localTimeDoesNotUpdate(animation) {
+ // The local time stops increasing after the animator instance being dropped.
+ // e.g. 0, 1, 2, .., n, n, n, n, .. where n is the frame that the global
+ // scope switches at.
+ let last_local_time = animation.effect.getComputedTiming().localTime;
+ let frame_count = 0;
+ const FRAMES_WITHOUT_CHANGE = 10;
+ do {
+ await new Promise(window.requestAnimationFrame);
+ let current_local_time = animation.effect.getComputedTiming().localTime;
+ if (last_local_time == current_local_time)
+ ++frame_count;
+ else
+ frame_count = 0;
+ last_local_time = current_local_time;
+ } while (frame_count < FRAMES_WITHOUT_CHANGE);
+ }
+
+ async function localTimeResetsToZero(animation) {
+ // The local time is reset upon global scope switching. e.g.
+ // 0, 1, 2, .., 0, 1, 2, .., 0, 1, 2, .., 0, 1, 2, ...
+ let reset_count = 0;
+ const LOCAL_TIME_RESET_CHECK = 3;
+ do {
+ await new Promise(window.requestAnimationFrame);
+ if (0 == animation.effect.getComputedTiming().localTime)
+ ++reset_count;
+ } while (reset_count < LOCAL_TIME_RESET_CHECK);
+ }
+
+ promise_test(async t => {
+ await runInAnimationWorklet(document.getElementById('stateful_animator_basic').textContent);
+ const target = document.getElementById('target');
+ const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 });
+ const animation = new WorkletAnimation('stateful_animator_basic', effect);
+ animation.play();
+
+ // effect.localTime should be correctly increased upon global scope
+ // switches for stateful animators.
+ const EXPECTED_FRAMES_TO_A_SCOPE_SWITCH = 15;
+ await waitForAnimationFrameWithCondition(_ => {
+ return animation.effect.getComputedTiming().localTime ==
+ EXPECTED_FRAMES_TO_A_SCOPE_SWITCH;
+ });
+
+ animation.cancel();
+ }, "Stateful animator can use its state to update the animation. Pass if test does not timeout");
+
+ promise_test(async t => {
+ await runInAnimationWorklet(document.getElementById('stateless_animator_basic').textContent);
+ const target = document.getElementById('target');
+ const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 });
+ const animation = new WorkletAnimation('stateless_animator_basic', effect);
+ animation.play();
+
+ // The local time should be reset to 0 upon global scope switching for
+ // stateless animators.
+ await localTimeResetsToZero(animation);
+
+ animation.cancel();
+ }, "Stateless animator gets reecreated with 'undefined' state.");
+
+ promise_test(async t => {
+ await runInAnimationWorklet(document.getElementById('state_function_returns_empty').textContent);
+ const target = document.getElementById('target');
+ const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 });
+ const animation = new WorkletAnimation('state_function_returns_empty', effect);
+ animation.play();
+
+ // The local time should be reset to 0 upon global scope switching for
+ // stateless animators.
+ await localTimeResetsToZero(animation);
+
+ animation.cancel();
+ }, "Stateful animator gets recreated with 'undefined' state if state function returns undefined.");
+
+ promise_test(async t => {
+ await runInAnimationWorklet(document.getElementById('state_function_returns_not_serializable').textContent);
+ const target = document.getElementById('target');
+ const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000, iteration: Infinity });
+ const animation = new WorkletAnimation('state_function_returns_not_serializable', effect);
+ animation.play();
+
+ // The local time of an animation increases until the registered animator
+ // gets removed.
+ await localTimeDoesNotUpdate(animation);
+
+ animation.cancel();
+ }, "Stateful Animator instance gets dropped (does not get migrated) if state function is not serializable.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-size-multicol-as-flex-item.html b/tests/wpt/web-platform-tests/css/css-contain/contain-size-multicol-as-flex-item.html
new file mode 100644
index 00000000000..19aa12262f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-contain/contain-size-multicol-as-flex-item.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=863454">
+<style>
+ #flex {
+ display: flex;
+ }
+
+ #multicol {
+ columns: 3;
+ min-width: 0;
+ column-gap: 50px;
+ contain:size;
+ height:100px;
+ background:green;
+ }
+</style>
+<p>There should be a green square below.</p>
+<div id="flex">
+ <div id="multicol" data-expected-width="100" data-expected-height="100">
+ <div style="width:1000px; height:1px;"></div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+ checkLayout("#flex");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-001-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-001-manual.html
new file mode 100644
index 00000000000..76a8f540149
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-001-manual.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line at or under the alphabetic baseline">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}
+</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line at or under the alphabetic baseline.</p>
+<div id="htmlsrc">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-002-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-002-manual.html
new file mode 100644
index 00000000000..0e41fd1fcfe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-002-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline</title>
+<meta name="assert" content="text-decoration-line:overline; there is an overline">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is an overline.</p>
+<div id="htmlsrc">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-003-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-003-manual.html
new file mode 100644
index 00000000000..2e94e8e946b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-003-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a solid line through the centre of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a solid line through the centre of the characters.</p>
+<div id="htmlsrc">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-004-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-004-manual.html
new file mode 100644
index 00000000000..5c6da02d1e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-004-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline overline</title>
+<meta name="assert" content="text-decoration-line:underline overline; there is an overline and an underline">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is an overline and an underline.</p>
+<div id="htmlsrc">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040-manual.html
new file mode 100644
index 00000000000..c93f4b99084
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040-manual.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline tbrl hor scripts</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: vertical-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters for all lines.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040a-manual.html
new file mode 100644
index 00000000000..5020a1fd118
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-040a-manual.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline tbrl mixed</title>
+<meta name="assert" content="text-decoration-line:underline; there is an unbroken line to the LEFT of the characters for each lines">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 3.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div p {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is an unbroken line to the LEFT of the characters for all lines.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="zh">引发<span lang="en">quick brown fox</span>网络<span lang="ar">جهانی سازیم</span>的全<span lang="my">အပြည်ပြည်</span>部潜<span lang="th">ปิ้งอยู่ในถ้ำ</span>能引<span lang="bo">འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་</span>發網<span lang="hi">विश्वव्यापी बना रहें हैं絡</span>的全<span lang="ja">部潛能</span></p>
+</div>
+</div>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-041-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-041-manual.html
new file mode 100644
index 00000000000..7c7c920e990
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-041-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline tbrl (zh)</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the LEFT of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="zh"><span>引发网络的全部潜能引發網絡的全部潛能</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-044-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-044-manual.html
new file mode 100644
index 00000000000..2d9048d3d1d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-044-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline tbrl hor scripts</title>
+<meta name="assert" content="text-decoration-line-line:overline; there is a line to the RIGHT of the characters for horizontal scripts set vertically using writing-mode: vertical-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters for all lines.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-045-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-045-manual.html
new file mode 100644
index 00000000000..b9d68838756
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-045-manual.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline tbrl (zh)</title>
+<meta name="assert" content="text-decoration-line-line:overline; there is a line to the RIGHT of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+<div>
+<p lang="zh"><span>引发网络的全部潜能引發網絡的全部潛能</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-046a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-046a-manual.html
new file mode 100644
index 00000000000..67f2b89ea23
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-046a-manual.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline tbrl mixed</title>
+<meta name="assert" content="text-decoration-line-line:overline; there is an unbroken line to the RIGHT of the characters for all lines">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 3.5;
+ }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div p {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is an unbroken line to the RIGHT of the characters for each line.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="zh">引发<span lang="en">quick brown fox</span>网络<span lang="ar">جهانی سازیم</span>的全<span lang="my">အပြည်ပြည်</span>部潜<span lang="th">ปิ้งอยู่ในถ้ำ</span>能引<span lang="bo">འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་</span>發網<span lang="hi">विश्वव्यापी बना रहें हैं絡</span>的全<span lang="ja">部潛能</span></p>
+</div>
+</div>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048-manual.html
new file mode 100644
index 00000000000..f3a6e137e2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048-manual.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through vertical-rl</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a solid vertical line through the centre of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a solid vertical line through the centre of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="zh"><span>引发网络的全部潜能引發網絡的全部潛能</span></p>
+<p lang="ja"><span>可能性を最大限に導き出すために</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048a-manual.html
new file mode 100644
index 00000000000..9bd48defaf0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-048a-manual.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through vertical-rl hor scripts</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a solid vertical line through the centre of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a solid vertical line through the centre of the characters.<br/><span class="hint">Skip the test if the text the text fails for the Chinese line, or is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+
+<div>
+<p lang="zh"><span>引发网络的全部潜能引發網絡的全部潛能</span></p>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-049-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-049-manual.html
new file mode 100644
index 00000000000..31f9aa76218
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-049-manual.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line vertical-rl over+under</title>
+<meta name="assert" content="text-decoration-line:underline overline; there is a vertical line on both sides of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a vertical line on both sides of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-rl">
+<div>
+<p lang="zh"><span>引发网络的全部潜能引發網絡的全部潛能</span></p>
+<p lang="ja"><span>可能性を最大限に導き出すために</span></p>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-082-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-082-manual.html
new file mode 100644
index 00000000000..c4425f90729
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-082-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline overline tblr</title>
+<meta name="assert" content="text-decoration-line:underline overline; there is a line on both sides of the characters">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line on both sides of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-lr">
+<div>
+<p lang="mn"><span>ᠣᠯᠠᠨ ᠦᠨᠳᠦᠰᠦᠲᠡᠨ ᠦ ᠪᠣᠯᠭᠠᠬᠤ ᠦᠢᠯᠡ ᠠᠵᠢᠯᠯᠠᠭ᠎ᠠ</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-085-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-085-manual.html
new file mode 100644
index 00000000000..88a5fc02a04
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-085-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through tblr</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a solid vertical line through the centre of the characters.">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+:lang(mn) { font-family: "Mongolian Baiti", "Noto sans Mongolian", serif; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a solid vertical line through the centre of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:vertical-lr">
+<div>
+<p lang="mn"><span>ᠣᠯᠠᠨ ᠦᠨᠳᠦᠰᠦᠲᠡᠨ ᠦ ᠪᠣᠯᠭᠠᠬᠤ ᠦᠢᠯᠡ ᠠᠵᠢᠯᠯᠠᠭ᠎ᠠ</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090-manual.html
new file mode 100644
index 00000000000..f4484c0ee28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline sideways-rl</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090a-manual.html
new file mode 100644
index 00000000000..e98688521ff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-090a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline sideways-rl non-Latin</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English text, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091-manual.html
new file mode 100644
index 00000000000..94405c0362b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline sideways-rl</title>
+<meta name="assert" content="text-decoration-line:overline; there is a line to the RIGHT of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091a-manual.html
new file mode 100644
index 00000000000..e1ba036c257
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-091a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline sideways-rl non-Latin</title>
+<meta name="assert" content="text-decoration-line:overline; there is a line to the RIGHT of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English sentence, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092-manual.html
new file mode 100644
index 00000000000..4dffcf6a00e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through sideways-rl</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a line through the CENTRE of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line through the CENTRE of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092a-manual.html
new file mode 100644
index 00000000000..7f803a35f16
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-092a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through sideways-rl non-Latin</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a line through the CENTRE of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line through the CENTRE of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English sentence, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-rl">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095-manual.html
new file mode 100644
index 00000000000..62ca5d1a19e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline sideways-lr</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: sideways-rl">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095a-manual.html
new file mode 100644
index 00000000000..f5bab19374f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-095a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line underline sideways-lr non-Latin</title>
+<meta name="assert" content="text-decoration-line:underline; there is a line to the RIGHT of the characters for horizontal scripts set vertically using writing-mode: sideways-lr">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:underline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the RIGHT of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English sentence, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096-manual.html
new file mode 100644
index 00000000000..01eaf87875b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline sideways-lr</title>
+<meta name="assert" content="text-decoration-line:overline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: sideways-lr">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096a-manual.html
new file mode 100644
index 00000000000..233006c904e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-096a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line overline sideways-lr non-Latin</title>
+<meta name="assert" content="text-decoration-line:overline; there is a line to the LEFT of the characters for horizontal scripts set vertically using writing-mode: sideways-lr">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:overline;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line to the LEFT of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English sentence, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097-manual.html
new file mode 100644
index 00000000000..9502b2367ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through sideways-lr</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a line through the CENTRE of the characters for horizontal scripts set vertically using writing-mode: sideways-lr">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line through the CENTRE of the characters.<br/><span class="hint">Skip the test if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097a-manual.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097a-manual.html
new file mode 100644
index 00000000000..e037e15d73c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-line-097a-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>text-decoration-line line-through sideways-lr non-Latin</title>
+<meta name="assert" content="text-decoration-line:line-through; there is a line through the CENTRE of the characters for horizontal scripts set vertically using writing-mode: sideways-lr">
+<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#line-decoration">
+<!-- cosmetic styling -->
+<style>
+#htmlsrc { margin: 2em; }
+#htmlsrc p {
+ font-size: 28px;
+ border-radius: 5px;
+ line-height: 1.5;
+ }
+.hint { color: brown; font-family: sans-serif; font-size: 90%; }
+.hint:before { content: '❗ '; }
+</style>
+<!-- the test -->
+<style>
+div span {
+text-decoration-line:line-through;
+}</style>
+</head>
+<body>
+<p class="instructions">Test passes if there is a line through the CENTRE of the characters for all lines.<br/><span class="hint">Skip the test if it fails for the English sentence, or if the text is not vertical.</span></p>
+<div id="htmlsrc" style="writing-mode:sideways-lr">
+
+<div>
+<p lang="en"><span>The quick brown fox jumps over the lazy dog.</span></p>
+<p lang="ar"><span>وب جهانی را به‌درستی جهانی سازیم!</span></p>
+<p lang="my"><span>အပြည်ပြည်ဆိုင်ရာလှုပ်ရှားမှု၊</span></p>
+<p lang="th"><span>กูกินกุ้งปิ้งอยู่ในถ้ำ กูกินกุ้งปิ้งอยู่ในถ้ำ</span></p>
+<p lang="bo"><span>འཛམ་གླིང་ཡོངས་འབྲེལ་འདི་ ངོ་མ་འབད་རང་ འཛམ་གླིང་ཡོངས་ལུ་ཁྱབ་ཚུགསཔ་བཟོ་བ།</span></p>
+<p lang="hi"><span>वर्ल्ड वाईड वेब को सचमुच विश्वव्यापी बना रहें हैं !</span></p-->
+</div> </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-013.html b/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-013.html
new file mode 100644
index 00000000000..448a41d88f1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-013.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html>
+<meta charset="utf-8">
+<title>CSS Text — line breaking of emoji sequences that should form single clusters</title>
+<meta name=assert content="A UA must use the extended grapheme cluster (not legacy grapheme cluster), as defined in [UAX29], as the basis for its typographic character unit.">
+<link rel=help href="https://www.w3.org/TR/css-text-3/#characters">
+<link rel=match href="reference/line-breaking-013-ref.html">
+<link rel=author title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<style>
+div {
+ line-height: 1em;
+ font-size: 30px;
+}
+.container {
+ position: relative;
+ margin: .5em;
+}
+.ref {
+ background-color: white;
+ padding: .25em;
+}
+.test {
+ color: transparent;
+ background-color: red;
+ position: absolute;
+ width: .5em;
+ left: 0;
+ top: 0;
+ padding: .25em;
+ z-index: -1;
+}
+</style>
+<body>
+ <p>Each emoji should appear on a single line with no red background.</p>
+ <div class=container>
+ <div class=ref>&#x1F468;&#x200D;&#x1F4BB;</div><!-- man technologist -->
+ <div class=test>&#x1F468;&#x200D;&#x1F4BB;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F469;&#x200D;&#x1F467;&#x200D;&#x1F466;</div><!-- family with mother, son and daughter -->
+ <div class=test>&#x1F469;&#x200D;&#x1F467;&#x200D;&#x1F466;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F939;&#x200D;&#x2640;&#xFE0F;</div><!-- woman juggling -->
+ <div class=test>&#x1F939;&#x200D;&#x2640;&#xFE0F;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x26F9;&#x1F3FF;&#x200D;&#x2640;&#xFE0F;</div><!-- woman basketball player (fitzpatrick type 6) -->
+ <div class=test>&#x26F9;&#x1F3FF;&#x200D;&#x2640;&#xFE0F;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F3;&#xFE0F;&#x200D;&#x1F308;</div><!-- rainbow flag -->
+ <div class=test>&#x1F3F3;&#xFE0F;&#x200D;&#x1F308;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F4;&#xE0067;&#xE0062;&#xE0077;&#xE006C;&#xE0073;&#xE007F;</div><!-- flag of Wales -->
+ <div class=test>&#x1F3F4;&#xE0067;&#xE0062;&#xE0077;&#xE006C;&#xE0073;&#xE007F;</div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-014.html b/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-014.html
new file mode 100644
index 00000000000..ea9956362be
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/line-breaking/line-breaking-014.html
@@ -0,0 +1,61 @@
+<!doctype html>
+<html>
+<meta charset="utf-8">
+<title>CSS Text — line breaking (with word-break:break-all) of emoji sequences that should form single clusters</title>
+<meta name=assert content="A UA must use the extended grapheme cluster (not legacy grapheme cluster), as defined in [UAX29], as the basis for its typographic character unit.">
+<link rel=help href="https://www.w3.org/TR/css-text-3/#characters">
+<link rel=match href="reference/line-breaking-013-ref.html">
+<link rel=author title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<style>
+div {
+ line-height: 1em;
+ font-size: 30px;
+}
+.container {
+ position: relative;
+ margin: .5em;
+}
+.ref {
+ background-color: white;
+ padding: .25em;
+}
+.test {
+ word-break: break-all;
+ color: transparent;
+ background-color: red;
+ position: absolute;
+ width: .5em;
+ left: 0;
+ top: 0;
+ padding: .25em;
+ z-index: -1;
+}
+</style>
+<body>
+ <p>Each emoji should appear on a single line with no red background.</p>
+ <div class=container>
+ <div class=ref>&#x1F468;&#x200D;&#x1F4BB;</div><!-- man technologist -->
+ <div class=test>&#x1F468;&#x200D;&#x1F4BB;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F469;&#x200D;&#x1F467;&#x200D;&#x1F466;</div><!-- family with mother, son and daughter -->
+ <div class=test>&#x1F469;&#x200D;&#x1F467;&#x200D;&#x1F466;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F939;&#x200D;&#x2640;&#xFE0F;</div><!-- woman juggling -->
+ <div class=test>&#x1F939;&#x200D;&#x2640;&#xFE0F;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x26F9;&#x1F3FF;&#x200D;&#x2640;&#xFE0F;</div><!-- woman basketball player (fitzpatrick type 6) -->
+ <div class=test>&#x26F9;&#x1F3FF;&#x200D;&#x2640;&#xFE0F;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F3;&#xFE0F;&#x200D;&#x1F308;</div><!-- rainbow flag -->
+ <div class=test>&#x1F3F3;&#xFE0F;&#x200D;&#x1F308;</div>
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F4;&#xE0067;&#xE0062;&#xE0077;&#xE006C;&#xE0073;&#xE007F;</div><!-- flag of Wales -->
+ <div class=test>&#x1F3F4;&#xE0067;&#xE0062;&#xE0077;&#xE006C;&#xE0073;&#xE007F;</div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/line-breaking/reference/line-breaking-013-ref.html b/tests/wpt/web-platform-tests/css/css-text/line-breaking/reference/line-breaking-013-ref.html
new file mode 100644
index 00000000000..816015adeab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/line-breaking/reference/line-breaking-013-ref.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html>
+<meta charset="utf-8">
+<title>CSS Text — reference file for emoji sequence line-breaking test</title>
+<link rel=author title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<style>
+div {
+ line-height: 1em;
+ font-size: 30px;
+}
+.container {
+ position: relative;
+ margin: .5em;
+}
+.ref {
+ background-color: white;
+ padding: .25em;
+}
+</style>
+<body>
+ <p>Each emoji should appear on a single line with no red background.</p>
+ <div class=container>
+ <div class=ref>&#x1F468;&#x200D;&#x1F4BB;</div><!-- man technologist -->
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F469;&#x200D;&#x1F467;&#x200D;&#x1F466;</div><!-- family with mother, son and daughter -->
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F939;&#x200D;&#x2640;&#xFE0F;</div><!-- woman juggling -->
+ </div>
+ <div class=container>
+ <div class=ref>&#x26F9;&#x1F3FF;&#x200D;&#x2640;&#xFE0F;</div><!-- woman basketball player (fitzpatrick type 6) -->
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F3;&#xFE0F;&#x200D;&#x1F308;</div><!-- rainbow flag -->
+ </div>
+ <div class=container>
+ <div class=ref>&#x1F3F4;&#xE0067;&#xE0062;&#xE0077;&#xE006C;&#xE0073;&#xE007F;</div><!-- flag of Wales -->
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
index 72e63c4d1e9..361006a7240 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
@@ -165,19 +165,30 @@ promise_test(async () => {
const elem = document.createElement(localName);
document.body.appendChild(elem);
elem.disabled = true;
- const eventPromises = [
- "animationstart",
- "animationiteration",
- "animationend",
- ].map(eventType => {
- return new Promise(r => {
- elem.addEventListener(eventType, r, { once: true });
+ const animationStartPromise = new Promise(r => {
+ elem.addEventListener("animationstart", () => {
+ // Seek to the second iteration to trigger the animationiteration event
+ elem.style.animationDelay = "-100s"
+ r();
});
});
- elem.style.animation = "fade .1s 2";
+ const animationIterationPromise = new Promise(r => {
+ elem.addEventListener("animationiteration", ()=>{
+ elem.style.animationDelay = "-200s"
+ r();
+ });
+ });
+ const animationEndPromise = new Promise(r => {
+ elem.addEventListener("animationend", r);
+ });
+ elem.style.animation = "fade 100s 2";
elem.classList.add("animate");
// All the events fire...
- await Promise.all(eventPromises);
+ await Promise.all([
+ animationStartPromise,
+ animationIterationPromise,
+ animationEndPromise,
+ ]);
elem.remove();
}
}, "CSS Animation animationstart, animationiteration, animationend fire on disabled form elements");
diff --git a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
index 1a8bf3de915..8a0d7353bc6 100644
--- a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
+++ b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
@@ -98,7 +98,7 @@ async_test(function() {
results.push(3)
}), true)
b.dispatchEvent(new Event("x"))
- assert_array_equals(results, [1, 2, 3])
+ assert_array_equals(results, [1, 3, 2])
this.done()
-}, "Event listeners should be called in order of addition")
+}, "Capturing event listeners should be called before non-capturing ones")
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra.html b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra.html
index af51354035c..e76f5f6ea70 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra.html
@@ -69,13 +69,39 @@
el.selectionStart = 3;
el.selectionEnd = 5;
- el.textContent = "abcdef\r\nwhatevs";
+ el.firstChild.data = "abcdef\r\nwhatevs";
assert_equals(el.selectionStart, 3);
assert_equals(el.selectionEnd, 5);
}, "Setting the same value (with different newlines) in a textarea should NOT update selection{Start,End}");
test(function() {
var el = document.createElement("textarea");
+ el.textContent = "foobar";
+ el.selectionStart = 3;
+ el.selectionEnd = 5;
+ el.firstChild.remove();
+ assert_equals(el.selectionStart, 0, 'selectionStart after node removal');
+ assert_equals(el.selectionEnd, 0, 'selectionEnd after node removal');
+ el.appendChild(document.createTextNode("foobar"));
+ assert_equals(el.selectionStart, 0, 'selectionStart after appendChild');
+ assert_equals(el.selectionEnd, 0, 'selectionEnd after appendChild');
+
+ el.selectionStart = 3;
+ el.selectionEnd = 5;
+ el.textContent = "foobar2"; // This removes the child node first.
+ assert_equals(el.selectionStart, 0, 'selectionStart after textContent setter');
+ assert_equals(el.selectionEnd, 0, 'selectionEnd after textContent setter');
+
+ el.selectionStart = 3;
+ el.selectionEnd = 5;
+ el.defaultValue = "foobar"; // Same as textContent setter.
+ assert_equals(el.selectionStart, 0, 'selectionStart after defaultValue setter');
+ assert_equals(el.selectionEnd, 0, 'selectionEnd after defaultValue setter');
+
+ }, "Removing child nodes in non-dirty textarea should make selection{Start,End} 0");
+
+ test(function() {
+ var el = document.createElement("textarea");
el.defaultValue = "123";
assert_equals(el.value.length, 3);
assert_equals(el.selectionStart, 3);
@@ -105,8 +131,12 @@
assert_equals(el.selectionEnd, 9);
el.type = "color";
el.type = "text";
- assert_equals(el.selectionStart, 7);
- assert_equals(el.selectionEnd, 7);
+ // https://html.spec.whatwg.org/C/input.html#the-input-element:attr-input-type-15
+ // 9. If previouslySelectable is false and nowSelectable is true, set the
+ // element's text entry cursor position to the beginning of the text
+ // control, ...
+ assert_equals(el.selectionStart, 0);
+ assert_equals(el.selectionEnd, 0);
}, "Shortening value by turning the input type into 'color' and back to 'text' should correct selection{Start,End}");
test(function() {
diff --git a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
index 202dc6b09f7..4c11b695f49 100644
--- a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
+++ b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
@@ -11,13 +11,19 @@ enum WakeLockType { "screen", "system" };
[Constructor(WakeLockType type), SecureContext, Exposed=(DedicatedWorker,Window)]
interface WakeLock : EventTarget {
- [Exposed=Window] static Promise<PermissionState> requestPermission(WakeLockType type);
readonly attribute WakeLockType type;
readonly attribute boolean active;
attribute EventHandler onactivechange;
Promise<void> request(optional WakeLockRequestOptions options);
+ static sequence<WakeLock> query(optional WakeLockQueryFilter filter);
+ [Exposed=Window] static Promise<PermissionState> requestPermission(WakeLockType type);
};
dictionary WakeLockRequestOptions {
AbortSignal? signal;
};
+
+dictionary WakeLockQueryFilter {
+ WakeLockType? type;
+ boolean? active;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
index 0992b341e1f..d9d20191ad8 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
@@ -102,7 +102,10 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
DOMString senderId;
DOMString remoteId;
DOMHighResTimeStamp lastPacketSentTimestamp;
+ unsigned long long retransmittedPacketsSent;
+ unsigned long long retransmittedBytesSent;
double targetBitrate;
+ unsigned long long totalEncodedBytesTarget;
unsigned long framesEncoded;
unsigned long long qpSum;
double totalEncodeTime;
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index 8a3264073e8..4c74fdac384 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -188,6 +188,13 @@ interface XRInputSource {
readonly attribute XRTargetRayMode targetRayMode;
readonly attribute XRSpace targetRaySpace;
readonly attribute XRSpace? gripSpace;
+ readonly attribute Gamepad? gamepad;
+};
+
+enum GamepadMappingType {
+ "", // Defined in the Gamepad API
+ "standard", // Defined in the Gamepad API
+ "xr-standard",
};
[SecureContext, Exposed=Window] interface XRLayer {};
@@ -254,11 +261,13 @@ dictionary XRSessionEventInit : EventInit {
interface XRInputSourceEvent : Event {
readonly attribute XRFrame frame;
readonly attribute XRInputSource inputSource;
+ readonly attribute long? buttonIndex;
};
dictionary XRInputSourceEventInit : EventInit {
required XRFrame frame;
required XRInputSource inputSource;
+ long? buttonIndex = null;
};
[SecureContext, Exposed=Window, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)]
diff --git a/tests/wpt/web-platform-tests/url/resources/urltestdata.json b/tests/wpt/web-platform-tests/url/resources/urltestdata.json
index 26b8ea2e0bc..bf4e2a7833d 100644
--- a/tests/wpt/web-platform-tests/url/resources/urltestdata.json
+++ b/tests/wpt/web-platform-tests/url/resources/urltestdata.json
@@ -4633,6 +4633,22 @@
"search": "",
"hash": ""
},
+ "# unknown scheme with non-URL characters in the path",
+ {
+ "input": "wow:\uFFFF",
+ "base": "about:blank",
+ "href": "wow:%EF%BF%BF",
+ "origin": "null",
+ "protocol": "wow:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "%EF%BF%BF",
+ "search": "",
+ "hash": ""
+ },
"# Hosts and percent-encoding",
{
"input": "ftp://example.com%80/",
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
index f7bf8bd3e3b..336b100de05 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
@@ -199,10 +199,133 @@
pc.onnegotiationneeded = e => fired = true;
pc.createDataChannel('test');
const answer = await generateAnswer(offer);
- await pc.setRemoteDescription(answer);
+ pc.setRemoteDescription(answer);
+ assert_false(fired, "negotiationneeded should not fire until the next iteration of the event loop after returning to stable");
+ await new Promise(resolve => pc.onnegotiationneeded = resolve);
+ }, 'negotiationneeded event should fire only after signaling state go back to stable after setRemoteDescription');
+
+ promise_test(async t => {
+ const callee = new RTCPeerConnection();
+ t.add_cleanup(() => callee.close());
+
+ const caller = new RTCPeerConnection();
+ t.add_cleanup(() => caller.close());
+
+ callee.addTransceiver('audio');
+
+ const offer = await caller.createOffer();
+ let fired = false;
+ callee.onnegotiationneeded = e => fired = true;
+ await callee.setRemoteDescription(offer);
+ callee.createDataChannel('test');
+
+ const answer = await callee.createAnswer(offer);
+ callee.setLocalDescription(answer);
assert_false(fired, "negotiationneeded should not fire until the next iteration of the event loop after returning to stable");
+
+ await new Promise(resolve => callee.onnegotiationneeded = resolve);
+ }, 'negotiationneeded event should fire only after signaling state go back to stable after setLocalDescription');
+
+ /*
+ 5.1. RTCPeerConnection Interface Extensions
+
+ addTrack
+ 10. Update the negotiation-needed flag for connection.
+ */
+ promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+
+ const stream = await getNoiseStream({ audio: true });
+ t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
+ const [track] = stream.getTracks();
+ pc.addTrack(track, stream);
+
+ await new Promise(resolve => pc.onnegotiationneeded = resolve);
+ }, 'addTrack should cause negotiationneeded to fire');
+
+ /*
+ 5.1. RTCPeerConnection Interface Extensions
+
+ removeTrack
+ 12. Update the negotiation-needed flag for connection.
+ */
+ async_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+
+ const stream = await getNoiseStream({ audio: true });
+ t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
+ const [track] = stream.getTracks();
+ const sender = pc.addTrack(track, stream);
+ pc.onnegotiationneeded = t.step_func(async () => {
+ pc.onnegotiationneeded = t.step_func(async () => {
+ assert_unreached('onnegotiationneeded misfired');
+ });
+ const offer = await pc.createOffer();
+ await pc.setLocalDescription(offer);
+
+ const answer = await generateAnswer(offer);
+ await pc.setRemoteDescription(answer);
+
+ pc.removeTrack(sender);
+ await new Promise(resolve => pc.onnegotiationneeded = resolve)
+ t.done();
+ });
+ }, 'removeTrack should cause negotiationneeded to fire on the caller');
+
+ /*
+ 5.1. RTCPeerConnection Interface Extensions
+
+ removeTrack
+ 12. Update the negotiation-needed flag for connection.
+ */
+ async_test(async t => {
+ const caller = new RTCPeerConnection();
+ t.add_cleanup(() => caller.close());
+ caller.addTransceiver('audio', {direction:'recvonly'});
+ const offer = await caller.createOffer();
+
+ const callee = new RTCPeerConnection();
+ t.add_cleanup(() => callee.close());
+
+ const stream = await getNoiseStream({ audio: true });
+ t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
+ const [track] = stream.getTracks();
+ const sender = callee.addTrack(track, stream);
+
+ callee.onnegotiationneeded = t.step_func(async () => {
+ callee.onnegotiationneeded = t.step_func(async () => {
+ assert_unreached('onnegotiationneeded misfired');
+ });
+ await callee.setRemoteDescription(offer);
+ const answer = await callee.createAnswer(offer);
+ callee.setLocalDescription(answer);
+
+ callee.removeTrack(sender);
+ await new Promise(resolve => callee.onnegotiationneeded = resolve)
+ t.done();
+ });
+ }, 'removeTrack should cause negotiationneeded to fire on the callee');
+
+ /*
+ 5.4. RTCRtpTransceiver Interface
+
+ setDirection
+ 7. Update the negotiation-needed flag for connection.
+ */
+ promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+
+ const transceiver = pc.addTransceiver('audio', {direction:'sendrecv'});
+ const offer = await pc.createOffer();
+ await pc.setLocalDescription(offer);
+ const answer = await generateAnswer(offer);
+ await pc.setRemoteDescription(answer);
+ transceiver.direction = 'recvonly';
await new Promise(resolve => pc.onnegotiationneeded = resolve);
- }, 'negotiationneeded event should fire only after signaling state go back to stable');
+ }, 'Updating the direction of the transceiver should cause negotiationneeded to fire');
/*
TODO
@@ -243,19 +366,8 @@
When the RTCPeerConnection() constructor is invoked
7. Let connection have a [[needNegotiation]] internal slot, initialized to false.
- 5.1. RTCPeerConnection Interface Extensions
-
- addTrack
- 10. Update the negotiation-needed flag for connection.
-
- removeTrack
- 12. Update the negotiation-needed flag for connection.
-
5.4. RTCRtpTransceiver Interface
- setDirection
- 7. Update the negotiation-needed flag for connection.
-
stop
11. Update the negotiation-needed flag for connection.