Skip to content

Commit 9ec64c6

Browse files
authored
test: unflake test_should_emit_frame_events test (microsoft#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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy