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(); } });