<!DOCTYPE html>
<html>
<head>
    <style>
        .no-js {
            position: relative;
        }

        .no-js h3 {
            position: absolute;
        }
    </style>
</head>
<body>
<div>
    <div>
        <div style="position: relative">
            <div id="assertTrigger" class="no-js">
                <div>
                    <div>
                        <h3>Test for bug 66901. The test passes if it does not <span>ASSERT.</span></h3>
                    </div>
                </div>
                <script>
                    if (window.testRunner) {
                        testRunner.dumpAsText();
                        testRunner.waitUntilDone();
                    }

                    function assert() {
                        var dimensionsContainer = document.getElementById("assertTrigger");
                        dimensionsContainer.setAttribute("class", "");
                        if (window.testRunner)
                            testRunner.notifyDone();
                    }

                    // Asynchronously change the style to force a style recalc later.
                    window.setTimeout(assert, 0);
                </script>
            </div>
        </div>
    </div>
</div>
</body>
</html>
