// Flags: --expose-internals 'use strict'; const common = require('../common'); common.skipIfInspectorDisabled(); const assert = require('assert'); const { Session } = require('inspector'); const path = require('path'); const { pathToFileURL } = require('url'); function debugged() { return 42; } async function test() { const session1 = new Session(); const session2 = new Session(); session1.connect(); session2.connect(); let session1Paused = false; let session2Paused = false; session1.on('Debugger.paused', () => session1Paused = true); session2.on('Debugger.paused', () => session2Paused = true); console.log('Connected'); session1.post('Debugger.enable'); session2.post('Debugger.enable'); console.log('Debugger was enabled'); await new Promise((resolve, reject) => { session1.post('Debugger.setBreakpointByUrl', { 'lineNumber': 12, 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), 'columnNumber': 0, 'condition': '' }, (error, result) => { return error ? reject(error) : resolve(result); }); }); console.log('Breakpoint was set'); debugged(); // Both sessions will receive the paused event assert(session1Paused); assert(session2Paused); console.log('Breakpoint was hit'); session1.disconnect(); session2.disconnect(); console.log('Sessions were disconnected'); } const interval = setInterval(() => {}, 1000); test().then(() => { clearInterval(interval); console.log('Done!'); });