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=A
			DIV	 id=B
			DIV	 id=D
			DIV	 id=F


Moving mouse from B to A

  mouseout
     @B (target: B) (related: A)
     @C (target: B) (related: A)
     @older-shadow-root (target: B) (related: A)
     @E (target: B) (related: A)
     @younger-shadow-root (target: B) (related: A)
     @A (target: B) (related: A)
     @top (target: B) (related: A)

  mouseover
     @A (target: A) (related: B)
     @top (target: A) (related: B)

Moving mouse from A/D to A//F

  mouseout

  mouseover

Moving mouse from B to A//F

  mouseout

  mouseover
PASS successfullyParsed is true

TEST COMPLETE

