<style>

div {
    background-color: rebeccapurple;
    width: 100px;
    height: 100px;
}

#first {
    position: absolute;
    top: 10px;
    left: 10px;
}

#second {
    position: absolute;
    top: 200px;
    left: 200px;
}

.animate-class {
    animation: 1s linear 0s 1 normal scale;
}

.first-letter::first-letter {
    color:red;
}

@keyframes scale {
    0% {
        transform: scale(0);
    }

    10% {
        transform: scale(1);
    }

    100% {
        transform: scale(1);
    }
}

</style>
<script>

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

window.onload = async function() {
    let shadowRoot = document.body.attachShadow({ mode: "open" });

    // Put a named slot and assign an element to it.
    shadowRoot.innerHTML = `<slot name="first"></slot>`;
    let firstElement = document.body.appendChild(document.createElement("div"));
    firstElement.slot = "first";
    firstElement.id = "first";

    await new Promise(requestAnimationFrame);

    // Create another named slot and assign another element to it.
    let secondSlot = shadowRoot.appendChild(document.createElement("slot"));
    secondSlot.name = "second";

    // Start animation in the seconds slot.
    let secondElement = document.body.appendChild(document.createElement("div"));
    secondElement.slot = "second";
    secondElement.className = "animate-class";
    secondElement.id = "second";

    const animation = secondElement.getAnimations()[0];

    await animation.ready;

    await new Promise(requestAnimationFrame);
    await new Promise(requestAnimationFrame);
    await new Promise(requestAnimationFrame);

    firstElement.remove();

    // Wait until animation has progressed some before snapshotting the test result.
    while (animation.currentTime < 100)
        await new Promise(requestAnimationFrame);

    if (window.testRunner)
        testRunner.notifyDone();
}

</script>

