<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Multi-column Layout Test: column-gap test animation</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#column-gap">
<link rel="help" href="https://www.w3.org/TR/web-animations-1/#dom-animatable-animate">
<meta name="assert" content="Test checks that column-gap is an animatable property, and that the computed values during the animation are the expected ones.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
  #multicol {
    column-gap: 0px;
  }
</style>
<body>
  <div id="multicol"></div>
  <div id="log"></div>

  <script>
    test(
      function(){
        var multicol = document.getElementById("multicol");
        assert_equals(getComputedStyle(multicol).columnGap, "0px");

        var keyframes = [
          { columnGap: "100px" },
          { columnGap: "200px" }
        ];
        var options = {
          duration: 10,
          fill: "forwards",
          easing: "linear"
        };

        var player = multicol.animate(keyframes, options);
        player.pause();
        player.currentTime = 0;
        assert_equals(getComputedStyle(multicol).columnGap, "100px");
        player.currentTime = 5;
        assert_equals(getComputedStyle(multicol).columnGap, "150px");
        player.currentTime = 10;
        assert_equals(getComputedStyle(multicol).columnGap, "200px");
      }, "column-gap property is animatable");
  </script>
</body>
