<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpBackForwardList();
    testRunner.waitUntilDone();
}

window.location.replace('resources/click-fragment-link.html');

</script>