Tests to ensure that event dispatching behaves as the Shadow DOM spec describes.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".




Composed Shadow Tree will be:
DIV	 id=sandbox
	DIV	 id=top
		DIV	 id=shadow-host
			#text	


Moving mouse from a direct child text node of the shadow root to top

  mouseout
     @shadow-host (target: shadow-host) (related: top)
     @top (target: shadow-host) (related: top)

  mouseover
     @top (target: top) (related: shadow-host)

  touchstart
     @shadow-root (target: shadow-root) (touches: shadow-root) (targetTouches: shadow-root) (changedTouches: shadow-root)
     @shadow-host (target: shadow-host) (touches: shadow-host) (targetTouches: shadow-host) (changedTouches: shadow-host)
     @top (target: shadow-host) (touches: shadow-host) (targetTouches: shadow-host) (changedTouches: shadow-host)

  mousewheel
     @shadow-root (target: shadow-root)
     @shadow-host (target: shadow-host)
     @top (target: shadow-host)
PASS successfullyParsed is true

TEST COMPLETE

