Pointer Events Capture Test - capture and relatedTarget

Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
Put your mouse over the purple rectangle. pointerover should be received for the purple rectangle
Press and hold left mouse button over "Set Capture" button
Move your mouse. pointerover should be received for the black rectangle
Release left mouse button to complete the test.

Test passes if the proper behavior of the events is observed.



Pointer Events Capture Test

Test complete: Scroll to Summary to view Pass/Fail Results.

The following pointer types were detected: mouse.

The following events were logged: pointerover@target1, gotpointercapture@target0, pointerover@target0, pointerover@target0, lostpointercapture@target0.

Refresh the page to run the tests again with a different pointer type.


Harness Error (FAIL), message = 1 duplicate test name: "relatedTarget should not be null even when the capture is set."

PASS pointerover shouldn't trigger for the purple rectangle while the black rectangle has capture 
PASS relatedTarget should not be null even when the capture is set. 
PASS relatedTarget should not be null even when the capture is set. 

