<svg xmlns="http://www.w3.org/2000/svg">
    <g>
        <text>Passes if we did not debug assert.</text>
        <animate attributeName="class" dur="20ms" values="box; circle" onbegin="animationStarted()"/>
        <animate attributeName="class" dur="20ms" values="box; circle"/>
    </g>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function animationStarted() {
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</svg>
