MCPcopy Index your code
hub / github.com/microsoft/playwright-python / test_should_emit_frame_events

Function test_should_emit_frame_events

tests/async/test_websocket.py:59–106  ·  view source on GitHub ↗
(page: Page, server: Server)

Source from the content-addressed store, hash-verified

57
58
59async def test_should_emit_frame_events(page: Page, server: Server) -> None:
60 def _handle_ws_connection(ws: WebSocketProtocol) -> None:
61 def _onMessage(payload: bytes, isBinary: bool) -> None:
62 ws.sendMessage(b"incoming", False)
63 ws.sendClose()
64
65 setattr(ws, "onMessage", _onMessage)
66
67 server.once_web_socket_connection(_handle_ws_connection)
68 log = []
69 socket_close_future: "asyncio.Future[None]" = asyncio.Future()
70
71 def on_web_socket(ws: WebSocket) -> None:
72 log.append("open")
73
74 def _on_framesent(payload: Union[bytes, str]) -> None:
75 assert isinstance(payload, str)
76 log.append(f"sent<{payload}>")
77
78 ws.on("framesent", _on_framesent)
79
80 def _on_framereceived(payload: Union[bytes, str]) -> None:
81 assert isinstance(payload, str)
82 log.append(f"received<{payload}>")
83
84 ws.on("framereceived", _on_framereceived)
85
86 def _handle_close(ws: WebSocket) -> None:
87 log.append("close")
88 socket_close_future.set_result(None)
89
90 ws.on("close", _handle_close)
91
92 page.on("websocket", on_web_socket)
93 async with page.expect_event("websocket"):
94 await page.evaluate(
95 """port => {
96 const ws = new WebSocket('ws://localhost:' + port + '/ws');
97 ws.addEventListener('open', () => ws.send('outgoing'));
98 ws.addEventListener('message', () => ws.close())
99 }""",
100 server.PORT,
101 )
102 await socket_close_future
103 assert log[0] == "open"
104 assert log[3] == "close"
105 log.sort()
106 assert log == ["close", "open", "received<incoming>", "sent<outgoing>"]
107
108
109async def test_should_emit_binary_frame_events(page: Page, server: Server) -> None:

Callers

nothing calls this directly

Calls 4

onMethod · 0.45
expect_eventMethod · 0.45
evaluateMethod · 0.45

Tested by

no test coverage detected