<!doctype html>
<meta charset="utf-8">
<title></title>
<link rel="help" href="https://drafts.csswg.org/css-animations/#interface-csskeyframerule">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style type="text/css" id="styleElement">
  div { animation: 3s slidein; }
  @keyframes slidein {
    from {
      margin-left: 100%;
      width: 300%;
    }

    to {
      margin-left: 0%;
      width: 100%;
    }
  }
</style>
<script>
  var styleSheet = document.getElementById("styleElement").sheet;
  var keyframesRule = styleSheet.cssRules[1];
  var fromRule = keyframesRule.cssRules[0];
  var toRule = keyframesRule.cssRules[1];

  test(function() {
    assert_equals(keyframesRule.name, "slidein");
    assert_equals(typeof fromRule.style, "object");
    assert_equals(fromRule.style.marginLeft, "100%");
    assert_equals(fromRule.style.width, "300%");

    assert_equals(typeof toRule.style, "object");
    assert_equals(toRule.style.marginLeft, "0%");
    assert_equals(toRule.style.width, "100%");

    toRule.style.marginLeft = "-5%";
    toRule.style.width = "50%";

    assert_equals(fromRule.style.marginLeft, "100%");
    assert_equals(fromRule.style.width, "300%");
    assert_equals(toRule.style.marginLeft, "-5%");
    assert_equals(toRule.style.width, "50%");
  }, "CSSKeyframeRule: style property");

  test(function() {
    fromRule.style = "margin-left: 50%; width: 100%;";

    assert_equals(fromRule.style.marginLeft, "50%", "margin-left");
    assert_equals(fromRule.style.width, "100%", "width");
  }, "CSSKeyframeRule: style property has [PutForwards]");
</script>
