chromium/headless/test/data/protocol/sanity/renderer-javascript-console-errors.js

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

(async function(testRunner) {
  let {page, session, dp} = await testRunner.startWithFrameControl(
      'Tests renderer: verify JavaScript console errors reporting.');

  let RendererTestHelper =
      await testRunner.loadScript('../helpers/renderer-test-helper.js');
  let {httpInterceptor, frameNavigationHelper, virtualTimeController} =
      await (new RendererTestHelper(testRunner, dp, page)).init();

  httpInterceptor.addResponse(
      `http://example.com/foobar` ,
      `<html>
      <head>
        <script language="JavaScript">
          <![CDATA[
            function image() {
              window.open('<xsl:value-of select="/IMAGE/@href" />');
            }
          ]]>
        </script>
      </head>
      <body onload="func3()">
        <script type="text/javascript">
          func1()
        </script>
        <script type="text/javascript">
          func2();
        </script>
        <script type="text/javascript">
          console.log("Hello, Script!");
        </script>
      </body>
      </html>`);

  dp.Runtime.onExceptionThrown(data => {
    const details = data.params.exceptionDetails;
    testRunner.log(
        `${details.text} ${details.exception.description.replace(/\n.*/, '')}`);
  });

  await virtualTimeController.initialize(1000);
  await frameNavigationHelper.navigate('http://example.com/foobar');
  await virtualTimeController.grantTime(500);
  testRunner.completeTest();
})