(async function(testRunner) {
  var {page, session, dp} =
      await testRunner.startHTML(`
    <div></div>
    <script>
      document.querySelector('div').addEventListener('click', () => { console.log(42); while(true){} });
      document.querySelector('div').addEventListener('click', () => { while(true){} });
    </script>
  `, 'Tests terminate execution.');
  dp.Runtime.enable();
  let promise =
      dp.Runtime.evaluate({expression: `document.querySelector('div').click()`})
          .then(msg => testRunner.log(msg));
  await dp.Runtime.onceConsoleAPICalled();
  await Promise.all([
    dp.Emulation.setScriptExecutionDisabled({value: true}),
    dp.Runtime.terminateExecution().then(msg => testRunner.log(msg)), promise
  ]);
  testRunner.completeTest();
})
