summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting-async.any.js
diff options
context:
space:
mode:
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.js31
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');