diff --git a/test/wpt/status/FileAPI/file.json b/test/wpt/status/FileAPI/file.json index 6b50bcec1539..730767ae3388 100644 --- a/test/wpt/status/FileAPI/file.json +++ b/test/wpt/status/FileAPI/file.json @@ -1,17 +1,22 @@ { "Worker-read-file-constructor.worker.js": { - "skip": true + "fail": { + "note": "FileReader is not implemented", + "expected": [ + "FileReader in Worker" + ] + } }, "send-file-formdata-punctuation.any.js": { - "skip": true + "skip": "Needs fetch() and a WPT server" }, "send-file-formdata-utf-8.any.js": { - "skip": true + "skip": "Needs fetch() and a WPT server" }, "send-file-formdata.any.js": { - "skip": true + "skip": "Needs fetch() and a WPT server" }, "send-file-formdata-controls.any.js": { - "skip": true + "skip": "Needs fetch() and a WPT server" } } diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs index ae73e17f5bb9..286ec884996f 100644 --- a/test/wpt/status/WebCryptoAPI.cjs +++ b/test/wpt/status/WebCryptoAPI.cjs @@ -200,6 +200,13 @@ module.exports = { 'skip': 'Not relevant in Node.js context', }, 'historical.any.js': { - 'skip': 'Not relevant in Node.js context', + 'fail': { + 'note': 'The Web Crypto API is exposed regardless of secure context', + 'expected': [ + 'Non-secure context window does not have access to crypto.subtle', + 'Non-secure context window does not have access to SubtleCrypto', + 'Non-secure context window does not have access to CryptoKey', + ], + }, }, }; diff --git a/test/wpt/status/compression.json b/test/wpt/status/compression.json index 5c73f02a5871..0538767b6c0f 100644 --- a/test/wpt/status/compression.json +++ b/test/wpt/status/compression.json @@ -2,9 +2,6 @@ "compression-with-detach.window.js": { "requires": ["crypto"] }, - "idlharness-shadowrealm.window.js": { - "skip": "ShadowRealm support is not enabled" - }, "third_party/pako/pako_inflate.min.js": { "skip": "This is not a test file." } diff --git a/test/wpt/status/dom/abort.json b/test/wpt/status/dom/abort.json index 2ff9cc355d6a..0967ef424bce 100644 --- a/test/wpt/status/dom/abort.json +++ b/test/wpt/status/dom/abort.json @@ -1,5 +1 @@ -{ - "timeout-shadowrealm.any.js": { - "skip": "ShadowRealm support is not enabled" - } -} +{} diff --git a/test/wpt/status/dom/events.json b/test/wpt/status/dom/events.json index f621431c9fc2..c9c2924c31a3 100644 --- a/test/wpt/status/dom/events.json +++ b/test/wpt/status/dom/events.json @@ -12,8 +12,13 @@ "EventListener-addEventListener.sub.window.js": { "skip": "document is not defined" }, - "EventTarget-removeEventListener.any.js": { - "skip": "globalThis.removeEventListener is not a function" + "EventTarget-removeEventListener.any.html": { + "fail": { + "note": "globalThis does not have a removeEventListener function", + "expected": [ + "removing a null event listener should succeed" + ] + } }, "event-global-extra.window.js": { "skip": "document is not defined" diff --git a/test/wpt/status/encoding.json b/test/wpt/status/encoding.json index c258031e4855..63b5a21d7c70 100644 --- a/test/wpt/status/encoding.json +++ b/test/wpt/status/encoding.json @@ -19,22 +19,26 @@ }, "iso-2022-jp-decoder.any.js": { "requires": ["full-icu"], - "skip": "iso-2022-jp decoder state handling bug: https://encoding.spec.whatwg.org/#iso-2022-jp-decoder" + "fail": { + "note": "iso-2022-jp decoder state handling bug: https://encoding.spec.whatwg.org/#iso-2022-jp-decoder", + "expected": [ + "iso-2022-jp decoder: Error ESC", + "iso-2022-jp decoder: Katakana ESC, SO / SI", + "iso-2022-jp decoder: character, error ESC #2" + ] + } }, "textdecoder-byte-order-marks.any.js": { "requires": ["small-icu"] }, "textdecoder-fatal-single-byte.any.js": { - "requires": ["full-icu"], - "skip": "The iso-8859-16 encoding is not supported" + "requires": ["full-icu"] }, "textdecoder-labels.any.js": { - "requires": ["full-icu"], - "skip": "The iso-8859-16 encoding is not supported" + "requires": ["full-icu"] }, "textencoder-constructor-non-utf.any.js": { - "requires": ["full-icu"], - "skip": "The iso-8859-16 encoding is not supported" + "requires": ["full-icu"] }, "idlharness.any.js": { "requires": ["small-icu"] @@ -76,19 +80,20 @@ "requires": ["small-icu"] }, "legacy-mb-schinese/gbk/gbk-decoder.any.js": { - "requires": ["full-icu"], - "skip": "The gbk encoding is not supported" + "requires": ["full-icu"] }, "legacy-mb-schinese/gb18030/gb18030-decoder.any.js": { - "requires": ["full-icu"], - "skip": "The gb18030 encoding is not supported" + "requires": ["full-icu"] }, "textdecoder-arguments.any.js": { "requires": ["small-icu"] }, - "single-byte-decoder.window.js": { + "single-byte-decoder.window.js?document": { "skip": "document is not defined" }, + "single-byte-decoder.window.js?XMLHttpRequest": { + "skip": "XMLHttpRequest is not defined" + }, "textdecoder-eof.any.js": { "requires": ["small-icu"] }, diff --git a/test/wpt/status/hr-time.cjs b/test/wpt/status/hr-time.cjs index 35b82c87a1ea..0999372b6669 100644 --- a/test/wpt/status/hr-time.cjs +++ b/test/wpt/status/hr-time.cjs @@ -32,6 +32,11 @@ module.exports = { }, 'window-worker-timeOrigin.window.js': { - skip: 'depends on URL.createObjectURL(blob)', + fail: { + note: 'A worker shares the timeOrigin of the thread that spawned it', + expected: [ + 'timeOrigin and now() should be correctly ordered between window and worker', + ], + }, }, }; diff --git a/test/wpt/status/html/webappapis/timers.json b/test/wpt/status/html/webappapis/timers.json index 21e77a089d5c..6d9d61a89f0f 100644 --- a/test/wpt/status/html/webappapis/timers.json +++ b/test/wpt/status/html/webappapis/timers.json @@ -1,5 +1,10 @@ { "negative-settimeout.any.js": { - "skip": "unreliable in Node.js; Refs: https://github.com/nodejs/node/issues/37672" + "fail": { + "note": "unreliable in Node.js; Refs: https://github.com/nodejs/node/issues/37672", + "flaky": [ + "negative-settimeout" + ] + } } } diff --git a/test/wpt/status/performance-timeline.json b/test/wpt/status/performance-timeline.json index 799ee97538d0..a8ae25d58680 100644 --- a/test/wpt/status/performance-timeline.json +++ b/test/wpt/status/performance-timeline.json @@ -20,7 +20,12 @@ "skip": "This is not a test file." }, "webtiming-resolution.any.js": { - "skip": "flaky" + "fail": { + "note": "performance.now() has a finer resolution than the 5 microseconds expected by the test on fast hardware", + "flaky": [ + "Verifies the resolution of performance.now() is at least 5 microseconds." + ] + } }, "not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js": { "skip": "Depends on HTML WPT" diff --git a/test/wpt/status/streams.json b/test/wpt/status/streams.json index 968b33597651..a89f54486425 100644 --- a/test/wpt/status/streams.json +++ b/test/wpt/status/streams.json @@ -1,7 +1,4 @@ { - "idlharness-shadowrealm.window.js": { - "skip": "ShadowRealm support is not enabled" - }, "queuing-strategies-size-function-per-global.window.js": { "skip": "Browser-specific test" }, @@ -18,7 +15,16 @@ } }, "readable-streams/owning-type-video-frame.any.js": { - "skip": "Browser-specific test" + "fail": { + "note": "Readable streams with type owning are not yet supported", + "expected": [ + "ReadableStream of type owning should close serialized chunks", + "ReadableStream of type owning should transfer JS chunks with transferred values", + "ReadableStream of type owning should error when trying to enqueue not serializable values", + "ReadableStream of type owning should clone serializable objects when teeing", + "ReadableStream of type owning should clone JS Objects with serializables when teeing" + ] + } }, "readable-streams/owning-type.any.js": { "fail": { diff --git a/test/wpt/status/urlpattern.json b/test/wpt/status/urlpattern.json index c3ee2b3e3f15..1229d9eeec9d 100644 --- a/test/wpt/status/urlpattern.json +++ b/test/wpt/status/urlpattern.json @@ -1,14 +1,82 @@ { "urlpattern-generate.tentative.any.js": { - "skip": "generate function is not yet included in the URLPattern spec" - }, - "resources/urlpattern-compare-tests.tentative.js": { - "skip": "compareComponent function is not yet included in the URLPattern spec" + "fail": { + "note": "generate function is not yet included in the URLPattern spec", + "expected": [ + "Pattern: {\"pathname\":\"/foo\"} Component: pathname Groups: {}", + "Pattern: {\"pathname\":\"/:foo\"} Component: pathname Groups: {\"foo\":\"bar\"}", + "Pattern: {\"pathname\":\"/:foo\"} Component: pathname Groups: {\"foo\":\"🍅\"}", + "Pattern: {\"hostname\":\"{:foo}.example.com\"} Component: hostname Groups: {\"foo\":\"🍅\"}", + "Pattern: {\"pathname\":\"/foo/:bar\"} Component: pathname Groups: {\"bar\":\"baz\"}", + "Pattern: {\"pathname\":\"/foo:bar\"} Component: pathname Groups: {\"bar\":\"baz\"}", + "Pattern: {\"pathname\":\"/:foo/:bar\"} Component: pathname Groups: {\"foo\":\"baz\",\"bar\":\"qux\"}", + "Pattern: \"https://example.com/:foo\" Component: pathname Groups: {\"foo\":\" \"}", + "Pattern: \"original-scheme://example.com/:foo\" Component: pathname Groups: {\"foo\":\" \"}" + ] + } }, "urlpattern-compare.tentative.any.js": { - "skip": "compareComponent function is not yet included in the URLPattern spec" + "fail": { + "note": "compareComponent function is not yet included in the URLPattern spec", + "expected": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ] + } }, "urlpattern-compare.tentative.https.any.js": { - "skip": "compareComponent function is not yet included in the URLPattern spec" + "fail": { + "note": "compareComponent function is not yet included in the URLPattern spec", + "expected": [ + "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}", + "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}", + "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}", + "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}", + "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}", + "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}", + "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}", + "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"", + "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}", + "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}", + "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}", + "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}", + "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}", + "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}", + "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}" + ] + } } } diff --git a/test/wpt/status/user-timing.json b/test/wpt/status/user-timing.json index 7e0e70dcf20f..878396ba738b 100644 --- a/test/wpt/status/user-timing.json +++ b/test/wpt/status/user-timing.json @@ -2,10 +2,13 @@ "idlharness-shadowrealm.window.js": { "skip": "ShadowRealm support is not enabled" }, - "invoke_with_timing_attributes.worker.js": { - "skip": "importScripts not supported" - }, "performance-measure-invalid.worker.js": { - "skip": "importScripts not supported" + "fail": { + "note": "convert-a-name-to-a-timestamp requires a Window global", + "expected": [ + "When converting 'navigationStart' to a timestamp, the global object has to be a Window object.", + "When converting 'navigationStart' to a timestamp and a mark named 'navigationStart' exists, the global object has to be a Window object." + ] + } } } diff --git a/test/wpt/status/wasm/jsapi.json b/test/wpt/status/wasm/jsapi.json index 6f2bf9f83a9c..e75f6c75a5ca 100644 --- a/test/wpt/status/wasm/jsapi.json +++ b/test/wpt/status/wasm/jsapi.json @@ -1,12 +1,29 @@ { "esm-integration/global-exports-live-bindings.tentative.any.js": { - "skip": "Live bindings unsupported pending V8 WebAssemblyModuleRecord" + "fail": { + "note": "Live bindings unsupported pending V8 WebAssemblyModuleRecord", + "expected": [ + "Local mutable global exports should be live bindings", + "Dep module mutable global exports should be live bindings" + ] + } }, "esm-integration/namespace-instance.tentative.any.js": { - "skip": "pending https://github.com/nodejs/node/pull/59024" + "fail": { + "note": "pending https://github.com/nodejs/node/pull/59024", + "expected": [ + "WebAssembly.namespaceInstance() should return the underlying instance with shared state", + "WebAssembly.namespaceInstance() should work correctly with multiple modules" + ] + } }, "esm-integration/v128-tdz.tentative.any.js": { - "skip": "v128 undefined Wasm bindings not yet supported in V8" + "fail": { + "note": "v128 undefined Wasm bindings not yet supported in V8", + "expected": [ + "v128 global exports should cause TDZ errors" + ] + } }, "global/value-get-set.any.js": { "fail": { @@ -16,39 +33,132 @@ } }, "exception/getArg.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Getting out-of-range argument" + ] + } }, "function/call.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "test calling function", + "test constructing function" + ] + } }, "function/constructor.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "name", + "length", + "Too few arguments", + "Calling", + "construct with JS function", + "fail with missing results", + "fail with missing parameters", + "fail with non-string parameters & results", + "fail with non-existent parameter and result type", + "fail with non-function object", + "fail to construct with non-callable object" + ] + } }, "function/table.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Test insertion into table" + ] + } }, "function/type.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Check empty results and parameters", + "Check all types" + ] + } }, "global/type.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "i32, mutable", + "i32, immutable", + "i64, mutable", + "i64, immutable", + "f32, mutable", + "f32, immutable", + "f64, mutable", + "f64, immutable", + "externref, mutable", + "externref, immutable", + "funcref, mutable", + "funcref, immutable", + "key ordering" + ] + } }, "idlharness.any.js": { - "skip": "track - still tentative / unsupported" + "skip": "interfaces/wasm-js-api.idl is not included in the fixtures" }, "memory/constructor-types.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Initializing with both initial and minimum", + "Zero minimum", + "Non-zero minimum" + ] + } }, "memory/type.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Zero initial, no maximum", + "Non-zero initial, no maximum", + "Zero maximum", + "None-zero maximum", + "non-shared memory", + "shared memory" + ] + } }, "table/constructor-types.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Initializing with both initial and minimum", + "Zero minimum", + "Non-zero minimum" + ] + } }, "table/type.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "Zero initial, no maximum", + "Non-zero initial, no maximum", + "Zero maximum", + "Non-zero maximum" + ] + } }, "tag/type.tentative.any.js": { - "skip": "track - still tentative / unsupported" + "fail": { + "note": "track - still tentative / unsupported", + "expected": [ + "[]", + "[i32 i64]", + "[i32 i64 f32 f64]" + ] + } } } diff --git a/test/wpt/status/wasm/webapi.json b/test/wpt/status/wasm/webapi.json index 3e2075655e5a..d850ea2792d4 100644 --- a/test/wpt/status/wasm/webapi.json +++ b/test/wpt/status/wasm/webapi.json @@ -12,12 +12,9 @@ "skip": "WPTRunner does not support fetch()" }, "idlharness.any.js": { - "skip": "not configured" + "skip": "interfaces/wasm-web-api.idl is not included in the fixtures" }, "status.any.js": { "skip": "WPTRunner does not support fetch()" - }, - "instantiateStreaming-bad-imports.any.js": { - "skip": "Flaky on ARM with V8 >= 11.2" } } diff --git a/test/wpt/status/web-locks.json b/test/wpt/status/web-locks.json index 97a0a7900d64..e05d0229ad13 100644 --- a/test/wpt/status/web-locks.json +++ b/test/wpt/status/web-locks.json @@ -33,7 +33,12 @@ } }, "non-secure-context.any.js": { - "skip": "navigator.locks is only present in secure contexts" + "fail": { + "note": "isSecureContext is not defined and navigator.locks is always exposed", + "expected": [ + "API presence in non-secure contexts" + ] + } }, "query.https.any.js": { "fail": { @@ -45,7 +50,12 @@ } }, "secure-context.https.any.js": { - "skip": "Different secure context behavior in Node.js" + "fail": { + "note": "isSecureContext is not defined", + "expected": [ + "API presence in secure contexts" + ] + } }, "storage-buckets.tentative.https.any.js": { "skip": "Node.js does not implement Storage Buckets API" diff --git a/test/wpt/status/webstorage.json b/test/wpt/status/webstorage.json index e492fb355ce2..ea215b314c0a 100644 --- a/test/wpt/status/webstorage.json +++ b/test/wpt/status/webstorage.json @@ -1,12 +1,28 @@ { "event_constructor.window.js": { - "skip": "StorageEvent is currently unimplemented." + "fail": { + "note": "StorageEvent is not implemented", + "expected": [ + "StorageEvent constructor called as normal function", + "constructor with no arguments", + "constructor with just type argument", + "constructor with sensible type argument and members", + "constructor with null type argument and members", + "constructor with undefined type argument and members" + ] + } }, "event_initstorageevent.window.js": { - "skip": "StorageEvent is currently unimplemented." - }, - "localstorage-cross-origin-iframe.tentative.https.window.js": { - "skip": "iframes are not supported in Node.js." + "fail": { + "note": "StorageEvent is not implemented", + "expected": [ + "initStorageEvent with 0 arguments", + "initStorageEvent with 1 argument", + "initStorageEvent with 8 sensible arguments", + "initStorageEvent with 8 null arguments", + "initStorageEvent with 8 undefined arguments" + ] + } }, "localstorage-cross-origin-iframe.https.window.js": { "skip": "iframes are not supported in Node.js." diff --git a/test/wpt/status/workers.json b/test/wpt/status/workers.json index 015ac98d0084..e6df854f6497 100644 --- a/test/wpt/status/workers.json +++ b/test/wpt/status/workers.json @@ -1,10 +1,4 @@ { - "SharedWorker-MessageEvent-source.any.js": { - "skip": "SharedWorker is not implemented" - }, - "SharedWorker-replace-EventHandler.any.js": { - "skip": "SharedWorker is not implemented" - }, "Worker-location.sub.any.js": { "skip": "Server substitution (.sub) is not supported" }, @@ -30,18 +24,31 @@ "dedicated-worker-in-data-url-context.window.js": { "skip": "Needs a document to create iframes" }, - "examples/onconnect.any.js": { - "skip": "SharedWorker is not implemented" - }, "importscripts_mime.any.js": { - "skip": "Needs a WPT server to serve scripts with arbitrary MIME types" + "fail": { + "note": "Needs a WPT server; the allowed-MIME-type subtests cannot load their .py helper script", + "expected": [ + "importScripts() requires scripty MIME types: text/javascript is allowed.", + "importScripts() requires scripty MIME types: application/javascript is allowed.", + "importScripts() requires scripty MIME types: text/ecmascript is allowed.", + "importScripts() requires scripty MIME types: text/javascript; charset=utf-8 is allowed.", + "importScripts() requires scripty MIME types: text/javascript;charset=utf-8 is allowed.", + "importScripts() requires scripty MIME types: text/javascript;bla;bla is allowed." + ] + } }, "importscripts_mime_local.any.js": { "note": "crypto.randomUUID() is used to generate blob URL identifiers", "requires": ["crypto"] }, "interfaces/WorkerUtils/importScripts/catch.sub.any.js": { - "skip": "Needs a WPT server; tests cross-origin importScripts()" + "fail": { + "note": "Needs a WPT server; tests cross-origin importScripts()", + "expected": [ + "Cross-origin syntax error", + "Cross-origin throw" + ] + } }, "interfaces/WorkerUtils/importScripts/blob-url.worker.js": { "note": "crypto.randomUUID() is used to generate blob URL identifiers", @@ -81,16 +88,60 @@ } }, "modules/shared-worker-import-blob-url.window.js": { - "skip": "SharedWorker is not implemented" + "fail": { + "note": "SharedWorker is not implemented", + "expected": [ + "Static import.", + "Static import (cross-origin).", + "Static import (redirect).", + "Nested static import.", + "Static import and then dynamic import.", + "Dynamic import.", + "Nested dynamic import.", + "Dynamic import and then static import.", + "eval(import())." + ] + } }, "modules/shared-worker-import-data-url.window.js": { - "skip": "SharedWorker is not implemented" + "fail": { + "note": "SharedWorker is not implemented", + "expected": [ + "Static import.", + "Static import (cross-origin).", + "Static import (redirect).", + "Nested static import.", + "Static import and then dynamic import.", + "Dynamic import.", + "Nested dynamic import.", + "Dynamic import and then static import.", + "eval(import())." + ] + } }, "modules/shared-worker-import.window.js": { - "skip": "SharedWorker is not implemented" + "fail": { + "note": "SharedWorker is not implemented", + "expected": [ + "Static import.", + "Static import (cross-origin).", + "Static import (redirect).", + "Nested static import.", + "Static import and then dynamic import.", + "Dynamic import.", + "Nested dynamic import.", + "Dynamic import and then static import.", + "eval(import())." + ] + } }, "nested_worker_sync_xhr.worker.js": { - "skip": "XMLHttpRequest is not implemented" + "fail": { + "note": "XMLHttpRequest is not implemented", + "expected": [ + "Nested worker that issues a sync XHR" + ] + } }, "same-site-cookies/first-party.all.tentative.https.window.js": { "skip": "Needs a document and an https WPT server" @@ -143,17 +194,25 @@ ] } }, - "semantics/interface-objects/003.any.js": { - "skip": "SharedWorker is not implemented" - }, - "semantics/interface-objects/004.any.js": { - "skip": "SharedWorker is not implemented" - }, "shared-worker-from-blob-url.window.js": { - "skip": "SharedWorker is not implemented" + "fail": { + "note": "SharedWorker is not implemented", + "expected": [ + "Creating a shared worker from a blob URL works.", + "Creating a shared worker from a blob URL works immediately before revoking.", + "Connecting to a shared worker on a revoked blob URL works.", + "Blob URLs should not resolve relative to document base URL." + ] + } }, "shared-worker-in-data-url-context.window.js": { - "skip": "SharedWorker is not implemented" + "fail": { + "note": "SharedWorker is not implemented", + "expected": [ + "Create a shared worker in a data url frame", + "Create a data url shared worker in a data url frame" + ] + } }, "worker-performance.worker.js": { "fail": { @@ -165,6 +224,11 @@ } }, "WorkerGlobalScope_requestAnimationFrame.worker.js": { - "skip": "requestAnimationFrame is not implemented in workers" + "fail": { + "note": "requestAnimationFrame is not implemented in workers", + "expected": [ + "WorkerGlobalScope_requestAnimationFrame" + ] + } } }