<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="/common/utils.js"></script>
<script src="../resources/utils.js"></script>
<script src="resources/utils.sub.js"></script>
<script>
setup(() => assertSpeculationRulesIsSupported());

promise_test(async t => {
  const testUrl = document.URL;
  const [prefetchUrl, anotherPrefetchUrl] = getPrefetchUrlList(2);
  try {
    history.pushState({}, '', prefetchUrl);
    const urls = [
      new URL('#fragment', prefetchUrl),
      new URL('#fragment', anotherPrefetchUrl),
    ];
    insertSpeculationRules({prefetch: [{source: 'list', urls}]});
    await new Promise(resolve => t.step_timeout(resolve, 2000));
    assert_equals(await isUrlPrefetched(prefetchUrl), 0);
    assert_equals(await isUrlPrefetched(anotherPrefetchUrl), 1);
  } finally {
    // We needed to temporarily change the document URL to do the previous
    // test. Undo that to avoid breaking any other test cases.
    history.back();
    await new Promise(resolve => {
      addEventListener('popstate', () => resolve(), {once: true});
    });
    await new Promise(resolve => t.step_timeout(resolve, 0));
    assert_equals(document.URL, testUrl);
  }
}, "fragment links to the current document URL are not prefetched");
</script>
