<!DOCTYPE html>

<html>
<head>
    <style>
        .box {
            position: relative;
            height: 100px;
            width: 100px;
            margin: 50px;
            background-color: blue;
            box-shadow: 0 0 10px black;
        }
        
        .animating {
            -webkit-animation: spin 1 0.1s forwards;
        }

        @-webkit-keyframes spin {
            from { -webkit-transform: rotate(0); }
            to   { -webkit-transform: rotate(3deg); }
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }
            
        function doTest()
        {
            document.getElementById('box').addEventListener('webkitAnimationEnd', function() {
                requestAnimationFrame(() => {
                    if (window.testRunner) {
                        document.getElementById('results').innerText = window.internals.layerTreeAsText(document);
                        testRunner.notifyDone();
                    }
                });
            })
        }
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
<div id="box" class="animating box"></div>

<pre id="results">Layer tree dump goes here</pre>
</body>
</html>
