<html>
    <head>
        <script>
            if (window.testRunner)
            {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }
        
            function runTest()
            {
                var button = document.getElementById("test");
                button.insertBefore(document.createElement("tbody"), null);
                document.body.offsetTop;
                document.body.removeChild(button);
                
                var result = document.createElement("div");
                result.innerHTML = "PASS";
                document.body.appendChild(result);
                if (window.testRunner)
                    testRunner.notifyDone();
            }
        </script>
    </head>
    <body onload="runTest()">
        <button id="test"/>
    </body>
</html>

