
<style>
.box {
    height: 100px;
    width: 0px;
    border-width: 0;
    border-left-width: 200px;
    border-right-width: 200px;
    border-style: solid;
    border-color: blue;
    animation: foo 200ms forwards;
}
@keyframes foo {
    0% {
        border-left-color: orange;
        border-right-color: green;
    }
    50% {
        border-left-color: red;
    }
    50%, to {
        border-right-color: green;
    }
    to {
        border-left-color: orange;
    }
}

</style>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    window.addEventListener("load", function () {
        const animations = document.querySelector(".box").getAnimations();
        for (let animation of animations) {
            if (animation instanceof CSSAnimation && animation.animationName == "foo") {
                animation.currentTime = 100;
                animation.pause();
                break;
            }
        }
        testRunner.notifyDone();
    }, false);
}
</script>
<p>Left side should go orange -> red -> orange, right side should stay green at the end.</p>
<div class="box">
</div>

