'use strict'; const common = require('../common'); common.skipIfInspectorDisabled(); const { spawn } = require('node:child_process'); const assert = require('node:assert'); (async () => { const child = spawn( process.execPath, ['--inspect-wait=0', '-e', "console.log('test');"], {} ); const url = await new Promise((resolve) => { child.stderr.on('data', (data) => { const msg = data.toString(); const match = msg.match(/ws:\/\/127\.0\.0\.1:(\d+)\/([a-f0-9-]+)/); if (match) { child.stderr.removeAllListeners('data'); return resolve(match[0]); } }); }); child.once('exit', common.mustCall((_, signal) => { assert.strictEqual(signal, 'SIGTERM'); })); const socket = new WebSocket(url); socket.addEventListener('open', common.mustCall(() => { socket.send('This is not a valid protocol message'); })); socket.addEventListener('message', common.mustCall((event) => { assert.ok(Object.keys(JSON.parse(event.data)).includes('error')); socket.close(); child.kill(); })); })().then(common.mustCall());