chromium/third_party/blink/web_tests/http/tests/inspector-protocol/network/url-fragment.js

(async function(/** @type {import('test_runner').TestRunner} */ testRunner) {
  var {page, session, dp} = await testRunner.startBlank(
      `Tests the we properly report url fragment in network requests`);

  dp.Network.enable();
  dp.Page.enable();

  async function dumpEventsAndContinue() {
    const requestInterceptedPromise = dp.Network.onceRequestIntercepted();
    const requestWillBeSentPromise = dp.Network.onceRequestWillBeSent();
    const interceptedRequestParams =  (await requestInterceptedPromise).params;
    const interceptedRequest = interceptedRequestParams.request;
    const sentRequest = (await requestWillBeSentPromise).params.request;

    testRunner.log(`Request will be sent: ${sentRequest.url} fragment: ${sentRequest.urlFragment}`);
    testRunner.log(`Intercepted URL: ${interceptedRequest.url} fragment: ${interceptedRequest.urlFragment}`);
    dp.Network.continueInterceptedRequest({interceptionId: interceptedRequestParams.interceptionId});
  }

  await dp.Network.setRequestInterception({patterns: [{}]});
  const navigatePromise = dp.Page.navigate({url: 'http://127.0.0.1:8000/devtools/network/resources/empty.html#ref'});
  await dumpEventsAndContinue();
  await navigatePromise;
  const resourceURL = '/devtools/network/resources/resource.php';
  session.evaluateAsync(`fetch("${resourceURL}")`);
  await dumpEventsAndContinue();
  session.evaluateAsync(`fetch("${resourceURL}#ref")`);
  dumpEventsAndContinue();
  session.evaluateAsync(`fetch("${resourceURL}#")`);
  await dumpEventsAndContinue();
  testRunner.completeTest();
})