| <!DOCTYPE html> | 
 | <script src="../resources/testharness.js"></script> | 
 | <script src="../resources/testharnessreport.js"></script> | 
 |  | 
 | <div id='e'></div> | 
 |  | 
 | <script> | 
 | var element = document.getElementById('e'); | 
 |  | 
 | var keyframes = [{opacity: '1'}, {opacity: '0'}]; | 
 | var timingObject = {duration: 2, iterations: 5}; | 
 |  | 
 | test(function() { | 
 |     var keyframeEffect = new KeyframeEffect(element, keyframes, timingObject); | 
 |     assert_not_equals(keyframeEffect, undefined); | 
 |     assert_equals(keyframeEffect.constructor, KeyframeEffect); | 
 | }, 'Calling new KeyframeEffect() with a timing object input should create an keyframeEffect.'); | 
 |  | 
 | test(function() { | 
 |     var keyframeEffect = new KeyframeEffect(element, keyframes, 2); | 
 |     assert_not_equals(keyframeEffect, undefined); | 
 |     assert_equals(keyframeEffect.constructor, KeyframeEffect); | 
 | }, 'Calling new KeyframeEffect() with a duration input should create an keyframeEffect.'); | 
 |  | 
 | test(function() { | 
 |     var keyframeEffect = new KeyframeEffect(element, keyframes); | 
 |     assert_not_equals(keyframeEffect, undefined); | 
 |     assert_equals(keyframeEffect.constructor, KeyframeEffect); | 
 | }, 'Calling new KeyframeEffect() with no timing input should create an keyframeEffect.'); | 
 |  | 
 | test(function() { | 
 |     var keyframeEffect = new KeyframeEffect(null, keyframes); | 
 |     assert_not_equals(keyframeEffect, undefined); | 
 |     assert_equals(keyframeEffect.constructor, KeyframeEffect); | 
 | }, 'Calling new KeyframeEffect() with no target should create an keyframeEffect.'); | 
 | </script> |