chromium/headless/test/data/protocol/sanity/browser-set-initial-proxy-config.js

// Copyright 2020 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) {
  testRunner.log('Tests that headless session can configure proxy.\n');
  const { result: { sessionId } } =
  await testRunner.browserP().Target.attachToBrowserTarget({});
  const { protocol: bProtocol } = new TestRunner.Session(testRunner, sessionId);

  async function dumpWithProxyServer(proxyServer) {
    const { result: { browserContextId } } =
        await bProtocol.Target.createBrowserContext({ proxyServer });
    const { result: { targetId }} =
        await bProtocol.Target.createTarget({
      browserContextId: browserContextId,
      url: 'about:blank'
    });

    const { result: { sessionId } } =
        await bProtocol.Target.attachToTarget({ targetId, flatten: true });
    const { protocol: pProtocol } =
        new TestRunner.Session(testRunner, sessionId);
    await pProtocol.Page.enable({});
    await pProtocol.Page.navigate({
      url: testRunner._testBaseURL + 'resources/title.html'
    });
    await pProtocol.Page.onceLoadEventFired();
    const { result: { result: { value } } } =
        await pProtocol.Runtime.evaluate({ expression: 'document.title' });
    return value;
  }

  testRunner.log(`No proxy page title: ${await dumpWithProxyServer()}`);
  testRunner.log(`Bogus proxy page title: ${await dumpWithProxyServer(
      'bogus')}`);
  testRunner.log(`Good proxy page title: ${await dumpWithProxyServer(
      new URL(testRunner._targetBaseURL).host)}`);

  testRunner.completeTest();
})