<!DOCTYPE html>

<html>
<head>
  <style>
    .box {
      display: inline-block;
      height: 100px;
      width: 100px;
      margin: 20px;
      border: 3px solid blue;
      -webkit-transition-duration: 0.5s;
      -webkit-transition-timing-function: linear;
      -webkit-transition-property: box-shadow;
    }
    
    .final #none-to-normal {
      box-shadow: 20px 20px 10px black;
    }

    .final #none-to-inset {
      box-shadow: 20px 20px 10px black inset;
    }

    #inset-to-normal {
      box-shadow: 20px 20px 10px black inset;
    }

    .final #inset-to-normal {
      box-shadow: 20px 20px 10px black;
    }

    #normal-to-inset {
      box-shadow: 20px 20px 10px black;
    }

    .final #normal-to-inset {
      box-shadow: 20px 20px 10px black inset;
    }

  </style>
  <script src="../animations/resources/animation-test-helpers.js"></script>
  <script type="text/javascript">

    const expectedValues = [
      // [time, element-id, property, expected-value, tolerance]
      // For box-shadow, we test shadow-x and shadow-y to see if it's animating.
      [0.25, 'none-to-normal', 'box-shadow', [10, 10], 1],
      [0.25, 'none-to-inset', 'box-shadow', [10, 10], 1],
      [0.25, 'inset-to-normal', 'box-shadow', [20, 20], 1],
      [0.25, 'normal-to-inset', 'box-shadow', [20, 20], 1],
    ];
  
    function setupTest()
    {
      document.body.className = 'final';
    }
  
    runTransitionTest(expectedValues, setupTest);
  </script>
</head>
<body>

  <div id="none-to-normal" class="box"></div>
  <div id="none-to-inset" class="box"></div>
  <div id="inset-to-normal" class="box"></div>
  <div id="normal-to-inset" class="box"></div>

  <div id="result">
  </div>

</body>
</html>
