<!DOCTYPE html>

<html>
<head>
    <style>

        div {
            position: absolute;
            left: 0;
            top: 0;
            height: 100px;
            width: 100px;
        }
        
        #test {
            background-color: red;
            transition: transform calc(24 * 60 * 60s) linear;
            transition-delay: calc(-12 * 60 * 60s);
            transform: none;
        }

        #test.transitions {
            transform: translateX(100px);
        }

        #cover {
            transform: translateX(25px);
            background-color: green;
        }

    </style>
</head>
<body>

    <div id="test"></div>
    <div id="cover"></div>

    <script type="text/javascript">

        if (window.testRunner)
            testRunner.waitUntilDone();

        const test = document.getElementById("test");

        function waitForCompositedAnimationUpdate(callback)
        {
            setTimeout(callback, 500);
        }

        setTimeout(() => {
            test.classList.add("transitions");
            waitForCompositedAnimationUpdate(() => {
                test.classList.remove("transitions");
                waitForCompositedAnimationUpdate(() => {
                    if (window.testRunner)
                        testRunner.notifyDone();
                });
            });
        });
        
    </script>

</body>
</html>
