diff options
Diffstat (limited to 'testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js')
-rw-r--r-- | testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js b/testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js new file mode 100644 index 0000000000..88005520b0 --- /dev/null +++ b/testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js @@ -0,0 +1,31 @@ +// META: script=../../../constants.sub.js +// META: variant=?default +// META: variant=?wpt_flags=h2 +// META: variant=?wss + +async_test(t => { + const ws = new WebSocket(SCHEME_DOMAIN_PORT + '/handshake_sleep_2'); + let closeMethodReturned = false; + let errorEventSeen = false; + let closeEventSeen = false; + ws.onerror = t.step_func(() => { + assert_true(closeMethodReturned, 'ws.close() should have returned'); + assert_false(errorEventSeen, 'error event should only fire once'); + errorEventSeen = true; + assert_false(closeEventSeen, 'error event should come before close event'); + }); + ws.onclose = t.step_func_done(() => { + assert_true(closeMethodReturned, 'ws.close() should have returned'); + assert_true(errorEventSeen, 'error event should have fired'); + assert_false(closeEventSeen, 'close event should only fire once'); + closeEventSeen = true; + assert_equals(ws.readyState, WebSocket.CLOSED, + 'readyState should be CLOSED'); + }); + assert_equals(ws.readyState, WebSocket.CONNECTING, + 'readyState should be CONNECTING'); + ws.close(); + closeMethodReturned = true; + assert_equals(ws.readyState, WebSocket.CLOSING, + 'readyState should be CLOSING'); +}, 'close event should be fired asynchronously when WebSocket is connecting'); |