aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini36
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini9
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini14
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webdriver/tests/interface/interface.py.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json63
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini36
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini14
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata/webdriver/tests/interface/interface.py.ini4
-rw-r--r--tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini4
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ruby/ruby-position.html34
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html20
-rw-r--r--tests/wpt/web-platform-tests/docs/assets/custom.css4
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md4
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html19
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/motion/add-during-dispatch.https.html11
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/motion/add-listener-from-callback.https.html4
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/motion/multiple-event-listeners.https.html21
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/motion/null-values.https.html15
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/absolute-fallback.https.html4
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/add-listener-from-callback.https.html4
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation-absolute.https.html17
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation.https.html18
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/deviceorientationabsoluteevent.https.html31
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/multiple-event-listeners.https.html22
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/null-values.https.html15
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/orientation/updates.https.html7
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js150
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-08-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-altglyph-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb8
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/interface/interface.py2
53 files changed, 323 insertions, 354 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini
deleted file mode 100644
index 4bfb0c2053a..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-004.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini
index 338baf702a2..fc4e1b87fbd 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini
@@ -44,12 +44,6 @@
[vertical-align length(in) / values]
expected: FAIL
- [right length(pc) / values]
- expected: FAIL
-
- [top length(pt) / values]
- expected: FAIL
-
[max-height percentage(%) / values]
expected: FAIL
@@ -68,9 +62,6 @@
[border-right-color color(rgba) / values]
expected: FAIL
- [top length(pc) / values]
- expected: FAIL
-
[font-size length(ex) / values]
expected: FAIL
@@ -131,9 +122,6 @@
[border-top-width length(cm) / values]
expected: FAIL
- [right length(px) / values]
- expected: FAIL
-
[max-width length(em) / values]
expected: FAIL
@@ -146,9 +134,6 @@
[border-right-width length(cm) / values]
expected: FAIL
- [top length(px) / values]
- expected: FAIL
-
[outline-offset length(ex) / values]
expected: FAIL
@@ -179,9 +164,6 @@
[min-height percentage(%) / values]
expected: FAIL
- [top percentage(%) / values]
- expected: FAIL
-
[max-height length(pt) / values]
expected: FAIL
@@ -245,9 +227,6 @@
[line-height length(pt) / values]
expected: FAIL
- [top length(em) / values]
- expected: FAIL
-
[border-top-width length(px) / values]
expected: FAIL
@@ -293,9 +272,6 @@
[background-position length(cm) / values]
expected: FAIL
- [top length(in) / values]
- expected: FAIL
-
[line-height length(em) / values]
expected: FAIL
@@ -386,9 +362,6 @@
[min-width length(in) / values]
expected: FAIL
- [top length(cm) / values]
- expected: FAIL
-
[outline-width length(cm) / values]
expected: FAIL
@@ -398,9 +371,6 @@
[max-width length(ex) / values]
expected: FAIL
- [top length(mm) / values]
- expected: FAIL
-
[letter-spacing length(ex) / values]
expected: FAIL
@@ -455,9 +425,6 @@
[max-height length(cm) / values]
expected: FAIL
- [top length(ex) / values]
- expected: FAIL
-
[outline-width length(em) / values]
expected: FAIL
@@ -503,9 +470,6 @@
[line-height length(pc) / values]
expected: FAIL
- [right length(pt) / values]
- expected: FAIL
-
[background-position length(em) / values]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index c884dc82eab..628b1fab770 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized]
expected: FAIL
- [listeners are called correct number of times]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
index 23c61ede1a1..c131078eace 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
@@ -17,6 +17,3 @@
[test the top of layer]
expected: FAIL
- [test some point of the element: top left corner]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
index 11b0ecce267..53d30b9ab6a 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
@@ -2,3 +2,12 @@
[replace / replaceSync on non-constructed stylesheet]
expected: FAIL
+ [CSSStyleSheet.replace returns a rejected promise for non-constructed sheets]
+ expected: FAIL
+
+ [CSSStyleSheet.replace returns a rejected promise for non-constructed sheets that have no associated document]
+ expected: FAIL
+
+ [CSSStyleSheet.replaceSync throws NotAllowedError for non-constructed sheets]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
index 75d0a21d9dd..08438e7bc14 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
@@ -312,24 +312,24 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [<iframe>: combined response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
index a63e414f43a..ce73518c20a 100644
--- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
+ [X-Content-Type-Options%3A%20'NosniFF']
+ expected: FAIL
+
+ [X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 295031c1812..ab43ed7acf4 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 450c88bd32b..dbec6f2c2ff 100644
--- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -3,6 +3,3 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
- [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 5ddb9bfeff6..a1effd5f801 100644
--- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,10 +1,9 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: TIMEOUT
+ expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@@ -16,5 +15,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index 939fce46e68..6ea489cbc23 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -101,3 +101,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 40530 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 29020.\n\t[29020\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 37006 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 34616.\n\t[34616\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webdriver/tests/interface/interface.py.ini b/tests/wpt/metadata-layout-2020/webdriver/tests/interface/interface.py.ini
new file mode 100644
index 00000000000..568334a6fb6
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webdriver/tests/interface/interface.py.ini
@@ -0,0 +1,4 @@
+[interface.py]
+ [test_navigator_webdriver_active]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini
new file mode 100644
index 00000000000..fe8654e447c
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini
@@ -0,0 +1,4 @@
+[WorkerGlobalScope-close.html]
+ [Test sending a message after closing.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 9056496675b..917c2c4076b 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -19989,7 +19989,7 @@
]
],
"pservers-grad-08-b-manual.svg": [
- "654ec8d409b5a11b86036b428b65def3adbfba26",
+ "ba7413e2c5f9f0c6a587816beddac7985566a9a9",
[
null,
{}
@@ -21109,7 +21109,7 @@
]
],
"text-altglyph-01-b-manual.svg": [
- "db208cea587322b977eb0c81edc5d38451c3da56",
+ "85a31a18a2957d8c6c5904cb375b53ec490899f5",
[
null,
{}
@@ -315174,7 +315174,7 @@
[]
],
"custom.css": [
- "a5f59ce7721cce73cc79dd69bff68ef8afe14e9a",
+ "58a982579f06c2c7093e4847a64d91c9722dd946",
[]
],
"files-changed.png": [
@@ -315368,7 +315368,7 @@
[]
],
"making-a-testing-plan.md": [
- "0f5673016c0502edc11c915ee64b4901ed384c23",
+ "520c5a32e0705e9a692a96f2e6ac998a191acf4b",
[]
],
"manual.md": [
@@ -333464,7 +333464,7 @@
],
"resources": {
"orientation-event-helpers.js": [
- "528dfa9a7a057324b07cfda37dd454b48c43ff0e",
+ "3168b71c5ec6476f4120ea2e59d00cb371e40596",
[]
]
}
@@ -341083,7 +341083,7 @@
[]
],
"safari-technology-preview.rb": [
- "d58664c5b6c67e32c63f1d122625a56211371511",
+ "6afe1c188f9f290699605b66762eaaadd0020011",
[]
],
"system_info.yml": [
@@ -394003,7 +394003,14 @@
{}
]
]
- }
+ },
+ "ruby-position.html": [
+ "981a40531a983dd8c1dd27b875874f15232df6ba",
+ [
+ null,
+ {}
+ ]
+ ]
},
"css-scoping": {
"css-scoping-shadow-dynamic-remove-style-detached.html": [
@@ -404604,7 +404611,7 @@
]
],
"CSSStyleSheet-constructable-replace-on-regular-sheet.html": [
- "d059258d90a64ac7dee02a14d92c677afe3fdb47",
+ "5ce0cbee97a2a1593018089f9252870bdb47587b",
[
null,
{}
@@ -469207,7 +469214,7 @@
]
],
"device-orientation-events-unavailable-on-insecure-origins.html": [
- "3af5e9241778694dc36e5bbf70fce1326e6e7adf",
+ "571a388f64495e61b8f0eb846e03b226ce007d9f",
[
null,
{
@@ -469240,7 +469247,7 @@
],
"motion": {
"add-during-dispatch.https.html": [
- "d40b557a2d6f09f2fa04291ddbca859dc4a3d1d1",
+ "3a895b9d0969ab1c8a77509ab29d2bd8071d372e",
[
null,
{
@@ -469249,7 +469256,7 @@
]
],
"add-listener-from-callback.https.html": [
- "11f2695794c8e1d75f8a30031f2a38c9155252ed",
+ "0803d7cc9bfa8951cbce39dad8c2b63ed713956b",
[
null,
{
@@ -469265,7 +469272,7 @@
]
],
"multiple-event-listeners.https.html": [
- "ad851eec2919ed04b23c93a43221bcb5acefc023",
+ "207fdd2d9c00b5998601508e33911002697026c0",
[
null,
{
@@ -469274,7 +469281,7 @@
]
],
"null-values.https.html": [
- "4da64c0c9e85b87505c78b136435b42f546bc995",
+ "a6035543ba457fd701f40f89ccacf32f8a0b503e",
[
null,
{
@@ -469292,7 +469299,7 @@
},
"orientation": {
"absolute-fallback.https.html": [
- "de0770a9f75c0ad92c503f636f4cf9c8105fc465",
+ "835d2441b358a1ba3aa3013838b19c3aac531d1f",
[
null,
{
@@ -469301,7 +469308,7 @@
]
],
"add-listener-from-callback.https.html": [
- "040e2a2f5d117eec2f9da811b2327ea5fd368b49",
+ "8f8cfa29c4f948cc926829a48d0d89516dbb26e5",
[
null,
{
@@ -469310,7 +469317,7 @@
]
],
"basic-operation-absolute.https.html": [
- "bc35e1498f45e0fadc41ccb0948abf012414cd27",
+ "05ac82cd35f3e373c3590a71bc2541d4dba4897f",
[
null,
{
@@ -469319,7 +469326,7 @@
]
],
"basic-operation.https.html": [
- "eb57d141b35bb4b9e64b7b3dc2efc6ec32973da4",
+ "3806ee0792aeba94e639dddb06b40a9db76bd2f7",
[
null,
{
@@ -469334,15 +469341,8 @@
{}
]
],
- "deviceorientationabsoluteevent.https.html": [
- "e63783f6cf479f38504bb04bcc947a08ee34c8b3",
- [
- null,
- {}
- ]
- ],
"multiple-event-listeners.https.html": [
- "3a8add23c947cba88fc66a1fabf3e955f5578fd5",
+ "13d05f0c745fa0930b74c707ac9381005d4910ba",
[
null,
{
@@ -469360,7 +469360,7 @@
]
],
"null-values.https.html": [
- "df18f35c6cacf9fc1e090c8ff071a0fb1175ef07",
+ "55039ea2763bbb182b8aaf3ad68904dfa7a90619",
[
null,
{
@@ -469376,7 +469376,7 @@
]
],
"updates.https.html": [
- "09472e6b419e8a2f772ae9d399b15b3352c2d868",
+ "de203da0a3af07d6b1d82c5550f8224562c623f2",
[
null,
{
@@ -545085,6 +545085,15 @@
]
]
},
+ "interface": {
+ "interface.py": [
+ "6a7afcd26358aaad3779a912fd4bc00a66ca9571",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"is_element_enabled": {
"enabled.py": [
"dd56084d8d0eca15b7b6d46491bbd9f0a64cef40",
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
deleted file mode 100644
index 4bfb0c2053a..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-004.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
index 2dffa903119..42f61e8ed49 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
@@ -509,39 +509,3 @@
[border-left-width length(pt) / values]
expected: FAIL
- [right length(pc) / values]
- expected: FAIL
-
- [top length(pt) / values]
- expected: FAIL
-
- [top length(pc) / values]
- expected: FAIL
-
- [right length(px) / values]
- expected: FAIL
-
- [top length(px) / values]
- expected: FAIL
-
- [top percentage(%) / values]
- expected: FAIL
-
- [top length(em) / values]
- expected: FAIL
-
- [top length(in) / values]
- expected: FAIL
-
- [top length(cm) / values]
- expected: FAIL
-
- [top length(mm) / values]
- expected: FAIL
-
- [top length(ex) / values]
- expected: FAIL
-
- [right length(pt) / values]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index c884dc82eab..628b1fab770 100644
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized]
expected: FAIL
- [listeners are called correct number of times]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index 5733d536fd3..85e94926cb3 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -21,6 +21,3 @@
[test the top of layer]
expected: FAIL
- [test some point of the element: top left corner]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini b/tests/wpt/metadata/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
index 11b0ecce267..53d30b9ab6a 100644
--- a/tests/wpt/metadata/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
+++ b/tests/wpt/metadata/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html.ini
@@ -2,3 +2,12 @@
[replace / replaceSync on non-constructed stylesheet]
expected: FAIL
+ [CSSStyleSheet.replace returns a rejected promise for non-constructed sheets]
+ expected: FAIL
+
+ [CSSStyleSheet.replace returns a rejected promise for non-constructed sheets that have no associated document]
+ expected: FAIL
+
+ [CSSStyleSheet.replaceSync throws NotAllowedError for non-constructed sheets]
+ 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 221f0bc51f8..b588c5c2232 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,24 +312,24 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<iframe>: combined response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
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 61682d248e2..fb2658740e2 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
- [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
+ [X-Content-Type-Options%3A%20'NosniFF']
+ expected: FAIL
+
+ [X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 5f60c78e73c..b3bd9f4c289 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 01f7b72cbe7..0cef5158fae 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -4,6 +4,3 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
- [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 5ddb9bfeff6..a1effd5f801 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,10 +1,9 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: TIMEOUT
+ expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@@ -16,5 +15,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index fb97f37983e..6a74a3102ba 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -170,3 +170,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 40530 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 29020.\n\t[29020\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 37006 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 34616.\n\t[34616\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webdriver/tests/interface/interface.py.ini b/tests/wpt/metadata/webdriver/tests/interface/interface.py.ini
new file mode 100644
index 00000000000..568334a6fb6
--- /dev/null
+++ b/tests/wpt/metadata/webdriver/tests/interface/interface.py.ini
@@ -0,0 +1,4 @@
+[interface.py]
+ [test_navigator_webdriver_active]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
new file mode 100644
index 00000000000..fe8654e447c
--- /dev/null
+++ b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
@@ -0,0 +1,4 @@
+[WorkerGlobalScope-close.html]
+ [Test sending a message after closing.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/web-platform-tests/css/css-ruby/ruby-position.html b/tests/wpt/web-platform-tests/css/css-ruby/ruby-position.html
new file mode 100644
index 00000000000..981a40531a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-ruby/ruby-position.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-ruby/#rubypos">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+
+<p><ruby id="o1" style="ruby-position: over">base<rt>annotation</rt></ruby></p>
+<p><ruby id="o2" style="ruby-position: under">base<rt style="ruby-position: over">annotation</rt></ruby></p>
+
+<p><ruby id="u1" style="ruby-position: under">base<rt>annotation</rt></ruby></p>
+<p><ruby id="u2">base<rt style="ruby-position: under">annotation</rt></ruby></p>
+
+<script>
+test(() => {
+ const o1 = document.querySelector('#o1');
+ assert_true(o1.querySelector('rt').getBoundingClientRect().top <= o1.getBoundingClientRect().top);
+}, 'ruby-position:over on <ruby> works');
+
+test(() => {
+ const o2 = document.querySelector('#o2');
+ assert_true(o2.querySelector('rt').getBoundingClientRect().top <= o2.getBoundingClientRect().top);
+}, 'ruby-position:over on <rt> works');
+
+test(() => {
+ const u1 = document.querySelector('#u1');
+ assert_true(u1.querySelector('rt').getBoundingClientRect().bottom >= u1.getBoundingClientRect().bottom);
+}, 'ruby-position:under on <ruby> works');
+
+test(() => {
+ const u2 = document.querySelector('#u2');
+ assert_true(u2.querySelector('rt').getBoundingClientRect().bottom >= u2.getBoundingClientRect().bottom);
+}, 'ruby-position:under on <rt> works');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html
index d059258d90a..5ce0cbee97a 100644
--- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html
+++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html
@@ -4,15 +4,29 @@
<link rel="help" href="https://wicg.github.io/construct-stylesheets/">
<script src = '/resources/testharness.js'></script>
<script src = '/resources/testharnessreport.js'></script>
-<style>:root { background-color: lime }</style>
+<style id="style">:root { background-color: lime }</style>
<script>
-promise_test(async function(t) {
+
+test(() => {
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
let sheet = document.styleSheets[0];
assert_throws_dom("NotAllowedError", () => sheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw");
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
+}, "CSSStyleSheet.replaceSync throws NotAllowedError for non-constructed sheets")
+
+promise_test(async function(t) {
+ assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
+ let sheet = document.styleSheets[0];
+ await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
+ assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
+}, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets")
+promise_test(async function(t) {
+ assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
+ let sheet = document.styleSheets[0];
+ style.remove() // sheet's associated document becomes null.
await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
-});
+}, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets that have no associated document")
+
</script>
diff --git a/tests/wpt/web-platform-tests/docs/assets/custom.css b/tests/wpt/web-platform-tests/docs/assets/custom.css
index a5f59ce7721..58a982579f0 100644
--- a/tests/wpt/web-platform-tests/docs/assets/custom.css
+++ b/tests/wpt/web-platform-tests/docs/assets/custom.css
@@ -4,4 +4,8 @@ div.body {
#video-introduction-transcript iframe {
max-width: 100%;
+}
+
+.table-container {
+ overflow: auto;
} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
index 0f5673016c0..520c5a32e07 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md
@@ -482,6 +482,8 @@ use [git](https://git-scm.com) to perform more powerful searches.
The following table lists some common search criteria and examples of how they
can be expressed using regular expressions:
+<div class="table-container">
+
```eval_rst
================================= ================== ==========================
Criteria Example match Example regular expression
@@ -494,6 +496,8 @@ CSS property name ``style="foo: 4"`` ``([{;=\"']|\s|^)foo\s+:``
================================= ================== ==========================
```
+</div>
+
Bear in mind that searches like this are not necessarily exhaustive. Depending
on the feature, it may be difficult (or even impossible) to write a query that
correctly identifies all relevant tests. This strategy can give a helpful
diff --git a/tests/wpt/web-platform-tests/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html b/tests/wpt/web-platform-tests/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html
index 3af5e924177..571a388f644 100644
--- a/tests/wpt/web-platform-tests/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html
+++ b/tests/wpt/web-platform-tests/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html
@@ -8,15 +8,6 @@
<script src="resources/orientation-event-helpers.js"></script>
<script>
-function waitForLackOfEvent(t, eventName) {
- return new Promise(async (resolve, reject) => {
- window.addEventListener(eventName, reject);
- await new Promise(r => t.step_timeout(r, 1000));
- window.removeEventListener(eventName, reject);
- resolve();
- });
-}
-
if (window.location.origin != get_host_info().HTTP_ORIGIN) {
window.location = get_host_info().HTTP_ORIGIN + window.location.pathname;
promise_test(_ => new Promise(_ => {}), "Stall tests on the wrong host.");
@@ -36,25 +27,29 @@ if (window.location.origin != get_host_info().HTTP_ORIGIN) {
const FAKE_ACCELERATION_DATA = [1, 2, 3];
const FAKE_LINEAR_ACCELERATION_DATA = [4, 5, 6];
const FAKE_GYROSCOPE_DATA = [7, 8, 9];
+
+ window.ondevicemotion = t.unreached_func("devicemotion event should not be fired.");
setMockSensorDataForType(sensorProvider, 'Accelerometer', FAKE_ACCELERATION_DATA);
setMockSensorDataForType(sensorProvider, 'LinearAccelerationSensor', FAKE_LINEAR_ACCELERATION_DATA);
setMockSensorDataForType(sensorProvider, 'Gyroscope', FAKE_GYROSCOPE_DATA);
- return waitForLackOfEvent(t, 'devicemotion');
+ await new Promise(r => t.step_timeout(r, 1000));
}, 'addEventListener() for `devicemotion` does not crash but the handler never fires.');
sensor_test(async (t, sensorProvider) => {
const FAKE_ORIENTATION_DATA = [1.1, 2.2, 3.3];
+ window.ondeviceorientation = t.unreached_func("deviceorientation event should not be fired.");
setMockSensorDataForType(sensorProvider, 'RelativeOrientationEulerAngles', FAKE_ORIENTATION_DATA);
- return waitForLackOfEvent(t, 'deviceorientation');
+ await new Promise(r => t.step_timeout(r, 1000));
}, 'addEventListener() for `deviceorientation` does not crash but the handler never fires.');
sensor_test(async (t, sensorProvider) => {
const FAKE_ORIENTATION_DATA = [1.1, 2.2, 3.3];
+ window.ondeviceorientationabsolute = t.unreached_func("deviceorientationabsolute event should not be fired.");
setMockSensorDataForType(sensorProvider, 'AbsoluteOrientationEulerAngles', FAKE_ORIENTATION_DATA);
- return waitForLackOfEvent(t, 'deviceorientationabsolute');
+ await new Promise(r => t.step_timeout(r, 1000));
}, 'addEventListener() for `deviceorientationabsolute` does not crash but the handler never fires.');
}
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/add-during-dispatch.https.html b/tests/wpt/web-platform-tests/orientation-event/motion/add-during-dispatch.https.html
index d40b557a2d6..3a895b9d096 100644
--- a/tests/wpt/web-platform-tests/orientation-event/motion/add-during-dispatch.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/motion/add-during-dispatch.https.html
@@ -12,11 +12,18 @@ sensor_test(async (t, sensorProvider) => {
4, 5, 6,
7, 8, 9);
setMockMotionData(sensorProvider, motionData);
- waitForMotion(motionData);
return new Promise((resolve, reject) => {
let result = reject;
- window.addEventListener('devicemotion', event => result());
+ window.addEventListener('devicemotion', event1 => {
+ // Now we are in event dispatch.
+ assertEventEquals(event1, getExpectedMotionEvent(motionData));
+ window.addEventListener('devicemotion', event2 => {
+ // Not call until the outer function returns.
+ assertEventEquals(event2, getExpectedMotionEvent(motionData));
+ result();
+ });
+ });
result = resolve;
});
}, 'Test no fire listeners added during event dispatch.');
diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/add-listener-from-callback.https.html b/tests/wpt/web-platform-tests/orientation-event/motion/add-listener-from-callback.https.html
index 11f2695794c..0803d7cc9bf 100644
--- a/tests/wpt/web-platform-tests/orientation-event/motion/add-listener-from-callback.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/motion/add-listener-from-callback.https.html
@@ -20,7 +20,7 @@ sensor_test(async (t, sensorProvider) => {
assert_true(event instanceof DeviceMotionEvent, 'event is DeviceMotionEvent');
assert_equals(event.type, 'devicemotion', 'event.type is devicemotion');
assert_true(event.target instanceof Window, 'event is fired on the window object');
- checkMotion(event, motionData);
+ assertEventEquals(event, getExpectedMotionEvent(motionData));
window.removeEventListener('devicemotion', firstListener);
if (++firstEventCount == 1) {
window.addEventListener('devicemotion', secondListener);
@@ -32,7 +32,7 @@ sensor_test(async (t, sensorProvider) => {
let secondEventCount = 0;
let secondPromise = new Promise(resolve => {
secondListener = (event) => {
- checkMotion(event, motionData);
+ assertEventEquals(event, getExpectedMotionEvent(motionData));
window.removeEventListener('devicemotion', secondListener);
++secondEventCount;
resolve(event);
diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/multiple-event-listeners.https.html b/tests/wpt/web-platform-tests/orientation-event/motion/multiple-event-listeners.https.html
index ad851eec291..207fdd2d9c0 100644
--- a/tests/wpt/web-platform-tests/orientation-event/motion/multiple-event-listeners.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/motion/multiple-event-listeners.https.html
@@ -19,19 +19,24 @@ sensor_test(async (t, sensorProvider) => {
let firstEventPromise = new Promise(resolve => {
firstListener = resolve;
});
- // We directly add the listener instead of using waitForMotion
- // because we want the listener to stay active after the first event fires.
+ // We directly add the listener instead of using EventWatcher
+ // because we want to remove listener after the first event fires
+ // but EventWatcher could only stop watching after test done.
window.addEventListener('devicemotion', firstListener);
- let secondEventPromise = waitForMotion(motionData1);
+
+ const watcher = new EventWatcher(t, window, ['devicemotion']);
setMockMotionData(sensorProvider, motionData1);
+
let firstEvent = await firstEventPromise;
- checkMotion(firstEvent, motionData1);
- await secondEventPromise;
+ assertEventEquals(firstEvent, getExpectedMotionEvent(motionData1));
+ let secondEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(secondEvent, getExpectedMotionEvent(motionData1));
- // At this point only the first event listener is active.
- setMockMotionData(sensorProvider, motionData2);
window.removeEventListener('devicemotion', firstListener);
- return waitForMotion(motionData2);
+ // At this point only the second event listener is active.
+ setMockMotionData(sensorProvider, motionData2);
+ let thirdEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(thirdEvent, getExpectedMotionEvent(motionData2));
}, 'Tests using multiple event handlers for the Device Motion API.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/null-values.https.html b/tests/wpt/web-platform-tests/orientation-event/motion/null-values.https.html
index 4da64c0c9e8..a6035543ba4 100644
--- a/tests/wpt/web-platform-tests/orientation-event/motion/null-values.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/motion/null-values.https.html
@@ -24,16 +24,21 @@ sensor_test(async (t, sensorProvider) => {
null, null, null,
null, null, null);
+ const watcher = new EventWatcher(t, window, ['devicemotion']);
setMockMotionData(sensorProvider, motionData1);
- await waitForMotion(motionData1);
+ const firstEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(firstEvent, getExpectedMotionEvent(motionData1));
setMockMotionData(sensorProvider, motionData2);
- await waitForMotion(motionData2);
+ const secondEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(secondEvent, getExpectedMotionEvent(motionData2));
setMockMotionData(sensorProvider, motionData3);
- await waitForMotion(motionData3);
+ const thirdEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(thirdEvent, getExpectedMotionEvent(motionData3));
setMockMotionData(sensorProvider, motionData4);
- return waitForMotion(motionData4);
+ const fourthEvent = await watcher.wait_for('devicemotion');
+ assertEventEquals(fourthEvent, getExpectedMotionEvent(motionData4));
}, 'Tests using null values for some or all of the event properties.');
-</script>
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/absolute-fallback.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/absolute-fallback.https.html
index de0770a9f75..835d2441b35 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/absolute-fallback.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/absolute-fallback.https.html
@@ -9,11 +9,13 @@
sensor_test(async (t, sensorProvider) => {
const orientationData = generateOrientationData(1.1, 2.2, 3.3, true);
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
// Make the relative orientation sensor unavailable and set mock data for
// the absolute one.
sensorProvider.setGetSensorShouldFail('RelativeOrientationEulerAngles', true);
setMockOrientationData(sensorProvider, orientationData);
- return waitForOrientation(orientationData);
+ const event = await watcher.wait_for('deviceorientation');
+ assertEventEquals(event, getExpectedOrientationEvent(orientationData));
}, 'Tests that deviceorientation falls back to using absolute orientation data if relative is unavailable.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/add-listener-from-callback.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/add-listener-from-callback.https.html
index 040e2a2f5d1..8f8cfa29c4f 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/add-listener-from-callback.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/add-listener-from-callback.https.html
@@ -18,7 +18,7 @@ sensor_test(async (t, sensorProvider) => {
assert_true(event instanceof DeviceOrientationEvent, 'event is DeviceOrientationEvent');
assert_equals(event.type, 'deviceorientation', 'event.type is devicemotion');
assert_true(event.target instanceof Window, 'event is fired on the window object');
- checkOrientation(event, orientationData);
+ assertEventEquals(event, getExpectedOrientationEvent(orientationData));
window.removeEventListener('deviceorientation', firstListener);
if (++firstEventCount == 1) {
window.addEventListener('deviceorientation', secondListener);
@@ -30,7 +30,7 @@ sensor_test(async (t, sensorProvider) => {
let secondEventCount = 0;
let secondPromise = new Promise(resolve => {
secondListener = (event) => {
- checkOrientation(event, orientationData);
+ assertEventEquals(event, getExpectedOrientationEvent(orientationData));
window.removeEventListener('deviceorientation', secondListener);
++secondEventCount;
resolve(event);
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation-absolute.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation-absolute.https.html
index bc35e1498f4..05ac82cd35f 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation-absolute.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation-absolute.https.html
@@ -9,8 +9,23 @@
sensor_test(async (t, sensorProvider) => {
const orientationData = generateOrientationData(1.1, 2.2, 3.3, true);
+ const watcher = new EventWatcher(t, window, ['deviceorientationabsolute']);
setMockOrientationData(sensorProvider, orientationData);
- return waitForAbsoluteOrientation(orientationData);
+ const event = await watcher.wait_for('deviceorientationabsolute');
+ assertEventEquals(event, getExpectedAbsoluteOrientationEvent(orientationData));
}, 'Tests basic operation of deviceorientationabsolute event using mock data.');
+
+sensor_test(async (t, sensorProvider) => {
+ const orientationData = generateOrientationData(null, null, null, true);
+ const watcher = new EventWatcher(t, window, ['deviceorientationabsolute']);
+
+ // Make the absolute orientation sensor unavailable
+ sensorProvider.setGetSensorShouldFail('AbsoluteOrientationEulerAngles', true);
+ const event = await watcher.wait_for('deviceorientationabsolute');
+ assert_equals(event.type, 'deviceorientationabsolute', 'type is set to \"deviceorientationabsolute\"');
+ assert_true(event instanceof DeviceOrientationEvent, 'event is DeviceOrientationEvent');
+
+ assertEventEquals(event, getExpectedAbsoluteOrientationEvent(orientationData));
+}, 'If UA can never provide absolute information, the event should be fired as a null event.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation.https.html
index eb57d141b35..3806ee0792a 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/basic-operation.https.html
@@ -9,8 +9,24 @@
sensor_test(async (t, sensorProvider) => {
const orientationData = generateOrientationData(1.1, 2.2, 3.3, false);
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
setMockOrientationData(sensorProvider, orientationData);
- return waitForOrientation(orientationData);
+ const event = await watcher.wait_for('deviceorientation');
+ assertEventEquals(event, getExpectedOrientationEvent(orientationData));
}, 'Tests basic operation of deviceorientation event using mock data.');
+
+sensor_test(async (t, sensorProvider) => {
+ const orientationData = generateOrientationData(null, null, null, false);
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
+
+ // Make the orientation sensor unavailable
+ sensorProvider.setGetSensorShouldFail('AbsoluteOrientationEulerAngles', true);
+ sensorProvider.setGetSensorShouldFail('RelativeOrientationEulerAngles', true);
+ const event = await watcher.wait_for('deviceorientation');
+ assert_equals(event.type, 'deviceorientation', 'type is set to \"deviceorientation\"');
+ assert_true(event instanceof DeviceOrientationEvent, 'event is DeviceOrientationEvent');
+
+ assertEventEquals(event, getExpectedOrientationEvent(orientationData));
+}, 'If UA can never provide orientation information, the event should be fired as a null event.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/deviceorientationabsoluteevent.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/deviceorientationabsoluteevent.https.html
deleted file mode 100644
index e63783f6cf4..00000000000
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/deviceorientationabsoluteevent.https.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>DeviceOrientationEvent attributes should be fired properly</title>
- <meta charset='utf-8'>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
- <p>If an implementation can never provide absolute orientation information, the event should be fired with the alpha, beta and gamma attributes set to null.</p>
- <div id="log"></div>
- <script>
- var t = async_test("deviceorientationabsolute event fires");
- var run = false;
- window.addEventListener("deviceorientationabsolute", function(e) {
- if (!run) {
- run = true;
- t.step(function () {
- assert_true(e instanceof DeviceOrientationEvent);
- assert_equals(e.type, "deviceorientationabsolute", "type is set to \"deviceorientationabsolute\"");
- assert_equals(e.alpha, null, "alpha is set to null");
- assert_equals(e.beta, null, "beta is set to null");
- assert_equals(e.gamma, null, "gamma is set to null");
- assert_true(e.absolute, "absolute is set to true");
- });
- t.done();
- }
- }, false);
- </script>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/multiple-event-listeners.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/multiple-event-listeners.https.html
index 3a8add23c94..13d05f0c745 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/multiple-event-listeners.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/multiple-event-listeners.https.html
@@ -15,18 +15,24 @@ sensor_test(async (t, sensorProvider) => {
let firstEventPromise = new Promise(resolve => {
firstListener = resolve;
});
- // We directly add the listener instead of using waitForOrientation
- // because we want the listener to stay active after the first event fires.
+ // We directly add the listener instead of using EventWatcher
+ // because we want to remove listener after the first event fires
+ // but EventWatcher could only stop watching after test done.
window.addEventListener('deviceorientation', firstListener);
- let secondEventPromise = waitForOrientation(orientationData1);
+
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
setMockOrientationData(sensorProvider, orientationData1);
+
let firstEvent = await firstEventPromise;
- checkOrientation(firstEvent, orientationData1);
- await secondEventPromise;
+ assertEventEquals(firstEvent, getExpectedOrientationEvent(orientationData1));
+ let secondEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(secondEvent, getExpectedOrientationEvent(orientationData1));
- // At this point only the first listener is still active.
- setMockOrientationData(sensorProvider, orientationData2);
window.removeEventListener('deviceorientation', firstListener);
- return waitForOrientation(orientationData2);
+ // At this point only the second event listener is still active.
+ setMockOrientationData(sensorProvider, orientationData2);
+
+ let thirdEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(thirdEvent, getExpectedOrientationEvent(orientationData2));
}, 'Tests using multiple event handlers for the Device Orientation API.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/null-values.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/null-values.https.html
index df18f35c6ca..55039ea2763 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/null-values.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/null-values.https.html
@@ -1,5 +1,4 @@
<!DOCTYPE html>
-<html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
@@ -16,17 +15,21 @@ sensor_test(async (t, sensorProvider) => {
// will stop updating the sensor when it sees a null event.
const orientationData4 = generateOrientationData(null, null, null, false);
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
setMockOrientationData(sensorProvider, orientationData1);
- await waitForOrientation(orientationData1);
+ const firstEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(firstEvent, getExpectedOrientationEvent(orientationData1));
setMockOrientationData(sensorProvider, orientationData2);
- await waitForOrientation(orientationData2);
+ const secondEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(secondEvent, getExpectedOrientationEvent(orientationData2));
setMockOrientationData(sensorProvider, orientationData3);
- await waitForOrientation(orientationData3);
+ const thirdEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(thirdEvent, getExpectedOrientationEvent(orientationData3));
setMockOrientationData(sensorProvider, orientationData4);
- return waitForOrientation(orientationData4);
+ const fourthEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(fourthEvent, getExpectedOrientationEvent(orientationData4));
}, 'Tests using null values for some of the event properties.');
</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/updates.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/updates.https.html
index 09472e6b419..de203da0a3a 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/updates.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/updates.https.html
@@ -11,10 +11,13 @@ sensor_test(async (t, sensorProvider) => {
const orientationData1 = generateOrientationData(1.1, 2.2, 3.3, false);
const orientationData2 = generateOrientationData(11.1, 22.2, 33.3, false);
+ const watcher = new EventWatcher(t, window, ['deviceorientation']);
setMockOrientationData(sensorProvider, orientationData1);
- await waitForOrientation(orientationData1);
+ const firstEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(firstEvent, getExpectedOrientationEvent(orientationData1));
setMockOrientationData(sensorProvider, orientationData2);
- return waitForOrientation(orientationData2);
+ const secondEvent = await watcher.wait_for('deviceorientation');
+ assertEventEquals(secondEvent, getExpectedOrientationEvent(orientationData2));
}, 'Tests that updates to the orientation causes new events to fire.');
</script>
diff --git a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
index 528dfa9a7a0..3168b71c5ec 100644
--- a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
+++ b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
@@ -128,120 +128,54 @@ function setMockOrientationData(sensorProvider, orientationData) {
]);
}
-function checkMotion(event, expectedMotionData) {
- assert_equals(event.acceleration.x, expectedMotionData.accelerationX, "acceleration.x");
- assert_equals(event.acceleration.y, expectedMotionData.accelerationY, "acceleration.y");
- assert_equals(event.acceleration.z, expectedMotionData.accelerationZ, "acceleration.z");
-
- assert_equals(event.accelerationIncludingGravity.x, expectedMotionData.accelerationIncludingGravityX, "accelerationIncludingGravity.x");
- assert_equals(event.accelerationIncludingGravity.y, expectedMotionData.accelerationIncludingGravityY, "accelerationIncludingGravity.y");
- assert_equals(event.accelerationIncludingGravity.z, expectedMotionData.accelerationIncludingGravityZ, "accelerationIncludingGravity.z");
-
- assert_approx_equals(event.rotationRate.alpha, expectedMotionData.rotationRateAlpha, MOTION_ROTATION_EPSILON, "rotationRate.alpha");
- assert_approx_equals(event.rotationRate.beta, expectedMotionData.rotationRateBeta, MOTION_ROTATION_EPSILON, "rotationRate.beta");
- assert_approx_equals(event.rotationRate.gamma, expectedMotionData.rotationRateGamma, MOTION_ROTATION_EPSILON, "rotationRate.gamma");
-
- assert_equals(event.interval, expectedMotionData.interval, "interval");
-}
-
-function checkOrientation(event, expectedOrientationData) {
- assert_equals(event.alpha, expectedOrientationData.alpha, "alpha");
- assert_equals(event.beta, expectedOrientationData.beta, "beta");
- assert_equals(event.gamma, expectedOrientationData.gamma, "gamma");
-
- assert_equals(event.absolute, expectedOrientationData.absolute, "absolute");
-}
-
-// Returns a promise that will be resolved when an event equal to the given
-// event is fired.
-function waitForEvent(expectedEvent, targetWindow = window) {
- const stringify = (thing, targetWindow) => {
- if (thing instanceof targetWindow.Object && thing.constructor !== targetWindow.Object) {
- let str = '{';
- for (let key of Object.keys(Object.getPrototypeOf(thing))) {
- str += JSON.stringify(key) + ': ' + stringify(thing[key], targetWindow) + ', ';
+function assertEventEquals(actualEvent, expectedEvent) {
+ for (let key1 of Object.keys(Object.getPrototypeOf(expectedEvent))) {
+ if (typeof expectedEvent[key1] === "object" && expectedEvent[key1] !== null) {
+ for (let key2 of Object.keys(expectedEvent[key1])) {
+ assert_equals(actualEvent[key1][key2], expectedEvent[key1][key2],
+ `$[key1].$[key2]`);
}
- return str + '}';
- } else if (thing instanceof Number) {
- return thing.toFixed(6);
+ } else {
+ assert_equals(actualEvent[key1], expectedEvent[key1], key1);
}
- return JSON.stringify(thing);
- };
-
- return new Promise((resolve, reject) => {
- let events = [];
- let timeoutId = null;
-
- const expectedEventString = stringify(expectedEvent, window);
- function listener(event) {
- const eventString = stringify(event, targetWindow);
- if (eventString === expectedEventString) {
- targetWindow.clearTimeout(timeoutId);
- targetWindow.removeEventListener(expectedEvent.type, listener);
- resolve();
- } else {
- events.push(eventString);
- }
- }
- targetWindow.addEventListener(expectedEvent.type, listener);
-
- timeoutId = targetWindow.setTimeout(() => {
- targetWindow.removeEventListener(expectedEvent.type, listener);
- let errorMessage = 'Timeout waiting for expected event: ' + expectedEventString;
- if (events.length == 0) {
- errorMessage += ', no events were fired';
- } else {
- errorMessage += ', received events: '
- for (let event of events) {
- errorMessage += event + ', ';
- }
- }
- reject(errorMessage);
- }, 500);
- });
+ }
}
-function waitForOrientation(expectedOrientationData, targetWindow = window) {
- return waitForEvent(
- new DeviceOrientationEvent('deviceorientation', {
- alpha: expectedOrientationData.alpha,
- beta: expectedOrientationData.beta,
- gamma: expectedOrientationData.gamma,
- absolute: expectedOrientationData.absolute,
- }),
- targetWindow);
+function getExpectedOrientationEvent(expectedOrientationData) {
+ return new DeviceOrientationEvent('deviceorientation', {
+ alpha: expectedOrientationData.alpha,
+ beta: expectedOrientationData.beta,
+ gamma: expectedOrientationData.gamma,
+ absolute: expectedOrientationData.absolute,
+ });
}
-function waitForAbsoluteOrientation(expectedOrientationData, targetWindow = window) {
- return waitForEvent(
- new DeviceOrientationEvent('deviceorientationabsolute', {
- alpha: expectedOrientationData.alpha,
- beta: expectedOrientationData.beta,
- gamma: expectedOrientationData.gamma,
- absolute: expectedOrientationData.absolute,
- }),
- targetWindow);
+function getExpectedAbsoluteOrientationEvent(expectedOrientationData) {
+ return new DeviceOrientationEvent('deviceorientationabsolute', {
+ alpha: expectedOrientationData.alpha,
+ beta: expectedOrientationData.beta,
+ gamma: expectedOrientationData.gamma,
+ absolute: expectedOrientationData.absolute,
+ });
}
-function waitForMotion(expectedMotionData, targetWindow = window) {
- return waitForEvent(
- new DeviceMotionEvent('devicemotion', {
- acceleration: {
- x: expectedMotionData.accelerationX,
- y: expectedMotionData.accelerationY,
- z: expectedMotionData.accelerationZ,
- },
- accelerationIncludingGravity: {
- x: expectedMotionData.accelerationIncludingGravityX,
- y: expectedMotionData.accelerationIncludingGravityY,
- z: expectedMotionData.accelerationIncludingGravityZ,
- },
- rotationRate: {
- alpha: expectedMotionData.rotationRateAlpha,
- beta: expectedMotionData.rotationRateBeta,
- gamma: expectedMotionData.rotationRateGamma,
- },
- interval: expectedMotionData.interval,
- }),
- targetWindow);
+function getExpectedMotionEvent(expectedMotionData) {
+ return new DeviceMotionEvent('devicemotion', {
+ acceleration: {
+ x: expectedMotionData.accelerationX,
+ y: expectedMotionData.accelerationY,
+ z: expectedMotionData.accelerationZ,
+ },
+ accelerationIncludingGravity: {
+ x: expectedMotionData.accelerationIncludingGravityX,
+ y: expectedMotionData.accelerationIncludingGravityY,
+ z: expectedMotionData.accelerationIncludingGravityZ,
+ },
+ rotationRate: {
+ alpha: expectedMotionData.rotationRateAlpha,
+ beta: expectedMotionData.rotationRateBeta,
+ gamma: expectedMotionData.rotationRateGamma,
+ },
+ interval: expectedMotionData.interval,
+ });
}
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-08-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-08-b-manual.svg
index 654ec8d409b..ba7413e2c5f 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-08-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-08-b-manual.svg
@@ -75,11 +75,11 @@
<!-- ====================================================================== -->
<!-- Gradient on fill of text ======== -->
<!-- ====================================================================== -->
- <text font-family="Blocky" font-size="68" fill="url(#Gradient)" x="20" y="70">Gradient on fill</text>
+ <text font-family="Blocky, sans-serif" font-size="68" fill="url(#Gradient)" x="20" y="70">Gradient on fill</text>
<!-- ====================================================================== -->
<!-- Gradient on stroke of text ======== -->
<!-- ====================================================================== -->
- <text font-family="Blocky" x="20" y="160" font-size="55" fill="none" stroke="url(#Gradient)" stroke-width="3">Gradient on stroke</text>
+ <text font-family="Blocky, sans-serif" x="20" y="160" font-size="55" fill="none" stroke="url(#Gradient)" stroke-width="3">Gradient on stroke</text>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="28">
diff --git a/tests/wpt/web-platform-tests/svg/import/text-altglyph-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-altglyph-01-b-manual.svg
index db208cea587..85a31a18a29 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-altglyph-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-altglyph-01-b-manual.svg
@@ -100,7 +100,7 @@
<glyphRef xlink:href="#Y1"/>
</altGlyphDef>
</defs>
- <g font-family="HappySad" font-size="60" fill="none" stroke-width="5">
+ <g font-family="HappySad, sans-serif" font-size="60" fill="none" stroke-width="5">
<text x="140" y="190" stroke="fuchsia">
<altGlyph xlink:href="#Hsmile">H</altGlyph>
<altGlyph xlink:href="#Asmile">A</altGlyph>
diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb
index d58664c5b6c..6afe1c188f9 100644
--- a/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb
+++ b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb
@@ -1,10 +1,10 @@
cask 'safari-technology-preview' do
if MacOS.version <= :mojave
- version '104,061-96689-20200407-7f675598-e07d-46db-8b24-b10c33a006ba'
- sha256 'bc1b0a79f99022aae802bbb1e83a6a13613a339115063489fc240567b1b5d81d'
+ version '105,001-02874-20200422-3f38295f-da03-425d-9100-ae835120f1c7'
+ sha256 'ce15f783b3e46c0e1267196956d79ea416a14005b6f733c68be5104ea57da20e'
else
- version '104,061-96685-20200407-907fca12-9ba9-4bfa-8b8c-d5bf101d534b'
- sha256 '3dcfde56386f38984c9ede1d67714c43699c5cafece9608ee2730484bffdcf9c'
+ version '105,001-00430-20200422-c04186cc-77e2-42a7-a3c8-6881c4447f31'
+ sha256 '443675a62bbe054216129bdd5c91da57c18b3be6b61455ea16f27d35a9be7996'
end
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/interface/interface.py b/tests/wpt/web-platform-tests/webdriver/tests/interface/interface.py
new file mode 100644
index 00000000000..6a7afcd2635
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/interface/interface.py
@@ -0,0 +1,2 @@
+def test_navigator_webdriver_active(session):
+ assert session.execute_script("return navigator.webdriver") is True