diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini deleted file mode 100644 index f29da48a2a0..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-003.html] - [Miss float below something else] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..e38782d8c85 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + 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 c131078eace..23c61ede1a1 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,3 +17,6 @@ [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/geometry/idlharness.html.ini b/tests/wpt/metadata-layout-2020/css/geometry/idlharness.any.js.ini similarity index 69% rename from tests/wpt/metadata/css/geometry/idlharness.html.ini rename to tests/wpt/metadata-layout-2020/css/geometry/idlharness.any.js.ini index 5758b290e1b..8e29d594f0d 100644 --- a/tests/wpt/metadata/css/geometry/idlharness.html.ini +++ b/tests/wpt/metadata-layout-2020/css/geometry/idlharness.any.js.ini @@ -1,4 +1,36 @@ -[idlharness.html] +[idlharness.any.worker.html] + [DOMRectReadOnly interface: operation fromRect(optional DOMRectInit)] + expected: FAIL + + [DOMPointReadOnly interface: calling matrixTransform(optional DOMMatrixInit) on new DOMPoint() with too few arguments must throw TypeError] + expected: FAIL + + [DOMPointReadOnly interface: operation matrixTransform(optional DOMMatrixInit)] + expected: FAIL + + [DOMRect interface: operation fromRect(optional DOMRectInit)] + expected: FAIL + + [DOMPointReadOnly interface: new DOMPoint() must inherit property "matrixTransform(optional DOMMatrixInit)" with the proper type] + expected: FAIL + + [DOMRectReadOnly interface: calling fromRect(optional DOMRectInit) on new DOMRect() with too few arguments must throw TypeError] + expected: FAIL + + [DOMRect interface: calling fromRect(optional DOMRectInit) on new DOMRect() with too few arguments must throw TypeError] + expected: FAIL + + [DOMRectReadOnly interface: calling fromRect(optional DOMRectInit) on new DOMRectReadOnly() with too few arguments must throw TypeError] + expected: FAIL + + [DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "matrixTransform(optional DOMMatrixInit)" with the proper type] + expected: FAIL + + [DOMPointReadOnly interface: calling matrixTransform(optional DOMMatrixInit) on new DOMPointReadOnly() with too few arguments must throw TypeError] + expected: FAIL + + +[idlharness.any.html] [DOMRectReadOnly interface: operation fromRect(optional DOMRectInit)] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/encoding/iso-2022-jp-encoder.html.ini b/tests/wpt/metadata-layout-2020/encoding/iso-2022-jp-encoder.html.ini new file mode 100644 index 00000000000..1b0af6789e3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/encoding/iso-2022-jp-encoder.html.ini @@ -0,0 +1,34 @@ +[iso-2022-jp-encoder.html] + [iso-2022-jp encoder: Katakana SO/SI ESC] + expected: FAIL + + [iso-2022-jp encoder: Katakana U+FFFD] + expected: FAIL + + [iso-2022-jp encoder: jis0208] + expected: FAIL + + [iso-2022-jp encoder: jis0208 U+FFFD] + expected: FAIL + + [iso-2022-jp encoder: Katakana] + expected: FAIL + + [iso-2022-jp encoder: basics] + expected: FAIL + + [iso-2022-jp encoder: Roman U+FFFD] + expected: FAIL + + [iso-2022-jp encoder: Roman SO/SI ESC] + expected: FAIL + + [iso-2022-jp encoder: U+FFFD] + expected: FAIL + + [iso-2022-jp encoder: jis0208 SO/SI ESC] + expected: FAIL + + [iso-2022-jp encoder: SO/SI ESC] + 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 a179b659fd4..6b3f7fb96c3 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 @@ -318,18 +318,18 @@ [ - + + + + diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/virtual_authenticator.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/virtual_authenticator.html index 204c95608b5..04c14719d41 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/virtual_authenticator.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/virtual_authenticator.html @@ -8,6 +8,13 @@ diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js index db47da0c0a6..9a7195fc5bd 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-objecturl.js @@ -1,23 +1,35 @@ importScripts("/resources/testharness.js"); -test((t) => { +test(t => { + // The Window test html conditionally fetches and runs these tests only if the + // implementation exposes a true-valued static canConstructInDedicatedWorker + // attribute on MediaSource in the Window context. So, the implementation must + // agree on support here in the dedicated worker context. + + // Ensure we're executing in a dedicated worker context. + assert_true(self instanceof DedicatedWorkerGlobalScope, "self instanceof DedicatedWorkerGlobalScope"); + assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker", "DedicatedWorker MediaSource hasOwnProperty 'canConstructInDedicatedWorker'")); + assert_true(MediaSource.canConstructInDedicatedWorker, "DedicatedWorker MediaSource.canConstructInDedicatedWorker"); +}, "MediaSource in DedicatedWorker context must have true-valued canConstructInDedicatedWorker if Window context had it"); + +test(t => { const ms = new MediaSource(); assert_equals(ms.readyState, "closed"); -}, "MediaSource construction succeeds with initial closed readyState in dedicated worker"); +}, "MediaSource construction succeeds with initial closed readyState in DedicatedWorker"); -test((t) => { +test(t => { const ms = new MediaSource(); const url = URL.createObjectURL(ms); assert_true(url != null); assert_true(url.match(/^blob:.+/) != null); -}, "URL.createObjectURL(mediaSource) in dedicated worker returns a Blob URI"); +}, "URL.createObjectURL(mediaSource) in DedicatedWorker returns a Blob URI"); -test((t) => { +test(t => { const ms = new MediaSource(); const url1 = URL.createObjectURL(ms); const url2 = URL.createObjectURL(ms); URL.revokeObjectURL(url1); URL.revokeObjectURL(url2); -}, "URL.revokeObjectURL(mediaSource) in dedicated worker with two url for same MediaSource"); +}, "URL.revokeObjectURL(mediaSource) in DedicatedWorker with two url for same MediaSource"); done(); diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html index 69f2cbaaea3..138e9ecfe6e 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html @@ -18,13 +18,10 @@ function terminateWorkerAfterMultipleSetTimeouts(test, worker, timeouts_remainin } function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to_await) { - // TODO(https://crbug.com/878133): Enable main-thread feature detection of - // whether or not the implementation supports MSE-in-Workers, and fail the - // test rapidly here rather than flakily pass/failing the test on those - // implementations. If the timeout occurs near to when the worker's report - // of lack of MSE support reaches the main thread, then the test could - // pass in some cases (when timeout occurs prior to handling that error) - // and fail in others (when worker.onerror dispatch occurs first). + // Fail fast if MSE-in-Workers is not supported. + assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker"), "MediaSource hasOwnProperty 'canConstructInDedicatedWorker'"); + assert_true(MediaSource.canConstructInDedicatedWorker, "MediaSource.canConstructInDedicatedWorker"); + const worker = new Worker("mediasource-worker-util.js"); worker.onerror = test.unreached_func("worker error"); @@ -46,7 +43,7 @@ function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to terminateWorkerAfterMultipleSetTimeouts(test, worker, timeouts_to_await); } - worker.onmessage = test.step_func((e) => { + worker.onmessage = test.step_func(e => { if (e.data.substr(0,6) == "Error:") { assert_unreached("Worker error: " + e.data); } else { @@ -68,9 +65,9 @@ function startWorkerAndTerminateWorker(test, when_to_start_timeouts, timeouts_to }); } -[ "before setting src", "after setting src", "after first ended event" ].forEach((when) => { +[ "before setting src", "after setting src", "after first ended event" ].forEach(when => { for (let timeouts = 0; timeouts < 10; ++timeouts) { - async_test((test) => { startWorkerAndTerminateWorker(test, when, timeouts); }, + async_test(test => { startWorkerAndTerminateWorker(test, when, timeouts); }, "Test worker MediaSource termination after at least " + timeouts + " main thread setTimeouts, starting counting " + when); } diff --git a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html index 200f8a851bf..336cb8f3f65 100644 --- a/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html +++ b/tests/wpt/web-platform-tests/media-source/dedicated-worker/mediasource-worker-play.html @@ -6,15 +6,19 @@ + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-redirect-to-scope2.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-redirect-to-scope2.js new file mode 100644 index 00000000000..ae681ba30e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-redirect-to-scope2.js @@ -0,0 +1 @@ +import * as module from './redirect.py?Redirect=/service-workers/service-worker/resources/scope2/imported-module-script.js'; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-scope2.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-scope2.js new file mode 100644 index 00000000000..e28505249c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/module-worker-importing-scope2.js @@ -0,0 +1 @@ +import * as module from '../scope2/imported-module-script.js'; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/imported-module-script.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/imported-module-script.js new file mode 100644 index 00000000000..a18e704a3c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/imported-module-script.js @@ -0,0 +1,4 @@ +export const imported = 'A module script.'; +onmessage = msg => { + msg.source.postMessage('pong'); +}; diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py index f0a9524c90a..02b611e378b 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py @@ -1,6 +1,5 @@ import errno import os -import platform import shutil import socket import subprocess @@ -44,9 +43,6 @@ def get_persistent_manifest_path(): @pytest.fixture(scope="module", autouse=True) def init_manifest(): - # See https://github.com/pypa/virtualenv/issues/1710 - if sys.version_info[0] >= 3 and platform.system() == "Windows": - pytest.xfail(reason="virtualenv activation fails in Windows for python3") with pytest.raises(SystemExit) as excinfo: wpt.main(argv=["manifest", "--no-download", "--path", get_persistent_manifest_path()]) diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py index d3ffff61762..7ce53a590b6 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py @@ -86,7 +86,7 @@ class TestUsingServer(unittest.TestCase): assert resp.info()[name] == ", ".join(values) -@pytest.mark.skipif(not wptserve.utils.http2_compatible(), reason="h2 server only works in python 2.7.15") +@pytest.mark.skipif(not wptserve.utils.http2_compatible(), reason="h2 server only works in python 2.7.10+ and Python 3.6+") class TestUsingH2Server: def setup_method(self, test_method): self.server = wptserve.server.WebTestHttpd(host="localhost", diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/refine.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/refine.py index 3a6d63e04ce..d5d24e934f6 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/refine.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/refine.py @@ -9,6 +9,11 @@ def get_events(session): key = e["key"] hex_suffix = key[key.index("+") + 1:] e["key"] = unichr(int(hex_suffix, 16)) + + # WebKit sets code as 'Unidentified' for unidentified key codes, but + # tests expect ''. + if "code" in e and e["code"] == "Unidentified": + e["code"] = "" return events