chromium/third_party/blink/web_tests/fast/loader/stateobjects/pushstate-then-replacestate.html

<html>
<head>
<script>

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

function log(txt)
{
    document.getElementById("logger").innerText += txt + "\n";
}

function runTest()
{
    history.pushState("StateStringData", "New title");
    log("History length is " + history.length);
    history.replaceState(1, "Replaced title");
    log("History length is " + history.length);
    history.back();
}

onpopstate = function(event)
{
    log("State popped - " + event.state + " (type " + typeof event.state + ")");
    if (event.state == null)
        history.forward();
    else if (window.testRunner)
        testRunner.notifyDone();
}

</script>
<body onload="runTest();">
<pre>
This test does the following:
-Makes a call to pushState()
-Makes sure the history length is correct
-Makes a call to replaceState()
-Makes sure the history length is correct
-Goes back, and makes sure the popstate event is correct
-Goes forward, and makes sure the popstate event represents the replaced state object
</pre><br>
<pre id="logger"></pre>
</body>
</html>