Closed Bug 1876861 Opened 2 years ago Closed 2 years ago

[wpt-sync] Sync PR 44240 - Add WebSocketError for WebSocketStream

Categories

(Core :: Networking: WebSockets, task, P4)

task

Tracking

()

RESOLVED FIXED
124 Branch
Tracking Status
firefox124 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 44240 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/44240
Details from upstream follow.

Adam Rice <ricea@chromium.org> wrote:

Add WebSocketError for WebSocketStream

WebSocketError is a subclass of DOMException that has closeCode and
reason attributes which can be set by the constructor.

A WebSocketError object can be passed to the writer abort() and reader
cancel() methods to close the WebSocket with a specific closeCode and
reason.

closeCode is used instead of code because DOMExceptions already have
a code member with a different meaning. Change the WebSocketCloseInfo
dictionary code member to closeCode for consistency.

Reject promises with WebSocketError.

BUG=983030

Change-Id: I4af4eb1520b98e3f13443cc1b738a64e67a6e023
Reviewed-on: https://chromium-review.googlesource.com/5237827
WPT-Export-Revision: fecf7c12916e70e8fce5a85ead87214b00ae3884

Component: web-platform-tests → Networking: WebSockets
Product: Testing → Core

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f04c3a902fac [wpt PR 44240] - Add WebSocketError for WebSocketStream, a=testonly https://hg.mozilla.org/integration/autoland/rev/8364c86e136e [wpt PR 44240] - Update wpt metadata, a=testonly

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 20 tests and 10 subtests

Status Summary

Firefox

OK : 20
FAIL: 312

Chrome

OK : 20
PASS: 80
FAIL: 232

Safari

OK : 20
FAIL: 312

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /websockets/stream/tentative/close.any.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.serviceworker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/close.any.worker.html?wss [wpt.fyi]
    • close code should be sent to server and reflected back: FAIL (Chrome: FAIL, Safari: FAIL)
    • no close argument should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with empty reason should send empty Close frame: FAIL (Chrome: FAIL, Safari: FAIL)
    • unspecified close code with non-empty reason should set code to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • close(true) should throw a TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • close() with an overlong reason should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • close during handshake should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • close() with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • closing the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • writer close() promise should not resolve until handshake completes: FAIL (Chrome: PASS, Safari: FAIL)
    • aborting the writable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • aborting the writable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable should result in a clean close: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with attributes not wrapped in a WebSocketError should be ignored: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code should send that code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a code and reason should use them: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a reason but no code should default the close code: FAIL (Chrome: FAIL, Safari: FAIL)
    • canceling the readable with a DOMException not set code or reason: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.sharedworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.serviceworker.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/constructor.any.html?wss [wpt.fyi]
    • constructing with no URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with an invalid URL should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with invalid options should throw: FAIL (Chrome: PASS, Safari: FAIL)
    • protocols should be required to be a list: FAIL (Chrome: PASS, Safari: FAIL)
    • constructing with a valid URL should work: FAIL (Chrome: PASS, Safari: FAIL)
    • setting a protocol in the constructor should work: FAIL (Chrome: PASS, Safari: FAIL)
    • connection failure should reject the promises: FAIL (Chrome: FAIL, Safari: FAIL)
    • wss.opened should resolve to the right types: FAIL (Chrome: PASS, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.sharedworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.serviceworker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
  • /websockets/stream/tentative/websocket-error.any.worker.html [wpt.fyi]
    • WebSocketError defaults should be correct: FAIL (Chrome: FAIL, Safari: FAIL)
    • WebSocketError should be initialised from arguments: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 1001 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 2999 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • new WebSocketError with invalid code 5000 should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing only close code to WebSocketError should work: FAIL (Chrome: FAIL, Safari: FAIL)
    • passing a non-empty reason should cause the close code to be set to 1000: FAIL (Chrome: FAIL, Safari: FAIL)
    • overlong reason should throw: FAIL (Chrome: FAIL, Safari: FAIL)
    • reason should be rejected based on utf-8 bytes, not character count: FAIL (Chrome: FAIL, Safari: FAIL)
Test result changes from PR not available.
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 124 Branch
You need to log in before you can comment on or make changes to this bug.