<body>
<script>
var count = 0;

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

function addRandom()
{
    var script = document.createElement("script");
    script.setAttribute("src", "resources/random-no-store.php");
    document.body.appendChild(script);
}
++count;
addRandom();

setInterval(function() {
    if (count == 1 && document.getElementsByTagName("p").length == 1) {
        ++count;
        addRandom();
    } else if (document.getElementsByTagName("p").length == 2) {
        document.write(document.getElementsByTagName("p")[0].innerHTML == document.getElementsByTagName("p")[1].innerHTML ? 
            "FAIL<br>" : "PASS<br>");
        if (window.testRunner)
            testRunner.notifyDone();
    }
}, 10);
</script>
