@@ -55,30 +55,32 @@ async def test_should_emit_close_events(page, ws_server):
55
55
56
56
57
57
async def test_should_emit_frame_events (page , ws_server ):
58
- sent = []
59
- received = []
58
+ log = []
59
+ socke_close_future = asyncio . Future ()
60
60
61
61
def on_web_socket (ws ):
62
- ws .on ("framesent" , lambda payload : sent .append (payload ))
63
- ws .on ("framereceived" , lambda payload : received .append (payload ))
62
+ log .append ("open" )
63
+ ws .on ("framesent" , lambda payload : log .append (f"sent<{ payload } >" ))
64
+ ws .on ("framereceived" , lambda payload : log .append (f"received<{ payload } >" ))
65
+ ws .on (
66
+ "close" , lambda : (log .append ("close" ), socke_close_future .set_result (None ))
67
+ )
64
68
65
69
page .on ("websocket" , on_web_socket )
66
- async with page .expect_event ("websocket" ) as ws_info :
70
+ async with page .expect_event ("websocket" ):
67
71
await page .evaluate (
68
72
"""port => {
69
73
const ws = new WebSocket('ws://localhost:' + port + '/ws');
70
- ws.addEventListener('open', () => {
71
- ws.send('echo-text');
72
- });
74
+ ws.addEventListener('open', () => ws.send('outgoing'));
75
+ ws.addEventListener('message', () => ws.close())
73
76
}""" ,
74
77
ws_server .PORT ,
75
78
)
76
- ws = await ws_info .value
77
- if not ws .is_closed ():
78
- await ws .wait_for_event ("close" )
79
-
80
- assert sent == ["echo-text" ]
81
- assert received == ["incoming" , "text" ]
79
+ await socke_close_future
80
+ assert log [0 ] == "open"
81
+ assert log [3 ] == "close"
82
+ log .sort ()
83
+ assert log == ["close" , "open" , "received<incoming>" , "sent<outgoing>" ]
82
84
83
85
84
86
async def test_should_emit_binary_frame_events (page , ws_server ):
0 commit comments