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
		DETAILS	 id=details
			SUMMARY	 id=summary
				DIV	


Moving mouse from details to summary

  mouseout
     @details (target: details) (related: summary)
     @top (target: details) (related: summary)

  mouseover
     @summary (target: summary) (related: details)
     @details (target: summary) (related: details)
     @top (target: summary) (related: details)

Moving mouse from summary to details

  mouseout
     @summary (target: summary) (related: details)
     @details (target: summary) (related: details)
     @top (target: summary) (related: details)

  mouseover
     @details (target: details) (related: summary)
     @top (target: details) (related: summary)
PASS successfullyParsed is true

TEST COMPLETE

