<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <style>
        .container {
            padding: 10px;
            margin: 10px;
            border: 2px solid black;
            height: 400px;
            width: 500px;
            overflow-y: hidden;
        }

        .wrapper {
            position: relative;
            width: 2000px;
            z-index: 1;
        }

        .positioned {
            position: absolute;
            left: 0;
            top: 0;
            background-color: silver;
            z-index: 2;
            padding: 20px;
            width: 100%;
            height: 250px;
            overflow: hidden;
        }

       .inner {
            position: relative;
            width: 300px;
            height: 200px;
            background-color: green;
            transform: translate(0px, 0px);
        }
        
        body.changed .inner {
            transform: translateZ(0);
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        window.addEventListener('load', () => {
            requestAnimationFrame(() => {
                requestAnimationFrame(() => {
                    document.body.classList.add('changed');
                    if (window.testRunner)
                        testRunner.notifyDone();
                });
            });
        }, false);
    </script>
</head>
<body>
<div class="container">
    <div class="wrapper">
        <div class="positioned">
            &nbsp;
            <div class="inner">
                &nbsp;
            </div>
        </div>
    </div>
</div>
</body>
</html>