(async function(testRunner) {
  var {page, session, dp} = await testRunner.startBlank(
      `Tests interception blocking, modification of network fetches.`);

  var InterceptionHelper = await testRunner.loadScript('../resources/interception-test.js');
  var helper = new InterceptionHelper(testRunner, session);

  var requestInterceptedDict = {
    'resource-iframe.html': event => helper.allowRequest(event),
    'i-dont-exist.css': event => helper.modifyRequest(event, {url: 'test.css'}),
    'script.js': event => helper.blockRequest(event, 'ConnectionFailed'),
    'script2.js': event => {
      var rawResponse =
          'HTTP/1.1 200 OK\r\n' +
          'Content-Type: application/javascript\r\n\r\n' +
          'console.log("Hello from the mock resource");';
      helper.mockResponse(event, rawResponse);
    },
    'post-echo.pl': event => helper.allowRequest(event),
  };

  await helper.startInterceptionTest(requestInterceptedDict, 2);
  session.evaluate(`
    var iframe = document.createElement('iframe');
    iframe.src = '${testRunner.url('./resources/resource-iframe.html')}';
    document.body.appendChild(iframe);
  `);
})
