blob: 046f047a2fa9bc71aab882c5962aee7b12524540 [file] [log] [blame]
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const { contextGroup, Protocol } = InspectorTest.start(
`Tests for calling setBreakpoint with urlRegex`);
(async function test(){
await Protocol.Debugger.enable();
Protocol.Runtime.evaluate({expression: `
function test() {
return 42;
}
//# sourceURL=some-kind-of-test.js`});
await Protocol.Debugger.onceScriptParsed();
InspectorTest.runAsyncTestSuite([
async function testSetBreakpointByUrlRegex() {
const result = await Protocol.Debugger.setBreakpointByUrl({ lineNumber: 2, urlRegex: '.*of-test.js' });
InspectorTest.logMessage(result.result.locations);
await expectBreakInEval('test()');
await Protocol.Debugger.removeBreakpoint({ breakpointId: result.result.breakpointId });
await expectNoBreakInEval('test()');
},
async function testSetBreakpointByUrlWithConditions() {
// Test Condition false
let result = await Protocol.Debugger.setBreakpointByUrl({ lineNumber: 2, urlRegex: '.*of-test.js', condition: 'false' });
InspectorTest.logMessage(result.result.locations);
await expectNoBreakInEval('test()');
await Protocol.Debugger.removeBreakpoint({ breakpointId: result.result.breakpointId });
// Test condition true
result = await Protocol.Debugger.setBreakpointByUrl({ lineNumber: 2, urlRegex: '.*of-test.js', condition: 'true' });
InspectorTest.logMessage(result.result.locations);
await expectBreakInEval('test()');
await Protocol.Debugger.removeBreakpoint({ breakpointId: result.result.breakpointId });
},
]);
// Function that will evaluate an expression and return once completed.
// Used to validate that breakpoint is not hit within the evaluated expression.
async function expectNoBreakInEval(expression) {
await Protocol.Runtime.evaluate({expression});
InspectorTest.log(`Successfully completed eval of: '${expression}'`);
}
// Function that will evaluate an expression and return once a paused event is received
// and the debugger is resumed.
// Used to validate that breakpoint is hit within the evaluated expression.
async function expectBreakInEval(expression) {
Protocol.Runtime.evaluate({expression});
await Protocol.Debugger.oncePaused();
InspectorTest.log(`Successfully paused during eval of: '${expression}'`);
await Protocol.Debugger.resume();
}
})();