From 380209af37c96d2b818fe7d7d16a76a6103fefc7 Mon Sep 17 00:00:00 2001 From: vemv Date: Mon, 19 Jun 2023 20:12:02 +0200 Subject: [PATCH] chore: log when websockets are proactively closed (#23689) Closes https://github.com/microsoft/playwright/issues/23566 n.b., while that issue describes a fairly specific "use case", this logging is simple and generic. It seems very plausible that it can help diagnose all sorts of issues. Cheers - V --- packages/playwright-core/src/server/transport.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/server/transport.ts b/packages/playwright-core/src/server/transport.ts index a7dbb7deff..685e1b4e7e 100644 --- a/packages/playwright-core/src/server/transport.ts +++ b/packages/playwright-core/src/server/transport.ts @@ -125,10 +125,20 @@ export class WebSocketTransport implements ConnectionTransport { this._ws.addEventListener('message', event => { messageWrap(() => { + const eventData = event.data as string; + let parsedJson; + try { + parsedJson = JSON.parse(eventData); + } catch (e) { + this._progress?.log(` Closing websocket due to malformed JSON. eventData=${eventData} e=${e?.message}`); + this._ws.close(); + return; + } try { if (this.onmessage) - this.onmessage.call(null, JSON.parse(event.data as string)); + this.onmessage.call(null, parsedJson); } catch (e) { + this._progress?.log(` Closing websocket due to failed onmessage callback. eventData=${eventData} e=${e?.message}`); this._ws.close(); } });