text: // Copyright 2021 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 {session, contextGroup, Protocol} =
      InspectorTest.start('Regression test for crbug.com/1195927');
  
  const source = `
  function foo(x) {
    x = x + 1;
    return x;
  }
  `;
  
  const newSource = `
  function foo(x) {
    x = x + 2;
    return x;
  }
  `;
  
  InspectorTest.runAsyncTestSuite([
    async function test() {
      session.setupScriptMap();
      await Protocol.Runtime.enable();
      await Protocol.Debugger.enable();
      contextGroup.addScript(source, 0, 0, 'foo.js');
      const { params: { scriptId } } = await Protocol.Debugger.onceScriptParsed();
  
      let {result} = await Protocol.Debugger.setBreakpoint({location: {
        scriptId,
        lineNumber: 2,
      }});
      InspectorTest.log('Debugger.setBreakpoint result:');
      InspectorTest.logMessage(result);
  
      const callPromise = Protocol.Runtime.evaluate({expression: 'foo(42)'});
  
      let {params: {callFrames}} = await Protocol.Debugger.oncePaused();
      InspectorTest.log('Debugger.paused call frames:');
      session.logCallFrames(callFrames);
  
      ({result} = await Protocol.Debugger.setScriptSource({
        scriptId,
        scriptSource: newSource
      }));
      InspectorTest.log('Debugger.setScriptSource result:');
      InspectorTest.logMessage(result);
  
      ([, {result}] = await Promise.all([Protocol.Debugger.resume(), callPromise]));
      InspectorTest.log('foo(42) result:');
      InspectorTest.logMessage(result);
    }
  ]);
  