<!DOCTYPE html>
<html>
<head>
    <style>
        .scroller {
            overflow-x: hidden;
            height: 400px;
            width: 400px;
            border: 1px solid black;
        }

        .wrapper {
            position: relative;
        }

        .absolute {
            position: absolute;
            top: 10px;
            left: 20px;
            width: 200px;
            height: 200px;
            background-color: green;
            transform: translateZ(0);
        }
    
        .content {
            height: 300px;
        }
        
        .content.changed {
            height: 700px;
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.waitUntilDone();
            testRunner.dumpAsText();
        }
        window.addEventListener('load', () => {
            setTimeout(() => {
                document.querySelector('.content').classList.add('changed');
                if (window.testRunner)
                    testRunner.notifyDone();
            }, 0);
        }, false);
    </script>
</head>
<body>
    <p>This test should not trigger assertions or crash.</p>
    <div class="scroller">
        <div class="wrapper">
            <div class="content"></div>
            <div class="absolute">
            </div>
        </div>
    </div>
</body>
</html>
