blob: 37d82fe08ed527011fb49232f31deab8fa46ad85 [file] [log] [blame]
<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(resolve => requestAnimationFrame(resolve));
// 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(resolve => requestAnimationFrame(resolve));
await new Promise(resolve => requestAnimationFrame(resolve));
firstElement.remove();
// Wait until animation has progressed some before snapshotting the test result.
while (animation.currentTime < 100)
await new Promise(resolve => requestAnimationFrame(resolve));
if (window.testRunner)
testRunner.notifyDone();
}
</script>