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=parent-of-inactive-content
				CONTENT	 id=inactive-content
					DIV	 id=child-of-inactive-content


Moving mouse from A to child-of-inactive-content

  mouseout
     @A (target: A) (related: child-of-inactive-content)
     @top (target: A) (related: child-of-inactive-content)

  mouseover
     @child-of-inactive-content (target: child-of-inactive-content) (related: A)
     @inactive-content (target: child-of-inactive-content) (related: A)
     @parent-of-inactive-content (target: child-of-inactive-content) (related: A)
     @active-content (target: child-of-inactive-content) (related: A)
     @shadow-root-B (target: child-of-inactive-content) (related: A)
     @B (target: child-of-inactive-content) (related: A)
     @top (target: child-of-inactive-content) (related: A)
PASS successfullyParsed is true

TEST COMPLETE

