<html>
<head>
<style>
    #container {
        transform: translate(-10px, 0px);
    }

    #indicator {
        position: absolute;
        left: 15px;
        top: 0px;
        height: 256px;
        width: 256px;
        background-color: red;
    }

    #green {
        position: absolute;
        left: 0px;
        top: 0px;
        width: 300px;
        height: 300px;
        background-color: green;
    }

    #composited {
        position: absolute;
        left: 400px;
        will-change: transform;
    }

    #layertree {
        position: absolute;
        left: 10000px;
        top: 0px;
    }

    body {
        will-change: transform;
        overflow: hidden;
    }

</style>

<script>
    if (window.testRunner) {
        testRunner.dumpAsTextWithPixelResults();
        window.addEventListener('load', function() {
            document.getElementById("layertree").innerText = internals.layerTreeAsText(document);
        }, false);
    }
</script>

<body>
    <div id="container">
        <!-- This red square should not be visible -->
        <div id="indicator"></div>
        <div id="composited"></div>
    </div>

    <!-- This green square should render completely on top of the red one -->
    <div id="green"></div>

    <pre id="layertree"></pre>
</body>
</html>
