blob: c696b85fdd3432f735cf5a767fa6021ae0e066ac [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<div id="anim"></div>
<script>
test(() => assert_not_equals(window.internals, undefined, "Needs window.internals for testing."), "Check that window.internals is defined");
anim.offsetTop;
</script>
<style>
@keyframes unused {
from { color: pink }
to { color: orange }
}
</style>
<script>
test(() =>
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 2, "Recalc for style and script.")
, "Check that adding @keyframes does not cause a style recalc of the anim element when no animations are running.");
</script>
<style>
#anim {
color: red;
animation-name: later;
animation-duration: 100s;
animation-timing-function: step-end;
}
</style>
<script>
test(() =>
assert_equals(getComputedStyle(anim).color, "rgb(255, 0, 0)", "Initial color of #anim.")
, "Check initial color of #anim.");
anim.offsetTop;
</script>
<style>
@keyframes later {
from { color: green }
to { color: red }
}
</style>
<script>
test(() =>
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 13, "Full document recalc.")
, "Check that adding @keyframes after keyframe resolution failed, recalculates whole document");
test(() =>
assert_equals(getComputedStyle(anim).color, "rgb(0, 128, 0)", "Color of #anim during animation.")
, "Check that @keyframes rule applies.");
anim.offsetTop;
</script>
<style>
@keyframes later {
from { color: lime }
to { color: red }
}
</style>
<script>
test(() =>
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3, "Recalc of style, script, and #anim.")
, "Check that adding @keyframes causes a style recalc of the #anim element when an animation is running.");
test(() =>
assert_equals(getComputedStyle(anim).color, "rgb(0, 255, 0)", "Color of #anim during animation for new @keyframes.")
, "Check that the new @keyframes rule for 'later' applies.");
anim.offsetTop;
</script>
<style>
@keyframes unused2 {
from { color: pink }
to { color: orange }
}
</style>
<script>
test(() =>
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3, "Recalc of style, script, and #anim.")
, "Check that adding unused @keyframes causes a style recalc of the #anim element when an animation is running.");
</script>