
PASS composedPath() must return an empty array when the event has not been dispatched 
PASS composedPath() must return an empty array when the event is no longer dispatched 
PASS composed on EventInit must default to false 
PASS composed on EventInit must set the composed flag 
PASS The event must propagate out of open mode shadow boundaries when the composed flag is set 
PASS The event must propagate out of closed mode shadow boundaries when the composed flag is set 
PASS The event must not propagate out of open mode shadow boundaries when the composed flag is unset 
PASS The event must not propagate out of closed mode shadow boundaries when the composed flag is unset 
PASS The event must not propagate out of open mode shadow boundaries when the composed flag is unset on an event with relatedTarget 
PASS The event must not propagate out of closed mode shadow boundaries when the composed flag is unset on an event with relatedTarget 
PASS The event must not propagate out of open mode shadow tree of the target but must propagate out of inner shadow trees when the scoped flag is set 
PASS The event must not propagate out of closed mode shadow tree of the target but must propagate out of inner shadow trees when the scoped flag is set 
PASS The event must propagate out of open mode shadow tree in which the relative target and the relative related target are the same 
PASS The event must propagate out of closed mode shadow tree in which the relative target and the relative related target are the same 
PASS composedPath() must contain and only contain the unclosed nodes of target in open mode shadow trees 
PASS composedPath() must contain and only contain the unclosed nodes of target in closed mode shadow trees 

