Skip to content

Commit 9ec64c6

Browse files
authored
test: unflake test_should_emit_frame_events test (#781)
1 parent aa0b467 commit 9ec64c6

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

playwright/_impl/_network.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,13 +341,13 @@ async def wait_for_event(
341341
def _on_frame_sent(self, opcode: int, data: str) -> None:
342342
if opcode == 2:
343343
self.emit(WebSocket.Events.FrameSent, base64.b64decode(data))
344-
else:
344+
elif opcode == 1:
345345
self.emit(WebSocket.Events.FrameSent, data)
346346

347347
def _on_frame_received(self, opcode: int, data: str) -> None:
348348
if opcode == 2:
349349
self.emit(WebSocket.Events.FrameReceived, base64.b64decode(data))
350-
else:
350+
elif opcode == 1:
351351
self.emit(WebSocket.Events.FrameReceived, data)
352352

353353
def is_closed(self) -> bool:

tests/async/test_websocket.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,30 +55,32 @@ async def test_should_emit_close_events(page, ws_server):
5555

5656

5757
async def test_should_emit_frame_events(page, ws_server):
58-
sent = []
59-
received = []
58+
log = []
59+
socke_close_future = asyncio.Future()
6060

6161
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+
)
6468

6569
page.on("websocket", on_web_socket)
66-
async with page.expect_event("websocket") as ws_info:
70+
async with page.expect_event("websocket"):
6771
await page.evaluate(
6872
"""port => {
6973
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())
7376
}""",
7477
ws_server.PORT,
7578
)
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>"]
8284

8385

8486
async def test_should_emit_binary_frame_events(page, ws_server):

0 commit comments

Comments
 (0)