<!DOCTYPE html><metacharset="utf-8"><title>CSS Transitions Test: TransitionEvent interface</title><linkrel="help"href="https://drafts.csswg.org/css-transitions-1/#interface-transitionevent"><scriptsrc="/resources/testharness.js"></script><scriptsrc="/resources/testharnessreport.js"></script><scriptsrc="transitionevent-interface.js"></script><script>test(function(){varevent=newTransitionEvent("");assert_true(eventinstanceofwindow.TransitionEvent);},"the event is an instance of TransitionEvent");test(function(){varevent=newTransitionEvent("");assert_true(eventinstanceofwindow.Event);},"the event inherts from Event");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent();},'First argument is required, so was expecting a TypeError.');},'Missing type argument');test(function(){varevent=newTransitionEvent("test");assert_equals(event.type,"test");},"type argument is string");test(function(){varevent=newTransitionEvent(null);assert_equals(event.type,"null");},"type argument is null");test(function(){varevent=newTransitionEvent(undefined);assert_equals(event.type,"undefined");},"event type set to undefined");test(function(){varevent=newTransitionEvent("test");assert_equals(event.propertyName,"");},"propertyName has default value of empty string");test(function(){varevent=newTransitionEvent("test");assert_equals(event.elapsedTime,0.0);},"elapsedTime has default value of 0.0");test(function(){varevent=newTransitionEvent("test");assert_readonly(event,"propertyName","readonly attribute value");},"propertyName is readonly");test(function(){varevent=newTransitionEvent("test");assert_readonly(event,"elapsedTime","readonly attribute value");},"elapsedTime is readonly");test(function(){varevent=newTransitionEvent("test",null);assert_equals(event.propertyName,"");assert_equals(event.elapsedTime,0.0);},"animationEventInit argument is null");test(function(){varevent=newTransitionEvent("test",undefined);assert_equals(event.propertyName,"");assert_equals(event.elapsedTime,0.0);},"animationEventInit argument is undefined");test(function(){varevent=newTransitionEvent("test",{});assert_equals(event.propertyName,"");assert_equals(event.elapsedTime,0.0);},"animationEventInit argument is empty dictionary");test(function(){varevent=newTransitionEvent("test",{pseudoElement:"::testPseudo"});assert_equals(event.pseudoElement,"::testPseudo");},"TransitionEvent.pseudoElement initialized from the dictionary");test(function(){varevent=newTransitionEvent("test",{propertyName:"sample"});assert_equals(event.propertyName,"sample");},"propertyName set to 'sample'");test(function(){varevent=newTransitionEvent("test",{propertyName:undefined});assert_equals(event.propertyName,"");},"propertyName set to undefined");test(function(){varevent=newTransitionEvent("test",{propertyName:null});assert_equals(event.propertyName,"null");},"propertyName set to null");test(function(){varevent=newTransitionEvent("test",{propertyName:false});assert_equals(event.propertyName,"false");},"propertyName set to false");test(function(){varevent=newTransitionEvent("test",{propertyName:true});assert_equals(event.propertyName,"true");},"propertyName set to true");test(function(){varevent=newTransitionEvent("test",{propertyName:0.5});assert_equals(event.propertyName,"0.5");},"propertyName set to a number");test(function(){varevent=newTransitionEvent("test",{propertyName:[]});assert_equals(event.propertyName,"");},"propertyName set to []");test(function(){varevent=newTransitionEvent("test",{propertyName:[1,2,3]});assert_equals(event.propertyName,"1,2,3");},"propertyName set to [1, 2, 3]");test(function(){varevent=newTransitionEvent("test",{propertyName:{sample:0.5}});assert_equals(event.propertyName,"[object Object]");},"propertyName set to an object");test(function(){varevent=newTransitionEvent("test",{propertyName:{valueOf:function(){return'sample';}}});assert_equals(event.propertyName,"[object Object]");},"propertyName set to an object with a valueOf function");test(function(){varevent=newTransitionEvent("test",{elapsedTime:0.5});assert_equals(event.elapsedTime,0.5);},"elapsedTime set to 0.5");test(function(){varevent=newTransitionEvent("test",{elapsedTime:-0.5});assert_equals(event.elapsedTime,-0.5);},"elapsedTime set to -0.5");test(function(){varevent=newTransitionEvent("test",{elapsedTime:undefined});assert_equals(event.elapsedTime,0);},"elapsedTime set to undefined");test(function(){varevent=newTransitionEvent("test",{elapsedTime:null});assert_equals(event.elapsedTime,0);},"elapsedTime set to null");test(function(){varevent=newTransitionEvent("test",{elapsedTime:false});assert_equals(event.elapsedTime,0);},"elapsedTime set to false");test(function(){varevent=newTransitionEvent("test",{elapsedTime:true});assert_equals(event.elapsedTime,1);},"elapsedTime set to true");test(function(){varevent=newTransitionEvent("test",{elapsedTime:""});assert_equals(event.elapsedTime,0);},"elapsedTime set to ''");test(function(){varevent=newTransitionEvent("test",{elapsedTime:[]});assert_equals(event.elapsedTime,0);},"elapsedTime set to []");test(function(){varevent=newTransitionEvent("test",{elapsedTime:[0.5]});assert_equals(event.elapsedTime,0.5);},"elapsedTime set to [0.5]");test(function(){varevent=newTransitionEvent("test",{elapsedTime:{valueOf:function(){return0.5;}}});assert_equals(event.elapsedTime,0.5);},"elapsedTime set to an object with a valueOf function");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:NaN});},'elapsedTime cannot be NaN so was expecting a TypeError');},"elapsedTime cannot be set to NaN");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:Infinity});},'elapsedTime cannot be Infinity so was expecting a TypeError');},"elapsedTime cannot be set to Infinity");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:-Infinity});},'elapsedTime cannot be -Infinity so was expecting a TypeError');},"elapsedTime cannot be set to -Infinity");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:"sample"});},'elapsedTime cannot be a string so was expecting a TypeError');},"elapsedTime cannot be set to 'sample'");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:[0.5,1.0]});},'elapsedTime cannot be a multi-element array so was expecting a TypeError');},"elapsedTime cannot be set to [0.5, 1.0]");test(function(){assert_throws_js(TypeError,function(){newTransitionEvent("test",{elapsedTime:{sample:0.5}});},'elapsedTime cannot be an object so was expecting a TypeError');},"elapsedTime cannot be set to an object");test(function(){vareventInit={propertyName:"sample",elapsedTime:0.5};varevent=newTransitionEvent("test",eventInit);assert_equals(event.propertyName,"sample");assert_equals(event.elapsedTime,0.5);},"TransitionEventInit properties set value");</script>