diff --git a/packages/pytest-simcore/src/pytest_simcore/helpers/playwright.py b/packages/pytest-simcore/src/pytest_simcore/helpers/playwright.py index a1f3fbe874c..626481dee13 100644 --- a/packages/pytest-simcore/src/pytest_simcore/helpers/playwright.py +++ b/packages/pytest-simcore/src/pytest_simcore/helpers/playwright.py @@ -143,6 +143,7 @@ def to_json(self) -> str: SOCKETIO_MESSAGE_PREFIX: Final[str] = "42" +_WEBSOCKET_MESSAGE_PREFIX: Final[str] = "📡OSPARC-WEBSOCKET: " @dataclass @@ -165,20 +166,31 @@ def _configure_websocket_events(self) -> None: ) as ctx: def on_framesent(payload: str | bytes) -> None: - ctx.logger.debug("⬇️ Frame sent: %s", payload) + ctx.logger.debug( + "%s⬇️ Frame sent: %s", _WEBSOCKET_MESSAGE_PREFIX, payload + ) def on_framereceived(payload: str | bytes) -> None: - ctx.logger.debug("⬆️ Frame received: %s", payload) + ctx.logger.debug( + "%s⬆️ Frame received: %s", _WEBSOCKET_MESSAGE_PREFIX, payload + ) def on_close(_: WebSocket) -> None: if self.auto_reconnect: - ctx.logger.warning("⚠️ WebSocket closed. Attempting to reconnect...") + ctx.logger.warning( + "%s⚠️ WebSocket closed. Attempting to reconnect...", + _WEBSOCKET_MESSAGE_PREFIX, + ) self._attempt_reconnect(ctx.logger) else: - ctx.logger.warning("⚠️ WebSocket closed.") + ctx.logger.warning( + "%s⚠️ WebSocket closed.", _WEBSOCKET_MESSAGE_PREFIX + ) def on_socketerror(error_msg: str) -> None: - ctx.logger.error("❌ WebSocket error: %s", error_msg) + ctx.logger.error( + "%s❌ WebSocket error: %s", _WEBSOCKET_MESSAGE_PREFIX, error_msg + ) # Attach core event listeners self.ws.on("framesent", on_framesent) diff --git a/packages/pytest-simcore/src/pytest_simcore/helpers/playwright_sim4life.py b/packages/pytest-simcore/src/pytest_simcore/helpers/playwright_sim4life.py index d6ed037fdc9..81c95c2a357 100644 --- a/packages/pytest-simcore/src/pytest_simcore/helpers/playwright_sim4life.py +++ b/packages/pytest-simcore/src/pytest_simcore/helpers/playwright_sim4life.py @@ -98,6 +98,9 @@ class WaitForS4LDict(TypedDict): iframe: FrameLocator +_WEBSOCKET_MESSAGE_S4L_PREFIX: Final[str] = "📡S4L-WEBSOCKET: " + + def wait_for_launched_s4l( page: Page, node_id, @@ -137,6 +140,31 @@ def wait_for_launched_s4l( ) s4l_websocket = ws_info.value ctx.logger.info("acquired S4L websocket!") + + def on_framesent(payload: str | bytes) -> None: + ctx.logger.debug( + "%s⬇️ Frame sent: %s", _WEBSOCKET_MESSAGE_S4L_PREFIX, payload + ) + + def on_framereceived(payload: str | bytes) -> None: + ctx.logger.debug( + "%s⬆️ Frame received: %s", _WEBSOCKET_MESSAGE_S4L_PREFIX, payload + ) + + def on_close(_: WebSocket) -> None: + ctx.logger.warning("%s⚠️ WebSocket closed.", _WEBSOCKET_MESSAGE_S4L_PREFIX) + + def on_socketerror(error_msg: str) -> None: + ctx.logger.error( + "%s❌ WebSocket error: %s", _WEBSOCKET_MESSAGE_S4L_PREFIX, error_msg + ) + + # Attach core event listeners + s4l_websocket.on("framesent", on_framesent) + s4l_websocket.on("framereceived", on_framereceived) + s4l_websocket.on("close", on_close) + s4l_websocket.on("socketerror", on_socketerror) + return { "websocket": s4l_websocket, "iframe": s4l_iframe,