This is a snapshot of web-platform-tests results. It is not maintained and developers should refer to wpt.fyi for the most current test results and other developments.
215 tests were found (2683 subtests) in /pointerevents/.
| Jan 21, 2026 | |||
|---|---|---|---|
| file name | chrome | firefox | safari |
| § capturing_boundary_event_handler_at_ua_shadowdom.html?mouse | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| Capturing boundary event handler at DIV | PASS | PASS | PASS |
| Capturing boundary event handler at VIDEO | PASS | PASS | PASS |
| Capturing boundary event handler at INPUT | PASS | PASS | PASS |
| § capturing_boundary_event_handler_at_ua_shadowdom.html?pen | |||
| Overall | 3 / 3 | 0 / 0 | 3 / 3 |
| Harness status | OK | OK | OK |
| Capturing boundary event handler at DIV | PASS | FAIL | PASS |
| Capturing boundary event handler at VIDEO | PASS | FAIL | PASS |
| Capturing boundary event handler at INPUT | PASS | FAIL | PASS |
| § capturing_boundary_event_handler_at_ua_shadowdom.html?touch | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| Capturing boundary event handler at DIV | PASS | PASS | PASS |
| Capturing boundary event handler at VIDEO | PASS | PASS | PASS |
| Capturing boundary event handler at INPUT | PASS | PASS | PASS |
| § coalesced_events_attributes.https.html?mouse | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| Coalesced list in boundary events | PASS | PASS | PASS |
| Coalesced list in pointer-capture events | PASS | PASS | PASS |
| Coalesced list in pointerdown/move/up events | PASS | PASS | PASS |
| Coalesced list in pointercancel event | PASS | PASS | PASS |
| § coalesced_events_attributes.https.html?pen | |||
| Overall | 4 / 4 | 1 / 1 | 4 / 4 |
| Harness status | OK | OK | OK |
| Coalesced list in boundary events | PASS | FAIL | PASS |
| Coalesced list in pointer-capture events | PASS | FAIL | PASS |
| Coalesced list in pointerdown/move/up events | PASS | FAIL | PASS |
| Coalesced list in pointercancel event | PASS | PASS | PASS |
| § coalesced_events_attributes.https.html?touch | |||
| Overall | 4 / 4 | 3 / 3 | 3 / 3 |
| Harness status | OK | TIMEOUT | TIMEOUT |
| Coalesced list in boundary events | PASS | PASS | PASS |
| Coalesced list in pointer-capture events | PASS | PASS | PASS |
| Coalesced list in pointerdown/move/up events | PASS | PASS | PASS |
| Coalesced list in pointercancel event | PASS | TIMEOUT | TIMEOUT |
| § coalesced_events_attributes_on_redispatch.https.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Coalesced list in pointerdown/move/up events | PASS | PASS | PASS |
| § coalesced_events_attributes_on_redispatch.https.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | OK | OK |
| Coalesced list in pointerdown/move/up events | PASS | FAIL | PASS |
| § coalesced_events_attributes_on_redispatch.https.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Coalesced list in pointerdown/move/up events | PASS | PASS | PASS |
| § idlharness.https.window.html | |||
| Overall | 147 / 147 | 147 / 147 | 140 / 140 |
| Harness status | OK | OK | OK |
| idl_test setup | PASS | PASS | PASS |
| idl_test validation | PASS | PASS | PASS |
| Partial interface Element: original interface defined | PASS | PASS | PASS |
| Partial interface Element: member names are unique | PASS | PASS | PASS |
| Partial interface mixin GlobalEventHandlers: original interface mixin defined | PASS | PASS | PASS |
| Partial interface mixin GlobalEventHandlers: member names are unique | PASS | PASS | PASS |
| Partial interface Navigator: original interface defined | PASS | PASS | PASS |
| Partial interface Navigator: member names are unique | PASS | PASS | PASS |
| Partial interface UIEvent: member names are unique | PASS | PASS | PASS |
| Partial interface MouseEvent: member names are unique | PASS | PASS | PASS |
| Partial interface UIEvent[2]: member names are unique | PASS | PASS | PASS |
| Partial dictionary UIEventInit: member names are unique | PASS | PASS | PASS |
| Partial interface Document: member names are unique | PASS | PASS | PASS |
| Partial interface Navigator[2]: member names are unique | PASS | PASS | PASS |
| Partial interface Element[2]: member names are unique | PASS | PASS | PASS |
| Partial interface mixin NavigatorID: member names are unique | PASS | PASS | PASS |
| Partial interface Document[2]: member names are unique | PASS | PASS | PASS |
| Partial interface Window: member names are unique | PASS | PASS | PASS |
| Document includes GlobalEventHandlers: member names are unique | PASS | PASS | PASS |
| HTMLElement includes GlobalEventHandlers: member names are unique | PASS | PASS | PASS |
| HTMLElement includes ElementContentEditable: member names are unique | PASS | PASS | PASS |
| HTMLElement includes HTMLOrSVGElement: member names are unique | PASS | PASS | PASS |
| Window includes GlobalEventHandlers: member names are unique | PASS | PASS | PASS |
| Window includes WindowEventHandlers: member names are unique | PASS | PASS | PASS |
| Window includes WindowOrWorkerGlobalScope: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorID: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorLanguage: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorOnLine: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorContentUtils: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorCookies: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorPlugins: member names are unique | PASS | PASS | PASS |
| Navigator includes NavigatorConcurrentHardware: member names are unique | PASS | PASS | PASS |
| Window includes AnimationFrameProvider: member names are unique | PASS | PASS | PASS |
| Window includes WindowSessionStorage: member names are unique | PASS | PASS | PASS |
| Window includes WindowLocalStorage: member names are unique | PASS | PASS | PASS |
| Document includes NonElementParentNode: member names are unique | PASS | PASS | PASS |
| Document includes DocumentOrShadowRoot: member names are unique | PASS | PASS | PASS |
| Document includes ParentNode: member names are unique | PASS | PASS | PASS |
| Element includes ParentNode: member names are unique | PASS | PASS | PASS |
| Element includes NonDocumentTypeChildNode: member names are unique | PASS | PASS | PASS |
| Element includes ChildNode: member names are unique | PASS | PASS | PASS |
| Element includes Slottable: member names are unique | PASS | PASS | PASS |
| Document includes XPathEvaluatorBase: member names are unique | PASS | PASS | PASS |
| PointerEvent interface: existence and properties of interface object | PASS | PASS | PASS |
| PointerEvent interface object length | PASS | PASS | PASS |
| PointerEvent interface object name | PASS | PASS | PASS |
| PointerEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS |
| PointerEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS |
| PointerEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS |
| PointerEvent interface: attribute pointerId | PASS | PASS | PASS |
| PointerEvent interface: attribute width | PASS | PASS | PASS |
| PointerEvent interface: attribute height | PASS | PASS | PASS |
| PointerEvent interface: attribute pressure | PASS | PASS | PASS |
| PointerEvent interface: attribute tangentialPressure | PASS | PASS | PASS |
| PointerEvent interface: attribute tiltX | PASS | PASS | PASS |
| PointerEvent interface: attribute tiltY | PASS | PASS | PASS |
| PointerEvent interface: attribute twist | PASS | PASS | PASS |
| PointerEvent interface: attribute altitudeAngle | PASS | PASS | PASS |
| PointerEvent interface: attribute azimuthAngle | PASS | PASS | PASS |
| PointerEvent interface: attribute pointerType | PASS | PASS | PASS |
| PointerEvent interface: attribute isPrimary | PASS | PASS | PASS |
| PointerEvent interface: attribute persistentDeviceId | PASS | PASS | FAIL |
| PointerEvent interface: operation getCoalescedEvents() | PASS | PASS | PASS |
| PointerEvent interface: operation getPredictedEvents() | PASS | PASS | PASS |
| PointerEvent must be primary interface of new PointerEvent("type") | PASS | PASS | PASS |
| Stringification of new PointerEvent("type") | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "pointerId" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "width" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "height" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "pressure" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "tangentialPressure" with the… | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "tiltX" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "tiltY" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "twist" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "altitudeAngle" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "azimuthAngle" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "pointerType" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "isPrimary" with the proper type | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "persistentDeviceId" with the… | PASS | PASS | FAIL |
| PointerEvent interface: new PointerEvent("type") must inherit property "getCoalescedEvents()" with t… | PASS | PASS | PASS |
| PointerEvent interface: new PointerEvent("type") must inherit property "getPredictedEvents()" with t… | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerover | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerenter | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerdown | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointermove | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerrawupdate | PASS | PASS | FAIL |
| HTMLElement interface: attribute onpointerup | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointercancel | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerout | PASS | PASS | PASS |
| HTMLElement interface: attribute onpointerleave | PASS | PASS | PASS |
| HTMLElement interface: attribute ongotpointercapture | PASS | PASS | PASS |
| HTMLElement interface: attribute onlostpointercapture | PASS | PASS | PASS |
| Window interface: attribute onpointerover | PASS | PASS | PASS |
| Window interface: attribute onpointerenter | PASS | PASS | PASS |
| Window interface: attribute onpointerdown | PASS | PASS | PASS |
| Window interface: attribute onpointermove | PASS | PASS | PASS |
| Window interface: attribute onpointerrawupdate | PASS | PASS | FAIL |
| Window interface: attribute onpointerup | PASS | PASS | PASS |
| Window interface: attribute onpointercancel | PASS | PASS | PASS |
| Window interface: attribute onpointerout | PASS | PASS | PASS |
| Window interface: attribute onpointerleave | PASS | PASS | PASS |
| Window interface: attribute ongotpointercapture | PASS | PASS | PASS |
| Window interface: attribute onlostpointercapture | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerover" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerenter" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerdown" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointermove" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerrawupdate" with the proper type | PASS | PASS | FAIL |
| Window interface: window must inherit property "onpointerup" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointercancel" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerout" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onpointerleave" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "ongotpointercapture" with the proper type | PASS | PASS | PASS |
| Window interface: window must inherit property "onlostpointercapture" with the proper type | PASS | PASS | PASS |
| Navigator interface: attribute maxTouchPoints | PASS | PASS | PASS |
| Navigator interface: navigator must inherit property "maxTouchPoints" with the proper type | PASS | PASS | PASS |
| Document interface: attribute onpointerover | PASS | PASS | PASS |
| Document interface: attribute onpointerenter | PASS | PASS | PASS |
| Document interface: attribute onpointerdown | PASS | PASS | PASS |
| Document interface: attribute onpointermove | PASS | PASS | PASS |
| Document interface: attribute onpointerrawupdate | PASS | PASS | FAIL |
| Document interface: attribute onpointerup | PASS | PASS | PASS |
| Document interface: attribute onpointercancel | PASS | PASS | PASS |
| Document interface: attribute onpointerout | PASS | PASS | PASS |
| Document interface: attribute onpointerleave | PASS | PASS | PASS |
| Document interface: attribute ongotpointercapture | PASS | PASS | PASS |
| Document interface: attribute onlostpointercapture | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerover" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerenter" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerdown" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointermove" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerrawupdate" with the proper type | PASS | PASS | FAIL |
| Document interface: document must inherit property "onpointerup" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointercancel" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerout" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onpointerleave" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "ongotpointercapture" with the proper type | PASS | PASS | PASS |
| Document interface: document must inherit property "onlostpointercapture" with the proper type | PASS | PASS | PASS |
| Element interface: operation setPointerCapture(long) | PASS | PASS | PASS |
| Element interface: operation releasePointerCapture(long) | PASS | PASS | PASS |
| Element interface: operation hasPointerCapture(long) | PASS | PASS | PASS |
| Element interface: document.body must inherit property "setPointerCapture(long)" with the proper type | PASS | PASS | PASS |
| Element interface: calling setPointerCapture(long) on document.body with too few arguments must thro… | PASS | PASS | PASS |
| Element interface: document.body must inherit property "releasePointerCapture(long)" with the proper type | PASS | PASS | PASS |
| Element interface: calling releasePointerCapture(long) on document.body with too few arguments must … | PASS | PASS | PASS |
| Element interface: document.body must inherit property "hasPointerCapture(long)" with the proper type | PASS | PASS | PASS |
| Element interface: calling hasPointerCapture(long) on document.body with too few arguments must thro… | PASS | PASS | PASS |
| § inheritance.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| Property touch-action has initial value auto | PASS | PASS | PASS |
| Property touch-action does not inherit | PASS | PASS | PASS |
| § mouse-pointer-boundary-events-for-shadowdom.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerEvent: Verifies that mouse boundary events don't point to shadow-dom | PASS | PASS | PASS |
| § parsing/touch-action-computed.html | |||
| Overall | 6 / 6 | 6 / 6 | 6 / 6 |
| Harness status | OK | OK | OK |
| Property touch-action value 'auto' | PASS | PASS | PASS |
| Property touch-action value 'none' | PASS | PASS | PASS |
| Property touch-action value 'manipulation' | PASS | PASS | PASS |
| Property touch-action value 'pan-x' | PASS | PASS | PASS |
| Property touch-action value 'pan-y' | PASS | PASS | PASS |
| Property touch-action value 'pan-x pan-y' | PASS | PASS | PASS |
| § parsing/touch-action-invalid.html | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| e.style['touch-action'] = "auto none" should not set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "manipulation pan-x" should not set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "pan-y pan-x pan-y" should not set the property value | PASS | PASS | PASS |
| § parsing/touch-action-valid.html | |||
| Overall | 6 / 6 | 6 / 6 | 6 / 6 |
| Harness status | OK | OK | OK |
| e.style['touch-action'] = "auto" should set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "none" should set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "manipulation" should set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "pan-x" should set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "pan-y" should set the property value | PASS | PASS | PASS |
| e.style['touch-action'] = "pan-y pan-x" should set the property value | PASS | PASS | PASS |
| § pointer-events-none-skip-scroll-in-iframe.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | FAIL |
| § pointer-events-none-skip-scroll-scrollbar.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | PASS |
| § pointer-events-none-skip-scroll-will-change-in-iframe.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | FAIL |
| § pointer-events-none-skip-scroll-will-change-scrollbar.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | PASS |
| § pointer-events-none-skip-scroll-will-change.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | PASS |
| § pointer-events-none-skip-scroll.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | PASS |
| § pointer_boundary_events_after_removing_last_over_element_through_innerhtml.html | |||
| Overall | 2 / 2 | 2 / 2 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointer boundary events fired | PASS | PASS | FAIL |
| mouse boundary events fired | PASS | PASS | FAIL |
| § pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Generating text content under pointer | PASS | PASS | PASS |
| § pointerevent-drag-interaction.html | |||
| Overall | 4 / 4 | 4 / 4 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| Pointercancel should be fired with the expected order when drag operation starts | PASS | PASS | TIMEOUT |
| Pointercancel and lostpointercapture should be fired with the expected order when drag operation sta… | PASS | PASS | NOTRUN |
| Pointercancel and lostpointercapture should be fired with the expected order when drag operation sta… | PASS | PASS | NOTRUN |
| Pointerevent stream should not get interrupted when drag is prevented. | PASS | PASS | NOTRUN |
| § pointerevent_after_target_appended.html?mouse | |||
| Overall | 8 / 8 | 8 / 8 | 8 / 8 |
| Harness status | OK | OK | OK |
| pointer events from mouse received before/after child attached at pointerdown | PASS | PASS | PASS |
| pointer events from mouse received before/after child attached at pointerup | PASS | PASS | PASS |
| pointer events from mouse received before/after child moved at pointerdown | PASS | PASS | PASS |
| pointer events from mouse received before/after child moved at pointerup | PASS | PASS | PASS |
| mouse events from mouse received before/after child attached at mousedown | PASS | PASS | PASS |
| mouse events from mouse received before/after child attached at mouseup | PASS | PASS | PASS |
| mouse events from mouse received before/after child moved at mousedown | PASS | PASS | PASS |
| mouse events from mouse received before/after child moved at mouseup | PASS | PASS | PASS |
| § pointerevent_after_target_appended.html?pen | |||
| Overall | 4 / 4 | 0 / 0 | 8 / 8 |
| Harness status | OK | OK | OK |
| pointer events from pen received before/after child attached at pointerdown | FAIL | FAIL | PASS |
| pointer events from pen received before/after child attached at pointerup | FAIL | FAIL | PASS |
| pointer events from pen received before/after child moved at pointerdown | FAIL | FAIL | PASS |
| pointer events from pen received before/after child moved at pointerup | FAIL | FAIL | PASS |
| mouse events from pen received before/after child attached at mousedown | PASS | FAIL | PASS |
| mouse events from pen received before/after child attached at mouseup | PASS | FAIL | PASS |
| mouse events from pen received before/after child moved at mousedown | PASS | FAIL | PASS |
| mouse events from pen received before/after child moved at mouseup | PASS | FAIL | PASS |
| § pointerevent_after_target_appended.html?touch | |||
| Overall | 3 / 3 | 4 / 4 | 7 / 7 |
| Harness status | OK | OK | OK |
| pointer events from touch received before/after child attached at pointerdown | FAIL | FAIL | FAIL |
| pointer events from touch received before/after child attached at pointerup | FAIL | FAIL | PASS |
| pointer events from touch received before/after child moved at pointerdown | FAIL | FAIL | PASS |
| pointer events from touch received before/after child moved at pointerup | FAIL | FAIL | PASS |
| mouse events from touch received before/after child attached at mousedown | FAIL | PASS | PASS |
| mouse events from touch received before/after child attached at mouseup | PASS | PASS | PASS |
| mouse events from touch received before/after child moved at mousedown | PASS | PASS | PASS |
| mouse events from touch received before/after child moved at mouseup | PASS | PASS | PASS |
| § pointerevent_after_target_removed.html?mouse | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| pointer events from mouse received before/after child removal at pointerdown | PASS | PASS | PASS |
| pointer events from mouse received before/after child removal at pointerup | PASS | PASS | PASS |
| mouse events from mouse received before/after child removal at mousedown | PASS | PASS | PASS |
| mouse events from mouse received before/after child removal at mouseup | PASS | PASS | PASS |
| § pointerevent_after_target_removed.html?pen | |||
| Overall | 2 / 2 | 0 / 0 | 4 / 4 |
| Harness status | OK | OK | OK |
| pointer events from pen received before/after child removal at pointerdown | FAIL | FAIL | PASS |
| pointer events from pen received before/after child removal at pointerup | FAIL | FAIL | PASS |
| mouse events from pen received before/after child removal at mousedown | PASS | FAIL | PASS |
| mouse events from pen received before/after child removal at mouseup | PASS | FAIL | PASS |
| § pointerevent_after_target_removed.html?touch | |||
| Overall | 2 / 2 | 4 / 4 | 2 / 2 |
| Harness status | OK | OK | OK |
| pointer events from touch received before/after child removal at pointerdown | PASS | PASS | FAIL |
| pointer events from touch received before/after child removal at pointerup | PASS | PASS | FAIL |
| mouse events from touch received before/after child removal at mousedown | FAIL | PASS | PASS |
| mouse events from touch received before/after child removal at mouseup | FAIL | PASS | PASS |
| § pointerevent_after_target_removed_from_slot.html?mouse | |||
| Overall | 0 / 0 | 0 / 0 | 4 / 4 |
| Harness status | OK | OK | OK |
| mouse events with remove-slot at pointerdown | FAIL | FAIL | PASS |
| mouse events with remove-filler at pointerdown | FAIL | FAIL | FAIL |
| mouse events with change-slotname at pointerdown | FAIL | FAIL | PASS |
| mouse events with remove-slot at pointerup | FAIL | FAIL | PASS |
| mouse events with remove-filler at pointerup | FAIL | FAIL | FAIL |
| mouse events with change-slotname at pointerup | FAIL | FAIL | PASS |
| § pointerevent_attributes.html?mouse | |||
| Overall | 102 / 102 | 102 / 102 | 102 / 102 |
| Harness status | OK | OK | OK |
| Test pointer events in the main document | PASS | PASS | PASS |
| Test pointer events in an iframe | PASS | PASS | PASS |
| mouse pointerover event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerover.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerover.composed value is valid | PASS | PASS | PASS |
| mouse pointerover.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerover.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerover.pressure value is valid | PASS | PASS | PASS |
| mouse pointerover properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerenter event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerenter.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerenter.composed value is valid | PASS | PASS | PASS |
| mouse pointerenter.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerenter.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerenter.pressure value is valid | PASS | PASS | PASS |
| mouse pointerenter properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointermove event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointermove.isTrusted value is true | PASS | PASS | PASS |
| mouse pointermove.composed value is valid | PASS | PASS | PASS |
| mouse pointermove.bubbles value is valid | PASS | PASS | PASS |
| mouse pointermove.cancelable value is valid | PASS | PASS | PASS |
| mouse pointermove.pressure value is valid | PASS | PASS | PASS |
| mouse pointermove properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerdown event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerdown.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerdown.composed value is valid | PASS | PASS | PASS |
| mouse pointerdown.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerdown.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerdown.pressure value is valid | PASS | PASS | PASS |
| mouse pointerdown properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerup event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerup.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerup.composed value is valid | PASS | PASS | PASS |
| mouse pointerup.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerup.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerup.pressure value is valid | PASS | PASS | PASS |
| mouse pointerup properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerup properties for pointerup | PASS | PASS | PASS |
| mouse pointerout event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerout.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerout.composed value is valid | PASS | PASS | PASS |
| mouse pointerout.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerout.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerout.pressure value is valid | PASS | PASS | PASS |
| mouse pointerout properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerleave event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerleave.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerleave.composed value is valid | PASS | PASS | PASS |
| mouse pointerleave.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerleave.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerleave.pressure value is valid | PASS | PASS | PASS |
| mouse pointerleave properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerover event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerover.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerover.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerenter event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointermove event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointermove.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointermove.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerdown event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerup event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerup.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerup.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerup properties for pointerup | PASS | PASS | PASS |
| Inner Frame mouse pointerout event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerout.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerout.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerleave event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave properties for pointerType = mouse | PASS | PASS | PASS |
| § pointerevent_attributes.html?mouse-right | |||
| Overall | 102 / 102 | 102 / 102 | 102 / 102 |
| Harness status | OK | OK | OK |
| Test pointer events in the main document | PASS | PASS | PASS |
| Test pointer events in an iframe | PASS | PASS | PASS |
| mouse pointerover event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerover.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerover.composed value is valid | PASS | PASS | PASS |
| mouse pointerover.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerover.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerover.pressure value is valid | PASS | PASS | PASS |
| mouse pointerover properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerenter event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerenter.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerenter.composed value is valid | PASS | PASS | PASS |
| mouse pointerenter.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerenter.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerenter.pressure value is valid | PASS | PASS | PASS |
| mouse pointerenter properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointermove event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointermove.isTrusted value is true | PASS | PASS | PASS |
| mouse pointermove.composed value is valid | PASS | PASS | PASS |
| mouse pointermove.bubbles value is valid | PASS | PASS | PASS |
| mouse pointermove.cancelable value is valid | PASS | PASS | PASS |
| mouse pointermove.pressure value is valid | PASS | PASS | PASS |
| mouse pointermove properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerdown event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerdown.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerdown.composed value is valid | PASS | PASS | PASS |
| mouse pointerdown.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerdown.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerdown.pressure value is valid | PASS | PASS | PASS |
| mouse pointerdown properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerup event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerup.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerup.composed value is valid | PASS | PASS | PASS |
| mouse pointerup.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerup.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerup.pressure value is valid | PASS | PASS | PASS |
| mouse pointerup properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerup properties for pointerup | PASS | PASS | PASS |
| mouse pointerout event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerout.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerout.composed value is valid | PASS | PASS | PASS |
| mouse pointerout.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerout.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerout.pressure value is valid | PASS | PASS | PASS |
| mouse pointerout properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerleave event is a PointerEvent event | PASS | PASS | PASS |
| mouse pointerleave.isTrusted value is true | PASS | PASS | PASS |
| mouse pointerleave.composed value is valid | PASS | PASS | PASS |
| mouse pointerleave.bubbles value is valid | PASS | PASS | PASS |
| mouse pointerleave.cancelable value is valid | PASS | PASS | PASS |
| mouse pointerleave.pressure value is valid | PASS | PASS | PASS |
| mouse pointerleave properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerover event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerover.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerover.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerover properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerenter event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerenter properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointermove event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointermove.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointermove.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointermove properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerdown event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerdown properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerup event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerup.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerup.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerup properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerup properties for pointerup | PASS | PASS | PASS |
| Inner Frame mouse pointerout event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerout.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerout.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerout properties for pointerType = mouse | PASS | PASS | PASS |
| Inner Frame mouse pointerleave event is a PointerEvent event | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.isTrusted value is true | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.composed value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.bubbles value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.cancelable value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave.pressure value is valid | PASS | PASS | PASS |
| Inner Frame mouse pointerleave properties for pointerType = mouse | PASS | PASS | PASS |
| § pointerevent_attributes.html?pen | |||
| Overall | 88 / 88 | 0 / 0 | 102 / 102 |
| Harness status | OK | OK | OK |
| Test pointer events in the main document | PASS | FAIL | PASS |
| Test pointer events in an iframe | PASS | FAIL | PASS |
| pen pointerover event is a PointerEvent event | PASS | missing | missing |
| pen pointerover.isTrusted value is true | PASS | missing | missing |
| pen pointerover.composed value is valid | PASS | missing | missing |
| pen pointerover.bubbles value is valid | PASS | missing | missing |
| pen pointerover.cancelable value is valid | PASS | missing | missing |
| pen pointerover.pressure value is valid | PASS | missing | missing |
| pen pointerenter event is a PointerEvent event | PASS | missing | missing |
| pen pointerenter.isTrusted value is true | PASS | missing | missing |
| pen pointerenter.composed value is valid | PASS | missing | missing |
| pen pointerenter.bubbles value is valid | PASS | missing | missing |
| pen pointerenter.cancelable value is valid | PASS | missing | missing |
| pen pointerenter.pressure value is valid | PASS | missing | missing |
| pen pointermove event is a PointerEvent event | PASS | missing | missing |
| pen pointermove.isTrusted value is true | PASS | missing | missing |
| pen pointermove.composed value is valid | PASS | missing | missing |
| pen pointermove.bubbles value is valid | PASS | missing | missing |
| pen pointermove.cancelable value is valid | PASS | missing | missing |
| pen pointermove.pressure value is valid | PASS | missing | missing |
| pen pointerdown event is a PointerEvent event | PASS | missing | missing |
| pen pointerdown.isTrusted value is true | PASS | missing | missing |
| pen pointerdown.composed value is valid | PASS | missing | missing |
| pen pointerdown.bubbles value is valid | PASS | missing | missing |
| pen pointerdown.cancelable value is valid | PASS | missing | missing |
| pen pointerdown.pressure value is valid | PASS | missing | missing |
| pen pointerup event is a PointerEvent event | PASS | missing | missing |
| pen pointerup.isTrusted value is true | PASS | missing | missing |
| pen pointerup.composed value is valid | PASS | missing | missing |
| pen pointerup.bubbles value is valid | PASS | missing | missing |
| pen pointerup.cancelable value is valid | PASS | missing | missing |
| pen pointerup.pressure value is valid | PASS | missing | missing |
| pen pointerup properties for pointerup | PASS | missing | missing |
| pen pointerout event is a PointerEvent event | PASS | missing | missing |
| pen pointerout.isTrusted value is true | PASS | missing | missing |
| pen pointerout.composed value is valid | PASS | missing | missing |
| pen pointerout.bubbles value is valid | PASS | missing | missing |
| pen pointerout.cancelable value is valid | PASS | missing | missing |
| pen pointerout.pressure value is valid | PASS | missing | missing |
| pen pointerleave event is a PointerEvent event | PASS | missing | missing |
| pen pointerleave.isTrusted value is true | PASS | missing | missing |
| pen pointerleave.composed value is valid | PASS | missing | missing |
| pen pointerleave.bubbles value is valid | PASS | missing | missing |
| pen pointerleave.cancelable value is valid | PASS | missing | missing |
| pen pointerleave.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerover event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerover.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerover.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerenter.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerenter.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointermove event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointermove.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointermove.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerdown.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerdown.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerup event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerup.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerup.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerup properties for pointerup | PASS | missing | missing |
| Inner Frame pen pointerout event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerout.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerout.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerleave.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerleave.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.pressure value is valid | PASS | missing | missing |
| mouse pointerover event is a PointerEvent event | missing | missing | PASS |
| mouse pointerover.isTrusted value is true | missing | missing | PASS |
| mouse pointerover.composed value is valid | missing | missing | PASS |
| mouse pointerover.bubbles value is valid | missing | missing | PASS |
| mouse pointerover.cancelable value is valid | missing | missing | PASS |
| mouse pointerover.pressure value is valid | missing | missing | PASS |
| mouse pointerover properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerenter event is a PointerEvent event | missing | missing | PASS |
| mouse pointerenter.isTrusted value is true | missing | missing | PASS |
| mouse pointerenter.composed value is valid | missing | missing | PASS |
| mouse pointerenter.bubbles value is valid | missing | missing | PASS |
| mouse pointerenter.cancelable value is valid | missing | missing | PASS |
| mouse pointerenter.pressure value is valid | missing | missing | PASS |
| mouse pointerenter properties for pointerType = mouse | missing | missing | PASS |
| mouse pointermove event is a PointerEvent event | missing | missing | PASS |
| mouse pointermove.isTrusted value is true | missing | missing | PASS |
| mouse pointermove.composed value is valid | missing | missing | PASS |
| mouse pointermove.bubbles value is valid | missing | missing | PASS |
| mouse pointermove.cancelable value is valid | missing | missing | PASS |
| mouse pointermove.pressure value is valid | missing | missing | PASS |
| mouse pointermove properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| mouse pointerdown.composed value is valid | missing | missing | PASS |
| mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| mouse pointerdown.pressure value is valid | missing | missing | PASS |
| mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| mouse pointerup.isTrusted value is true | missing | missing | PASS |
| mouse pointerup.composed value is valid | missing | missing | PASS |
| mouse pointerup.bubbles value is valid | missing | missing | PASS |
| mouse pointerup.cancelable value is valid | missing | missing | PASS |
| mouse pointerup.pressure value is valid | missing | missing | PASS |
| mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup properties for pointerup | missing | missing | PASS |
| mouse pointerout event is a PointerEvent event | missing | missing | PASS |
| mouse pointerout.isTrusted value is true | missing | missing | PASS |
| mouse pointerout.composed value is valid | missing | missing | PASS |
| mouse pointerout.bubbles value is valid | missing | missing | PASS |
| mouse pointerout.cancelable value is valid | missing | missing | PASS |
| mouse pointerout.pressure value is valid | missing | missing | PASS |
| mouse pointerout properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerleave event is a PointerEvent event | missing | missing | PASS |
| mouse pointerleave.isTrusted value is true | missing | missing | PASS |
| mouse pointerleave.composed value is valid | missing | missing | PASS |
| mouse pointerleave.bubbles value is valid | missing | missing | PASS |
| mouse pointerleave.cancelable value is valid | missing | missing | PASS |
| mouse pointerleave.pressure value is valid | missing | missing | PASS |
| mouse pointerleave properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerover event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerover.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerover.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerenter event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerenter.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerenter.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointermove event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointermove.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointermove.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerdown.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerup.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerup.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerup | missing | missing | PASS |
| Inner Frame mouse pointerout event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerout.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerout.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerleave event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerleave.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerleave.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave properties for pointerType = mouse | missing | missing | PASS |
| § pointerevent_attributes.html?pen-right | |||
| Overall | 88 / 88 | 0 / 0 | 102 / 102 |
| Harness status | OK | OK | OK |
| Test pointer events in the main document | PASS | FAIL | PASS |
| Test pointer events in an iframe | PASS | FAIL | PASS |
| pen pointerover event is a PointerEvent event | PASS | missing | missing |
| pen pointerover.isTrusted value is true | PASS | missing | missing |
| pen pointerover.composed value is valid | PASS | missing | missing |
| pen pointerover.bubbles value is valid | PASS | missing | missing |
| pen pointerover.cancelable value is valid | PASS | missing | missing |
| pen pointerover.pressure value is valid | PASS | missing | missing |
| pen pointerenter event is a PointerEvent event | PASS | missing | missing |
| pen pointerenter.isTrusted value is true | PASS | missing | missing |
| pen pointerenter.composed value is valid | PASS | missing | missing |
| pen pointerenter.bubbles value is valid | PASS | missing | missing |
| pen pointerenter.cancelable value is valid | PASS | missing | missing |
| pen pointerenter.pressure value is valid | PASS | missing | missing |
| pen pointermove event is a PointerEvent event | PASS | missing | missing |
| pen pointermove.isTrusted value is true | PASS | missing | missing |
| pen pointermove.composed value is valid | PASS | missing | missing |
| pen pointermove.bubbles value is valid | PASS | missing | missing |
| pen pointermove.cancelable value is valid | PASS | missing | missing |
| pen pointermove.pressure value is valid | PASS | missing | missing |
| pen pointerdown event is a PointerEvent event | PASS | missing | missing |
| pen pointerdown.isTrusted value is true | PASS | missing | missing |
| pen pointerdown.composed value is valid | PASS | missing | missing |
| pen pointerdown.bubbles value is valid | PASS | missing | missing |
| pen pointerdown.cancelable value is valid | PASS | missing | missing |
| pen pointerdown.pressure value is valid | PASS | missing | missing |
| pen pointerup event is a PointerEvent event | PASS | missing | missing |
| pen pointerup.isTrusted value is true | PASS | missing | missing |
| pen pointerup.composed value is valid | PASS | missing | missing |
| pen pointerup.bubbles value is valid | PASS | missing | missing |
| pen pointerup.cancelable value is valid | PASS | missing | missing |
| pen pointerup.pressure value is valid | PASS | missing | missing |
| pen pointerup properties for pointerup | PASS | missing | missing |
| pen pointerout event is a PointerEvent event | PASS | missing | missing |
| pen pointerout.isTrusted value is true | PASS | missing | missing |
| pen pointerout.composed value is valid | PASS | missing | missing |
| pen pointerout.bubbles value is valid | PASS | missing | missing |
| pen pointerout.cancelable value is valid | PASS | missing | missing |
| pen pointerout.pressure value is valid | PASS | missing | missing |
| pen pointerleave event is a PointerEvent event | PASS | missing | missing |
| pen pointerleave.isTrusted value is true | PASS | missing | missing |
| pen pointerleave.composed value is valid | PASS | missing | missing |
| pen pointerleave.bubbles value is valid | PASS | missing | missing |
| pen pointerleave.cancelable value is valid | PASS | missing | missing |
| pen pointerleave.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerover event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerover.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerover.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerover.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerenter.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerenter.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerenter.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointermove event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointermove.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointermove.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointermove.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerdown.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerdown.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerdown.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerup event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerup.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerup.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerup.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerup properties for pointerup | PASS | missing | missing |
| Inner Frame pen pointerout event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerout.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerout.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerout.pressure value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave event is a PointerEvent event | PASS | missing | missing |
| Inner Frame pen pointerleave.isTrusted value is true | PASS | missing | missing |
| Inner Frame pen pointerleave.composed value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.bubbles value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.cancelable value is valid | PASS | missing | missing |
| Inner Frame pen pointerleave.pressure value is valid | PASS | missing | missing |
| mouse pointerover event is a PointerEvent event | missing | missing | PASS |
| mouse pointerover.isTrusted value is true | missing | missing | PASS |
| mouse pointerover.composed value is valid | missing | missing | PASS |
| mouse pointerover.bubbles value is valid | missing | missing | PASS |
| mouse pointerover.cancelable value is valid | missing | missing | PASS |
| mouse pointerover.pressure value is valid | missing | missing | PASS |
| mouse pointerover properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerenter event is a PointerEvent event | missing | missing | PASS |
| mouse pointerenter.isTrusted value is true | missing | missing | PASS |
| mouse pointerenter.composed value is valid | missing | missing | PASS |
| mouse pointerenter.bubbles value is valid | missing | missing | PASS |
| mouse pointerenter.cancelable value is valid | missing | missing | PASS |
| mouse pointerenter.pressure value is valid | missing | missing | PASS |
| mouse pointerenter properties for pointerType = mouse | missing | missing | PASS |
| mouse pointermove event is a PointerEvent event | missing | missing | PASS |
| mouse pointermove.isTrusted value is true | missing | missing | PASS |
| mouse pointermove.composed value is valid | missing | missing | PASS |
| mouse pointermove.bubbles value is valid | missing | missing | PASS |
| mouse pointermove.cancelable value is valid | missing | missing | PASS |
| mouse pointermove.pressure value is valid | missing | missing | PASS |
| mouse pointermove properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| mouse pointerdown.composed value is valid | missing | missing | PASS |
| mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| mouse pointerdown.pressure value is valid | missing | missing | PASS |
| mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| mouse pointerup.isTrusted value is true | missing | missing | PASS |
| mouse pointerup.composed value is valid | missing | missing | PASS |
| mouse pointerup.bubbles value is valid | missing | missing | PASS |
| mouse pointerup.cancelable value is valid | missing | missing | PASS |
| mouse pointerup.pressure value is valid | missing | missing | PASS |
| mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup properties for pointerup | missing | missing | PASS |
| mouse pointerout event is a PointerEvent event | missing | missing | PASS |
| mouse pointerout.isTrusted value is true | missing | missing | PASS |
| mouse pointerout.composed value is valid | missing | missing | PASS |
| mouse pointerout.bubbles value is valid | missing | missing | PASS |
| mouse pointerout.cancelable value is valid | missing | missing | PASS |
| mouse pointerout.pressure value is valid | missing | missing | PASS |
| mouse pointerout properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerleave event is a PointerEvent event | missing | missing | PASS |
| mouse pointerleave.isTrusted value is true | missing | missing | PASS |
| mouse pointerleave.composed value is valid | missing | missing | PASS |
| mouse pointerleave.bubbles value is valid | missing | missing | PASS |
| mouse pointerleave.cancelable value is valid | missing | missing | PASS |
| mouse pointerleave.pressure value is valid | missing | missing | PASS |
| mouse pointerleave properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerover event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerover.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerover.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerover properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerenter event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerenter.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerenter.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerenter properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointermove event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointermove.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointermove.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointermove properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerdown.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerup.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerup.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerup | missing | missing | PASS |
| Inner Frame mouse pointerout event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerout.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerout.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerout properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerleave event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerleave.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerleave.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerleave properties for pointerType = mouse | missing | missing | PASS |
| § pointerevent_attributes.html?touch | |||
| Overall | 88 / 88 | 88 / 88 | 30 / 30 |
| Harness status | OK | OK | ERROR |
| Test pointer events in the main document | PASS | PASS | FAIL |
| Test pointer events in an iframe | PASS | PASS | FAIL |
| touch pointerover event is a PointerEvent event | PASS | PASS | missing |
| touch pointerover.isTrusted value is true | PASS | PASS | missing |
| touch pointerover.composed value is valid | PASS | PASS | missing |
| touch pointerover.bubbles value is valid | PASS | PASS | missing |
| touch pointerover.cancelable value is valid | PASS | PASS | missing |
| touch pointerover.pressure value is valid | PASS | PASS | missing |
| touch pointerenter event is a PointerEvent event | PASS | PASS | missing |
| touch pointerenter.isTrusted value is true | PASS | PASS | missing |
| touch pointerenter.composed value is valid | PASS | PASS | missing |
| touch pointerenter.bubbles value is valid | PASS | PASS | missing |
| touch pointerenter.cancelable value is valid | PASS | PASS | missing |
| touch pointerenter.pressure value is valid | PASS | PASS | missing |
| touch pointerdown event is a PointerEvent event | PASS | PASS | missing |
| touch pointerdown.isTrusted value is true | PASS | PASS | missing |
| touch pointerdown.composed value is valid | PASS | PASS | missing |
| touch pointerdown.bubbles value is valid | PASS | PASS | missing |
| touch pointerdown.cancelable value is valid | PASS | PASS | missing |
| touch pointerdown.pressure value is valid | PASS | PASS | missing |
| touch pointermove event is a PointerEvent event | PASS | PASS | missing |
| touch pointermove.isTrusted value is true | PASS | PASS | missing |
| touch pointermove.composed value is valid | PASS | PASS | missing |
| touch pointermove.bubbles value is valid | PASS | PASS | missing |
| touch pointermove.cancelable value is valid | PASS | PASS | missing |
| touch pointermove.pressure value is valid | PASS | PASS | missing |
| touch pointerup event is a PointerEvent event | PASS | PASS | missing |
| touch pointerup.isTrusted value is true | PASS | PASS | missing |
| touch pointerup.composed value is valid | PASS | PASS | missing |
| touch pointerup.bubbles value is valid | PASS | PASS | missing |
| touch pointerup.cancelable value is valid | PASS | PASS | missing |
| touch pointerup.pressure value is valid | PASS | PASS | missing |
| touch pointerup properties for pointerup | PASS | PASS | missing |
| touch pointerout event is a PointerEvent event | PASS | PASS | missing |
| touch pointerout.isTrusted value is true | PASS | PASS | missing |
| touch pointerout.composed value is valid | PASS | PASS | missing |
| touch pointerout.bubbles value is valid | PASS | PASS | missing |
| touch pointerout.cancelable value is valid | PASS | PASS | missing |
| touch pointerout.pressure value is valid | PASS | PASS | missing |
| touch pointerleave event is a PointerEvent event | PASS | PASS | missing |
| touch pointerleave.isTrusted value is true | PASS | PASS | missing |
| touch pointerleave.composed value is valid | PASS | PASS | missing |
| touch pointerleave.bubbles value is valid | PASS | PASS | missing |
| touch pointerleave.cancelable value is valid | PASS | PASS | missing |
| touch pointerleave.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerover event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerover.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerover.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerover.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerover.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerover.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerenter event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerenter.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerenter.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerenter.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerenter.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerenter.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerdown event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerdown.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerdown.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerdown.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerdown.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerdown.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointermove event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointermove.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointermove.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointermove.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointermove.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointermove.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerup event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerup.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerup.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerup.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerup.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerup.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerup properties for pointerup | PASS | PASS | missing |
| Inner Frame touch pointerout event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerout.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerout.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerout.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerout.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerout.pressure value is valid | PASS | PASS | missing |
| Inner Frame touch pointerleave event is a PointerEvent event | PASS | PASS | missing |
| Inner Frame touch pointerleave.isTrusted value is true | PASS | PASS | missing |
| Inner Frame touch pointerleave.composed value is valid | PASS | PASS | missing |
| Inner Frame touch pointerleave.bubbles value is valid | PASS | PASS | missing |
| Inner Frame touch pointerleave.cancelable value is valid | PASS | PASS | missing |
| Inner Frame touch pointerleave.pressure value is valid | PASS | PASS | missing |
| mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| mouse pointerdown.composed value is valid | missing | missing | PASS |
| mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| mouse pointerdown.pressure value is valid | missing | missing | PASS |
| mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| mouse pointerup.isTrusted value is true | missing | missing | PASS |
| mouse pointerup.composed value is valid | missing | missing | PASS |
| mouse pointerup.bubbles value is valid | missing | missing | PASS |
| mouse pointerup.cancelable value is valid | missing | missing | PASS |
| mouse pointerup.pressure value is valid | missing | missing | PASS |
| mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| mouse pointerup properties for pointerup | missing | missing | PASS |
| Inner Frame mouse pointerdown event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerdown.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerdown.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerdown properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup event is a PointerEvent event | missing | missing | PASS |
| Inner Frame mouse pointerup.isTrusted value is true | missing | missing | PASS |
| Inner Frame mouse pointerup.composed value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.bubbles value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.cancelable value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup.pressure value is valid | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerType = mouse | missing | missing | PASS |
| Inner Frame mouse pointerup properties for pointerup | missing | missing | PASS |
| § pointerevent_auxclick_is_a_pointerevent.html?mouse | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| auxclick using mouse is a PointerEvent with correct properties | PASS | PASS | PASS |
| auxclick using mouse is a PointerEvent with correct properties when no other PointerEvent listeners … | PASS | PASS | PASS |
| § pointerevent_auxclick_is_a_pointerevent.html?pen | |||
| Overall | 2 / 2 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| auxclick using pen is a PointerEvent with correct properties | PASS | FAIL | FAIL |
| auxclick using pen is a PointerEvent with correct properties when no other PointerEvent listeners are present | PASS | FAIL | FAIL |
| § pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| mouse Event sequence at implicit release on click | PASS | PASS | PASS |
| § pointerevent_boundary_events_attributes_during_drag.html | |||
| Overall | 2 / 2 | 2 / 2 | 0 / 0 |
| Harness status | OK | OK | OK |
| Attributes of boundary events during dragging mouse | PASS | PASS | FAIL |
| Attributes of boundary events during dragging mouse 1 | PASS | PASS | FAIL |
| § pointerevent_boundary_events_before_pointerrawupdate.https.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| Pointer boundary events should be fired before `pointerrawupdate` | FAIL | PASS | FAIL |
| § pointerevent_boundary_events_in_capturing.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Boundary events around pointer capture and release | PASS | PASS | PASS |
| § pointerevent_boundary_events_in_capturing.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | OK | OK |
| Boundary events around pointer capture and release | PASS | FAIL | PASS |
| § pointerevent_boundary_events_in_capturing.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Boundary events around pointer capture and release | PASS | PASS | PASS |
| § pointerevent_boundary_events_modifier_no_pointer_movement.html?Alt | |||
| Overall | 2 / 2 | 6 / 6 | 2 / 2 |
| Harness status | OK | OK | OK |
| Test altKey of pointer boundary events (modifiers are changed before move) | PASS | PASS | PASS |
| Test altKey of pointer boundary events (modifiers are changed after move) | PASS | PASS | PASS |
| Test altKey of pointer boundary events (modifiers are changed before move): altKey of pointerover sh… | FAIL | PASS | FAIL |
| Test altKey of pointer boundary events (modifiers are changed before move): altKey of pointerout sho… | FAIL | PASS | FAIL |
| Test altKey of pointer boundary events (modifiers are changed after move): altKey of pointerover sho… | FAIL | PASS | FAIL |
| Test altKey of pointer boundary events (modifiers are changed after move): altKey of pointerout should be true | FAIL | PASS | FAIL |
| § pointerevent_boundary_events_modifier_no_pointer_movement.html?Control | |||
| Overall | 2 / 2 | 6 / 6 | 2 / 2 |
| Harness status | OK | OK | OK |
| Test ctrlKey of pointer boundary events (modifiers are changed before move) | PASS | PASS | PASS |
| Test ctrlKey of pointer boundary events (modifiers are changed after move) | PASS | PASS | PASS |
| Test ctrlKey of pointer boundary events (modifiers are changed before move): ctrlKey of pointerover … | FAIL | PASS | FAIL |
| Test ctrlKey of pointer boundary events (modifiers are changed before move): ctrlKey of pointerout s… | FAIL | PASS | FAIL |
| Test ctrlKey of pointer boundary events (modifiers are changed after move): ctrlKey of pointerover s… | FAIL | PASS | FAIL |
| Test ctrlKey of pointer boundary events (modifiers are changed after move): ctrlKey of pointerout sh… | FAIL | PASS | FAIL |
| § pointerevent_boundary_events_modifier_no_pointer_movement.html?Meta | |||
| Overall | 2 / 2 | 6 / 6 | 2 / 2 |
| Harness status | OK | OK | OK |
| Test metaKey of pointer boundary events (modifiers are changed before move) | PASS | PASS | PASS |
| Test metaKey of pointer boundary events (modifiers are changed after move) | PASS | PASS | PASS |
| Test metaKey of pointer boundary events (modifiers are changed before move): metaKey of pointerover … | FAIL | PASS | FAIL |
| Test metaKey of pointer boundary events (modifiers are changed before move): metaKey of pointerout s… | FAIL | PASS | FAIL |
| Test metaKey of pointer boundary events (modifiers are changed after move): metaKey of pointerover s… | FAIL | PASS | FAIL |
| Test metaKey of pointer boundary events (modifiers are changed after move): metaKey of pointerout sh… | FAIL | PASS | FAIL |
| § pointerevent_boundary_events_modifier_no_pointer_movement.html?Shift | |||
| Overall | 2 / 2 | 6 / 6 | 2 / 2 |
| Harness status | OK | OK | OK |
| Test shiftKey of pointer boundary events (modifiers are changed before move) | PASS | PASS | PASS |
| Test shiftKey of pointer boundary events (modifiers are changed after move) | PASS | PASS | PASS |
| Test shiftKey of pointer boundary events (modifiers are changed before move): shiftKey of pointerove… | FAIL | PASS | FAIL |
| Test shiftKey of pointer boundary events (modifiers are changed before move): shiftKey of pointerout… | FAIL | PASS | FAIL |
| Test shiftKey of pointer boundary events (modifiers are changed after move): shiftKey of pointerover… | FAIL | PASS | FAIL |
| Test shiftKey of pointer boundary events (modifiers are changed after move): shiftKey of pointerout … | FAIL | PASS | FAIL |
| § pointerevent_boundary_events_on_image_map.html | |||
| Overall | 5 / 5 | 8 / 8 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointer boundary events when simple over/out | PASS | PASS | FAIL |
| pointer boundary events when moved from an <area> to the same <area> shared by another <img> | PASS | PASS | FAIL |
| pointer boundary events when the <area> is resized | FAIL | PASS | FAIL |
| pointer boundary events when both <area> and <img> are resized | PASS | PASS | FAIL |
| pointer boundary events when usemap is modified | FAIL | PASS | FAIL |
| pointer boundary events when usemap is modified and <img> is resized | PASS | PASS | FAIL |
| pointer boundary events when new <area> is available | FAIL | PASS | FAIL |
| pointer boundary events when new <area> is available and the <img> is resized | PASS | PASS | FAIL |
| § pointerevent_bubble_ancestors_none.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerEvent: Events still bubble to ancestors with pointer-events: none | PASS | PASS | PASS |
| § pointerevent_bubble_display_none.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerEvent: Events still bubble to ancestors with display: none | PASS | PASS | PASS |
| § pointerevent_bubble_mousedown_mouseup_different_target.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerEvent: Events still bubble to ancestors with mousedown causes mouseup to be a different target | PASS | PASS | PASS |
| § pointerevent_capture_mouse.html | |||
| Overall | 8 / 8 | 8 / 8 | 8 / 8 |
| Harness status | OK | OK | OK |
| gotpointercapture event received | PASS | PASS | PASS |
| lostpointercapture event received | PASS | PASS | PASS |
| pointerover event for black rectangle received | PASS | PASS | PASS |
| pointerover event for purple rectangle received | PASS | PASS | PASS |
| pointermove shouldn't trigger for the purple rectangle while the black rectangle has capture | PASS | PASS | PASS |
| relatedTarget is null when the capture is set. relatedTarget is null | PASS | PASS | PASS |
| pointermove received for captured element while out of it | PASS | PASS | PASS |
| pointermove received for captured element while inside of it | PASS | PASS | PASS |
| § pointerevent_capture_mouse_and_release_and_capture_again.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| A pointerout should be fired on the capturing element after losing the capture | PASS | PASS | missing |
| § pointerevent_capture_suppressing_mouse.html | |||
| Overall | 2 / 2 | 2 / 2 | 1 / 1 |
| Harness status | OK | OK | OK |
| Validate pointer events track pointer movement without pointer capture. | PASS | PASS | PASS |
| Test pointer capture. | PASS | PASS | FAIL |
| § pointerevent_capture_touch_and_release_at_got_capture.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| A pointerout should be fired on the capturing element after losing the capture | PASS | PASS | FAIL |
| § pointerevent_change-touch-action-onpointerdown_touch.html | |||
| Overall | 2 / 2 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| touch-action was changed | PASS | PASS | PASS |
| scroll should be received before the test finishes | PASS | FAIL | FAIL |
| § pointerevent_click_during_capture.html?mouse-auxclick | |||
| Overall | 6 / 6 | 6 / 6 | 6 / 6 |
| Harness status | OK | OK | OK |
| pointerdown/up at child1, no capture | PASS | PASS | PASS |
| pointerdown/up at child1, capture at child1 | PASS | PASS | PASS |
| pointerdown/up at child1, capture at child2 | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, no capture | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, capture at child1 | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, capture at child2 | PASS | PASS | PASS |
| § pointerevent_click_during_capture.html?mouse-click | |||
| Overall | 6 / 6 | 6 / 6 | 6 / 6 |
| Harness status | OK | OK | OK |
| pointerdown/up at child1, no capture | PASS | PASS | PASS |
| pointerdown/up at child1, capture at child1 | PASS | PASS | PASS |
| pointerdown/up at child1, capture at child2 | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, no capture | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, capture at child1 | PASS | PASS | PASS |
| pointerdown at child1, pointerup at child2, capture at child2 | PASS | PASS | PASS |
| § pointerevent_click_during_parent_capture.html?pointerType=mouse&preventDefault= | |||
| Overall | 14 / 14 | 14 / 14 | 14 / 14 |
| Harness status | OK | OK | OK |
| Test in the topmost document | PASS | PASS | PASS |
| Test in the iframe | PASS | PASS | PASS |
| Test in the topmost document: all expected events should be fired | PASS | PASS | PASS |
| Test in the topmost document: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "mousedown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "mouseup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "click" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: all expected events should be fired | PASS | PASS | PASS |
| Test in the iframe: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "mousedown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "mouseup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "click" event should be fired on expected target | PASS | PASS | PASS |
| § pointerevent_click_during_parent_capture.html?pointerType=mouse&preventDefault=pointerdown | |||
| Overall | 10 / 10 | 10 / 10 | 10 / 10 |
| Harness status | OK | OK | OK |
| Test in the topmost document | PASS | PASS | PASS |
| Test in the iframe | PASS | PASS | PASS |
| Test in the topmost document: all expected events should be fired | PASS | PASS | PASS |
| Test in the topmost document: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "click" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: all expected events should be fired | PASS | PASS | PASS |
| Test in the iframe: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "click" event should be fired on expected target | PASS | PASS | PASS |
| § pointerevent_click_during_parent_capture.html?pointerType=touch&preventDefault= | |||
| Overall | 16 / 16 | 16 / 16 | 10 / 10 |
| Harness status | OK | OK | OK |
| Test in the topmost document | PASS | PASS | PASS |
| Test in the iframe | PASS | PASS | PASS |
| Test in the topmost document: all expected events should be fired | PASS | PASS | FAIL |
| Test in the topmost document: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the topmost document: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchend" event should be fired on expected target | PASS | PASS | missing |
| Test in the topmost document: "mousedown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "mouseup" event should be fired on expected target | PASS | PASS | FAIL |
| Test in the topmost document: "click" event should be fired on expected target | FAIL | FAIL | PASS |
| Test in the iframe: all expected events should be fired | PASS | PASS | FAIL |
| Test in the iframe: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchend" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: "mousedown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "mouseup" event should be fired on expected target | PASS | PASS | FAIL |
| Test in the iframe: "click" event should be fired on expected target | FAIL | FAIL | PASS |
| § pointerevent_click_during_parent_capture.html?pointerType=touch&preventDefault=pointerdown | |||
| Overall | 12 / 12 | 12 / 12 | 8 / 8 |
| Harness status | OK | OK | OK |
| Test in the topmost document | PASS | PASS | PASS |
| Test in the iframe | PASS | PASS | PASS |
| Test in the topmost document: all expected events should be fired | PASS | PASS | FAIL |
| Test in the topmost document: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the topmost document: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchend" event should be fired on expected target | PASS | PASS | missing |
| Test in the topmost document: "click" event should be fired on expected target | FAIL | FAIL | PASS |
| Test in the iframe: all expected events should be fired | PASS | PASS | FAIL |
| Test in the iframe: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchend" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: "click" event should be fired on expected target | FAIL | FAIL | PASS |
| § pointerevent_click_during_parent_capture.html?pointerType=touch&preventDefault=touchstart | |||
| Overall | 12 / 12 | 12 / 12 | 6 / 6 |
| Harness status | OK | OK | OK |
| Test in the topmost document | PASS | PASS | PASS |
| Test in the iframe | PASS | PASS | PASS |
| Test in the topmost document: all expected events should be fired | PASS | PASS | FAIL |
| Test in the topmost document: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the topmost document: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the topmost document: "touchend" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: all expected events should be fired | PASS | PASS | FAIL |
| Test in the iframe: "pointerdown" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchstart" event should be fired on expected target | PASS | PASS | missing |
| Test in the iframe: "pointerup" event should be fired on expected target | PASS | PASS | PASS |
| Test in the iframe: "touchend" event should be fired on expected target | PASS | PASS | missing |
| § pointerevent_click_is_a_pointerevent.html?mouse | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| click using mouse is a PointerEvent with correct properties | PASS | PASS | PASS |
| click using mouse is a PointerEvent with correct properties when no other PointerEvent listeners are present | PASS | PASS | PASS |
| click using mouse is a PointerEvent with correct properties using non-pointing device | PASS | PASS | PASS |
| click using mouse is a PointerEvent with correct properties in a subframe | PASS | PASS | PASS |
| § pointerevent_click_is_a_pointerevent.html?pen | |||
| Overall | 3 / 3 | 0 / 0 | 3 / 3 |
| Harness status | OK | OK | OK |
| click using pen is a PointerEvent with correct properties | PASS | FAIL | PASS |
| click using pen is a PointerEvent with correct properties when no other PointerEvent listeners are present | PASS | FAIL | PASS |
| click using pen is a PointerEvent with correct properties in a subframe | PASS | FAIL | PASS |
| § pointerevent_click_is_a_pointerevent.html?touch | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| click using touch is a PointerEvent with correct properties | PASS | PASS | PASS |
| click using touch is a PointerEvent with correct properties when no other PointerEvent listeners are present | PASS | PASS | PASS |
| click using touch is a PointerEvent with correct properties in a subframe | PASS | PASS | PASS |
| § pointerevent_click_is_a_pointerevent_multiple_clicks.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| click using mouse is a PointerEvent | PASS | PASS | PASS |
| § pointerevent_click_is_a_pointerevent_multiple_clicks.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| click using pen is a PointerEvent | PASS | TIMEOUT | PASS |
| § pointerevent_click_is_a_pointerevent_multiple_clicks.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| click using touch is a PointerEvent | PASS | PASS | PASS |
| § pointerevent_constructor.html | |||
| Overall | 35 / 35 | 35 / 35 | 35 / 35 |
| Harness status | OK | OK | OK |
| PointerEvent: Constructor test | PASS | PASS | PASS |
| getCoalescedEvents in event | PASS | PASS | PASS |
| getPredictedEvents().length | PASS | PASS | PASS |
| event.target | PASS | PASS | PASS |
| event.currentTarget | PASS | PASS | PASS |
| event.eventPhase | PASS | PASS | PASS |
| event.clientX | PASS | PASS | PASS |
| event.pointerType | PASS | PASS | PASS |
| getPredictedEvents()[0].clientX | PASS | PASS | PASS |
| getPredictedEvents()[1].clientX | PASS | PASS | PASS |
| getPredictedEvents()[0].pointerId | PASS | PASS | PASS |
| getPredictedEvents()[0].pointerType | PASS | PASS | PASS |
| getPredictedEvents()[0].isPrimary | PASS | PASS | PASS |
| getPredictedEvents()[0].getPredictedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[0].target | PASS | PASS | PASS |
| getPredictedEvents()[0].currentTarget | PASS | PASS | PASS |
| getPredictedEvents()[0].eventPhase | PASS | PASS | PASS |
| getPredictedEvents()[0].cancelable | PASS | PASS | PASS |
| getPredictedEvents()[0].bubbles | PASS | PASS | PASS |
| getPredictedEvents()[0].offsetX | PASS | PASS | PASS |
| getPredictedEvents()[0].offsetY | PASS | PASS | PASS |
| getPredictedEvents()[1].pointerId | PASS | PASS | PASS |
| getPredictedEvents()[1].pointerType | PASS | PASS | PASS |
| getPredictedEvents()[1].isPrimary | PASS | PASS | PASS |
| getPredictedEvents()[1].getPredictedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[1].target | PASS | PASS | PASS |
| getPredictedEvents()[1].currentTarget | PASS | PASS | PASS |
| getPredictedEvents()[1].eventPhase | PASS | PASS | PASS |
| getPredictedEvents()[1].cancelable | PASS | PASS | PASS |
| getPredictedEvents()[1].bubbles | PASS | PASS | PASS |
| getPredictedEvents()[1].offsetX | PASS | PASS | PASS |
| getPredictedEvents()[1].offsetY | PASS | PASS | PASS |
| default event.pointerType | PASS | PASS | PASS |
| default getPredictedEvents().length | PASS | PASS | PASS |
| type event.pointerType | PASS | PASS | PASS |
| § pointerevent_constructor.https.html | |||
| Overall | 64 / 64 | 64 / 64 | 64 / 64 |
| Harness status | OK | OK | OK |
| PointerEvent: Constructor test | PASS | PASS | PASS |
| getCoalescedEvents().length | PASS | PASS | PASS |
| getPredictedEvents().length | PASS | PASS | PASS |
| event.target | PASS | PASS | PASS |
| event.currentTarget | PASS | PASS | PASS |
| event.eventPhase | PASS | PASS | PASS |
| event.clientX | PASS | PASS | PASS |
| event.pointerType | PASS | PASS | PASS |
| getCoalescedEvents()[0].clientX | PASS | PASS | PASS |
| getCoalescedEvents()[1].clientX | PASS | PASS | PASS |
| getPredictedEvents()[0].clientX | PASS | PASS | PASS |
| getPredictedEvents()[1].clientX | PASS | PASS | PASS |
| getCoalescedEvents()[0].pointerId | PASS | PASS | PASS |
| getCoalescedEvents()[0].pointerType | PASS | PASS | PASS |
| getCoalescedEvents()[0].isPrimary | PASS | PASS | PASS |
| getCoalescedEvents()[0].getCoalescedEvents().length | PASS | PASS | PASS |
| getCoalescedEvents()[0].getPredictedEvents().length | PASS | PASS | PASS |
| getCoalescedEvents()[0].target | PASS | PASS | PASS |
| getCoalescedEvents()[0].currentTarget | PASS | PASS | PASS |
| getCoalescedEvents()[0].eventPhase | PASS | PASS | PASS |
| getCoalescedEvents()[0].cancelable | PASS | PASS | PASS |
| getCoalescedEvents()[0].bubbles | PASS | PASS | PASS |
| getCoalescedEvents()[0].offsetX | PASS | PASS | PASS |
| getCoalescedEvents()[0].offsetY | PASS | PASS | PASS |
| getCoalescedEvents()[1].pointerId | PASS | PASS | PASS |
| getCoalescedEvents()[1].pointerType | PASS | PASS | PASS |
| getCoalescedEvents()[1].isPrimary | PASS | PASS | PASS |
| getCoalescedEvents()[1].getCoalescedEvents().length | PASS | PASS | PASS |
| getCoalescedEvents()[1].getPredictedEvents().length | PASS | PASS | PASS |
| getCoalescedEvents()[1].target | PASS | PASS | PASS |
| getCoalescedEvents()[1].currentTarget | PASS | PASS | PASS |
| getCoalescedEvents()[1].eventPhase | PASS | PASS | PASS |
| getCoalescedEvents()[1].cancelable | PASS | PASS | PASS |
| getCoalescedEvents()[1].bubbles | PASS | PASS | PASS |
| getCoalescedEvents()[1].offsetX | PASS | PASS | PASS |
| getCoalescedEvents()[1].offsetY | PASS | PASS | PASS |
| getPredictedEvents()[0].pointerId | PASS | PASS | PASS |
| getPredictedEvents()[0].pointerType | PASS | PASS | PASS |
| getPredictedEvents()[0].isPrimary | PASS | PASS | PASS |
| getPredictedEvents()[0].getCoalescedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[0].getPredictedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[0].target | PASS | PASS | PASS |
| getPredictedEvents()[0].currentTarget | PASS | PASS | PASS |
| getPredictedEvents()[0].eventPhase | PASS | PASS | PASS |
| getPredictedEvents()[0].cancelable | PASS | PASS | PASS |
| getPredictedEvents()[0].bubbles | PASS | PASS | PASS |
| getPredictedEvents()[0].offsetX | PASS | PASS | PASS |
| getPredictedEvents()[0].offsetY | PASS | PASS | PASS |
| getPredictedEvents()[1].pointerId | PASS | PASS | PASS |
| getPredictedEvents()[1].pointerType | PASS | PASS | PASS |
| getPredictedEvents()[1].isPrimary | PASS | PASS | PASS |
| getPredictedEvents()[1].getCoalescedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[1].getPredictedEvents().length | PASS | PASS | PASS |
| getPredictedEvents()[1].target | PASS | PASS | PASS |
| getPredictedEvents()[1].currentTarget | PASS | PASS | PASS |
| getPredictedEvents()[1].eventPhase | PASS | PASS | PASS |
| getPredictedEvents()[1].cancelable | PASS | PASS | PASS |
| getPredictedEvents()[1].bubbles | PASS | PASS | PASS |
| getPredictedEvents()[1].offsetX | PASS | PASS | PASS |
| getPredictedEvents()[1].offsetY | PASS | PASS | PASS |
| default event.pointerType | PASS | PASS | PASS |
| default getCoalescedEvents().length | PASS | PASS | PASS |
| default getPredictedEvents().length | PASS | PASS | PASS |
| type event.pointerType | PASS | PASS | PASS |
| § pointerevent_contextmenu_is_a_pointerevent.html?mouse | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| contextmenu using mouse is a PointerEvent with correct properties | PASS | PASS | PASS |
| contextmenu using mouse is a PointerEvent with correct properties when no other PointerEvent listene… | PASS | PASS | PASS |
| § pointerevent_contextmenu_is_a_pointerevent.html?touch | |||
| Overall | 0 / 0 | 0 / 0 | 0 / 0 |
| Harness status | TIMEOUT | TIMEOUT | TIMEOUT |
| contextmenu using touch is a PointerEvent with correct properties | TIMEOUT | TIMEOUT | TIMEOUT |
| contextmenu using touch is a PointerEvent with correct properties when no other PointerEvent listene… | NOTRUN | NOTRUN | NOTRUN |
| § pointerevent_disabled_form_control.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| mouse pointerevent attributes | PASS | PASS | PASS |
| § pointerevent_disabled_form_control.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| pen pointerevent attributes | PASS | NOTRUN | PASS |
| § pointerevent_disabled_form_control.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| touch pointerevent attributes | PASS | PASS | NOTRUN |
| § pointerevent_element_haspointercapture.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| hasPointerCapture | PASS | PASS | PASS |
| § pointerevent_element_haspointercapture.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| hasPointerCapture | PASS | NOTRUN | PASS |
| § pointerevent_element_haspointercapture.html?touch | |||
| Overall | 0 / 0 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| hasPointerCapture | FAIL | FAIL | FAIL |
| § pointerevent_element_haspointercapture_release_pending_capture.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| hasPointerCapture test after the pending pointer capture element releases pointer capture | PASS | PASS | PASS |
| § pointerevent_element_haspointercapture_release_pending_capture.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| hasPointerCapture test after the pending pointer capture element releases pointer capture | PASS | NOTRUN | PASS |
| § pointerevent_element_haspointercapture_release_pending_capture.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| hasPointerCapture test after the pending pointer capture element releases pointer capture | PASS | PASS | PASS |
| § pointerevent_fractional_coordinates.html?mouse | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| mouse pointerevent events in capturing | PASS | PASS | PASS |
| mouse | PASS | PASS | PASS |
| § pointerevent_fractional_coordinates.html?pen | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| pen pointerevent events in capturing | PASS | PASS | PASS |
| pen | PASS | PASS | PASS |
| § pointerevent_fractional_coordinates.html?touch | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| touch pointerevent events in capturing | PASS | PASS | PASS |
| touch | PASS | PASS | PASS |
| § pointerevent_fractional_coordinates_untrusted.html | |||
| Overall | 918 / 918 | 1032 / 1032 | 936 / 936 |
| Harness status | OK | OK | OK |
| PointerEvent.pointerdown.screenX | PASS | PASS | PASS |
| PointerEvent.pointerdown.screenY | PASS | PASS | PASS |
| PointerEvent.pointerdown.clientX | PASS | PASS | PASS |
| PointerEvent.pointerdown.clientY | PASS | PASS | PASS |
| PointerEvent.pointerdown.pageX | PASS | PASS | PASS |
| PointerEvent.pointerdown.pageY | PASS | PASS | PASS |
| PointerEvent.pointerdown.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerdown.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerup.screenX | PASS | PASS | PASS |
| PointerEvent.pointerup.screenY | PASS | PASS | PASS |
| PointerEvent.pointerup.clientX | PASS | PASS | PASS |
| PointerEvent.pointerup.clientY | PASS | PASS | PASS |
| PointerEvent.pointerup.pageX | PASS | PASS | PASS |
| PointerEvent.pointerup.pageY | PASS | PASS | PASS |
| PointerEvent.pointerup.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerup.offsetY | PASS | PASS | PASS |
| PointerEvent.pointermove.screenX | PASS | PASS | PASS |
| PointerEvent.pointermove.screenY | PASS | PASS | PASS |
| PointerEvent.pointermove.clientX | PASS | PASS | PASS |
| PointerEvent.pointermove.clientY | PASS | PASS | PASS |
| PointerEvent.pointermove.pageX | PASS | PASS | PASS |
| PointerEvent.pointermove.pageY | PASS | PASS | PASS |
| PointerEvent.pointermove.offsetX | PASS | PASS | PASS |
| PointerEvent.pointermove.offsetY | PASS | PASS | PASS |
| PointerEvent.pointercancel.screenX | PASS | PASS | PASS |
| PointerEvent.pointercancel.screenY | PASS | PASS | PASS |
| PointerEvent.pointercancel.clientX | PASS | PASS | PASS |
| PointerEvent.pointercancel.clientY | PASS | PASS | PASS |
| PointerEvent.pointercancel.pageX | PASS | PASS | PASS |
| PointerEvent.pointercancel.pageY | PASS | PASS | PASS |
| PointerEvent.pointercancel.offsetX | PASS | PASS | PASS |
| PointerEvent.pointercancel.offsetY | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.screenX | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.screenY | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.clientX | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.clientY | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.pageX | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.pageY | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.offsetX | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.offsetY | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.screenX | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.screenY | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.clientX | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.clientY | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.pageX | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.pageY | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.offsetX | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.screenX | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.screenY | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.clientX | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.clientY | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.pageX | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.pageY | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerover.screenX | PASS | PASS | PASS |
| PointerEvent.pointerover.screenY | PASS | PASS | PASS |
| PointerEvent.pointerover.clientX | PASS | PASS | PASS |
| PointerEvent.pointerover.clientY | PASS | PASS | PASS |
| PointerEvent.pointerover.pageX | PASS | PASS | PASS |
| PointerEvent.pointerover.pageY | PASS | PASS | PASS |
| PointerEvent.pointerover.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerover.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerout.screenX | PASS | PASS | PASS |
| PointerEvent.pointerout.screenY | PASS | PASS | PASS |
| PointerEvent.pointerout.clientX | PASS | PASS | PASS |
| PointerEvent.pointerout.clientY | PASS | PASS | PASS |
| PointerEvent.pointerout.pageX | PASS | PASS | PASS |
| PointerEvent.pointerout.pageY | PASS | PASS | PASS |
| PointerEvent.pointerout.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerout.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerenter.screenX | PASS | PASS | PASS |
| PointerEvent.pointerenter.screenY | PASS | PASS | PASS |
| PointerEvent.pointerenter.clientX | PASS | PASS | PASS |
| PointerEvent.pointerenter.clientY | PASS | PASS | PASS |
| PointerEvent.pointerenter.pageX | PASS | PASS | PASS |
| PointerEvent.pointerenter.pageY | PASS | PASS | PASS |
| PointerEvent.pointerenter.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerenter.offsetY | PASS | PASS | PASS |
| PointerEvent.pointerleave.screenX | PASS | PASS | PASS |
| PointerEvent.pointerleave.screenY | PASS | PASS | PASS |
| PointerEvent.pointerleave.clientX | PASS | PASS | PASS |
| PointerEvent.pointerleave.clientY | PASS | PASS | PASS |
| PointerEvent.pointerleave.pageX | PASS | PASS | PASS |
| PointerEvent.pointerleave.pageY | PASS | PASS | PASS |
| PointerEvent.pointerleave.offsetX | PASS | PASS | PASS |
| PointerEvent.pointerleave.offsetY | PASS | PASS | PASS |
| PointerEvent.foo.screenX | PASS | PASS | PASS |
| PointerEvent.foo.screenY | PASS | PASS | PASS |
| PointerEvent.foo.clientX | PASS | PASS | PASS |
| PointerEvent.foo.clientY | PASS | PASS | PASS |
| PointerEvent.foo.pageX | PASS | PASS | PASS |
| PointerEvent.foo.pageY | PASS | PASS | PASS |
| PointerEvent.foo.offsetX | PASS | PASS | PASS |
| PointerEvent.foo.offsetY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.click.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.offsetX | FAIL | PASS | PASS |
| 0.5 - 1.0: PointerEvent.click.offsetY | FAIL | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.click.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.offsetX | FAIL | PASS | PASS |
| -0.5 - 0.0: PointerEvent.click.offsetY | FAIL | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.click.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.offsetX | FAIL | PASS | PASS |
| -1.5 - -1.0: PointerEvent.click.offsetY | FAIL | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.auxclick.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.offsetX | FAIL | PASS | PASS |
| 0.5 - 1.0: PointerEvent.auxclick.offsetY | FAIL | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.auxclick.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.offsetX | FAIL | PASS | PASS |
| -0.5 - 0.0: PointerEvent.auxclick.offsetY | FAIL | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.auxclick.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.offsetX | FAIL | PASS | PASS |
| -1.5 - -1.0: PointerEvent.auxclick.offsetY | FAIL | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: PointerEvent.contextmenu.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.offsetX | FAIL | PASS | PASS |
| 0.5 - 1.0: PointerEvent.contextmenu.offsetY | FAIL | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: PointerEvent.contextmenu.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.offsetX | FAIL | PASS | PASS |
| -0.5 - 0.0: PointerEvent.contextmenu.offsetY | FAIL | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: PointerEvent.contextmenu.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.offsetX | FAIL | PASS | PASS |
| -1.5 - -1.0: PointerEvent.contextmenu.offsetY | FAIL | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.click.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.click.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.click.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.click.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.click.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.click.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.click.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.click.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.click.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.click.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.click.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.auxclick.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.auxclick.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.auxclick.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.auxclick.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.auxclick.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.auxclick.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.auxclick.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.auxclick.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.auxclick.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.contextmenu.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.contextmenu.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.contextmenu.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.contextmenu.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.contextmenu.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.contextmenu.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.contextmenu.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.contextmenu.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.contextmenu.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousedown.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousedown.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mousedown.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousedown.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousedown.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mousedown.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousedown.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousedown.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mousedown.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mousemove.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mousemove.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mousemove.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mousemove.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mousemove.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mousemove.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mousemove.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mousemove.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mousemove.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseup.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseup.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mouseup.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseup.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseup.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mouseup.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseup.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseup.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mouseup.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseover.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseover.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mouseover.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseover.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseover.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mouseover.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseover.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseover.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mouseover.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseout.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseout.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mouseout.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseout.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseout.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mouseout.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseout.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseout.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mouseout.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseenter.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseenter.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mouseenter.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseenter.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseenter.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mouseenter.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseenter.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseenter.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mouseenter.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.mouseleave.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.mouseleave.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.mouseleave.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.mouseleave.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.mouseleave.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.mouseleave.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.mouseleave.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.mouseleave.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.mouseleave.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: MouseEvent.dblclick.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: MouseEvent.dblclick.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: MouseEvent.dblclick.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: MouseEvent.dblclick.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: MouseEvent.dblclick.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: MouseEvent.dblclick.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: MouseEvent.dblclick.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: MouseEvent.dblclick.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: MouseEvent.dblclick.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragstart.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragstart.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: DragEvent.dragstart.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragstart.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragstart.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: DragEvent.dragstart.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragstart.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragstart.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: DragEvent.dragstart.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: DragEvent.dragover.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragover.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragover.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: DragEvent.dragover.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: DragEvent.dragover.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragover.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragover.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: DragEvent.dragover.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: DragEvent.dragover.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragover.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragover.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: DragEvent.dragover.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: DragEvent.dragend.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.dragend.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.dragend.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: DragEvent.dragend.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: DragEvent.dragend.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.dragend.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.dragend.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: DragEvent.dragend.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: DragEvent.dragend.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.dragend.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.dragend.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: DragEvent.dragend.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: DragEvent.drop.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: DragEvent.drop.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: DragEvent.drop.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: DragEvent.drop.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: DragEvent.drop.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: DragEvent.drop.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: DragEvent.drop.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: DragEvent.drop.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: DragEvent.drop.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: DragEvent.drop.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: DragEvent.drop.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: DragEvent.drop.offsetY | FAIL | PASS | FAIL |
| 0.0 - 0.5: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.offsetX | PASS | PASS | PASS |
| 0.0 - 0.5: WheelEvent.wheel.offsetY | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| 0.5 - 1.0: WheelEvent.wheel.offsetX | FAIL | PASS | FAIL |
| 0.5 - 1.0: WheelEvent.wheel.offsetY | FAIL | PASS | FAIL |
| 1.0 - 1.5: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.offsetX | PASS | PASS | PASS |
| 1.0 - 1.5: WheelEvent.wheel.offsetY | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| -0.5 - 0.0: WheelEvent.wheel.offsetX | FAIL | PASS | FAIL |
| -0.5 - 0.0: WheelEvent.wheel.offsetY | FAIL | PASS | FAIL |
| -1.0 - -0.5: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.offsetX | PASS | PASS | PASS |
| -1.0 - -0.5: WheelEvent.wheel.offsetY | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.screenX | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.screenY | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.clientX | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.clientY | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.pageX | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.pageY | PASS | PASS | PASS |
| -1.5 - -1.0: WheelEvent.wheel.offsetX | FAIL | PASS | FAIL |
| -1.5 - -1.0: WheelEvent.wheel.offsetY | FAIL | PASS | FAIL |
| PointerEvent.pointerdown.width | PASS | PASS | PASS |
| PointerEvent.pointerdown.height | PASS | PASS | PASS |
| PointerEvent.pointerup.width | PASS | PASS | PASS |
| PointerEvent.pointerup.height | PASS | PASS | PASS |
| PointerEvent.pointermove.width | PASS | PASS | PASS |
| PointerEvent.pointermove.height | PASS | PASS | PASS |
| PointerEvent.pointercancel.width | PASS | PASS | PASS |
| PointerEvent.pointercancel.height | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.width | PASS | PASS | PASS |
| PointerEvent.gotpointercapture.height | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.width | PASS | PASS | PASS |
| PointerEvent.lostpointercapture.height | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.width | PASS | PASS | PASS |
| PointerEvent.pointerrawupdate.height | PASS | PASS | PASS |
| PointerEvent.pointerover.width | PASS | PASS | PASS |
| PointerEvent.pointerover.height | PASS | PASS | PASS |
| PointerEvent.pointerout.width | PASS | PASS | PASS |
| PointerEvent.pointerout.height | PASS | PASS | PASS |
| PointerEvent.pointerenter.width | PASS | PASS | PASS |
| PointerEvent.pointerenter.height | PASS | PASS | PASS |
| PointerEvent.pointerleave.width | PASS | PASS | PASS |
| PointerEvent.pointerleave.height | PASS | PASS | PASS |
| PointerEvent.foo.width | PASS | PASS | PASS |
| PointerEvent.foo.height | PASS | PASS | PASS |
| § pointerevent_hit_test_scroll.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: none scroller skips that scroller | PASS | PASS | PASS |
| § pointerevent_hit_test_scroll_visible_descendant.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Wheel-scroll over pointer-events: auto descendant scrolls pointer-events: none scroller. | PASS | PASS | PASS |
| § pointerevent_iframe-touch-action-none_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| touch iframe received pointercancel | PASS | FAIL | FAIL |
| § pointerevent_lostpointercapture_for_disconnected_node.html | |||
| Overall | 4 / 4 | 4 / 4 | 3 / 3 |
| Harness status | OK | OK | OK |
| lostpointercapture event received | PASS | PASS | PASS |
| Lostpointercapture fires on document when target is removed | PASS | PASS | PASS |
| lostpointercapture must be received before the next pointerevent after the node is disconnected | PASS | PASS | FAIL |
| lostpointercapture is dispatched on the document | PASS | PASS | PASS |
| § pointerevent_lostpointercapture_for_disconnected_node_in_shadow_dom.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| lostpointercapture is dispatched on the document when shadow dom capturing element is removed | PASS | PASS | PASS |
| § pointerevent_lostpointercapture_for_disconnected_shadow_host.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| lostpointercapture is dispatched on the document when shadow host is removed | PASS | PASS | PASS |
| § pointerevent_lostpointercapture_is_first.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| lostpointercapture is dispatched prior to subsequent events | PASS | PASS | PASS |
| § pointerevent_lostpointercapture_remove_setcapture_node.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture target removed by lostpointercapture | PASS | PASS | PASS |
| § pointerevent_mouse_capture_change_hover.html | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| Mouse down and capture to green. | PASS | PASS | PASS |
| Mouse down at green and capture to blue. | PASS | PASS | PASS |
| Mouse down and capture to green, move to blue and release capture | PASS | PASS | PASS |
| § pointerevent_mouse_pointercapture_inactivate_pointer.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| setPointerCapture: pointer active in outer frame, set capture to inner frame | PASS | PASS | PASS |
| setPointerCapture: pointer active in inner frame, set capture to outer frame | PASS | PASS | PASS |
| § pointerevent_movementxy.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| mouse pointerevent attributes | PASS | PASS | PASS |
| § pointerevent_movementxy.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | ERROR | OK |
| pen pointerevent attributes | PASS | NOTRUN | FAIL |
| § pointerevent_movementxy.html?touch | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| touch pointerevent attributes | PASS | FAIL | FAIL |
| § pointerevent_multiple_pointerover_no_pointer_movement.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| Pointer boundary events should be fired per pointer | FAIL | PASS | FAIL |
| § pointerevent_on_event_handlers.html | |||
| Overall | 30 / 30 | 30 / 30 | 30 / 30 |
| Harness status | OK | OK | OK |
| The default value of onpointerdown is always null | PASS | PASS | PASS |
| The onpointerdown content attribute must be compiled into the onpointerdown property | PASS | PASS | PASS |
| dispatching a pointerdown event must trigger element.onpointerdown | PASS | PASS | PASS |
| The default value of onpointerup is always null | PASS | PASS | PASS |
| The onpointerup content attribute must be compiled into the onpointerup property | PASS | PASS | PASS |
| dispatching a pointerup event must trigger element.onpointerup | PASS | PASS | PASS |
| The default value of onpointercancel is always null | PASS | PASS | PASS |
| The onpointercancel content attribute must be compiled into the onpointercancel property | PASS | PASS | PASS |
| dispatching a pointercancel event must trigger element.onpointercancel | PASS | PASS | PASS |
| The default value of onpointermove is always null | PASS | PASS | PASS |
| The onpointermove content attribute must be compiled into the onpointermove property | PASS | PASS | PASS |
| dispatching a pointermove event must trigger element.onpointermove | PASS | PASS | PASS |
| The default value of onpointerover is always null | PASS | PASS | PASS |
| The onpointerover content attribute must be compiled into the onpointerover property | PASS | PASS | PASS |
| dispatching a pointerover event must trigger element.onpointerover | PASS | PASS | PASS |
| The default value of onpointerout is always null | PASS | PASS | PASS |
| The onpointerout content attribute must be compiled into the onpointerout property | PASS | PASS | PASS |
| dispatching a pointerout event must trigger element.onpointerout | PASS | PASS | PASS |
| The default value of onpointerenter is always null | PASS | PASS | PASS |
| The onpointerenter content attribute must be compiled into the onpointerenter property | PASS | PASS | PASS |
| dispatching a pointerenter event must trigger element.onpointerenter | PASS | PASS | PASS |
| The default value of onpointerleave is always null | PASS | PASS | PASS |
| The onpointerleave content attribute must be compiled into the onpointerleave property | PASS | PASS | PASS |
| dispatching a pointerleave event must trigger element.onpointerleave | PASS | PASS | PASS |
| The default value of ongotpointercapture is always null | PASS | PASS | PASS |
| The ongotpointercapture content attribute must be compiled into the ongotpointercapture property | PASS | PASS | PASS |
| dispatching a gotpointercapture event must trigger element.ongotpointercapture | PASS | PASS | PASS |
| The default value of onlostpointercapture is always null | PASS | PASS | PASS |
| The onlostpointercapture content attribute must be compiled into the onlostpointercapture property | PASS | PASS | PASS |
| dispatching a lostpointercapture event must trigger element.onlostpointercapture | PASS | PASS | PASS |
| § pointerevent_pointerId_scope.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerId of an active pointer is the same across same origin frames | PASS | PASS | PASS |
| § pointerevent_pointer_boundary_events_after_reappending_last_over_target.html | |||
| Overall | 3 / 3 | 3 / 3 | 1 / 1 |
| Harness status | OK | OK | OK |
| After re-appending the last over element at pointerover, pointer boundary events should be fired on … | PASS | PASS | FAIL |
| After re-appending the last over element at pointerenter, pointer boundary events should be fired on… | PASS | PASS | FAIL |
| After re-appending the last over element after pointerover, pointer boundary events should be fired … | PASS | PASS | PASS |
| § pointerevent_pointer_boundary_events_after_removing_last_over_element.html | |||
| Overall | 2 / 2 | 2 / 2 | 0 / 0 |
| Harness status | OK | OK | OK |
| After removing the last over element, redundant pointerenter events should not be fired on the ancestors | PASS | PASS | FAIL |
| After removing the root element in the shadow under the cursor, pointerleave events should be target… | PASS | PASS | FAIL |
| § pointerevent_pointercancel_touch.html | |||
| Overall | 7 / 7 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointercancel event received | PASS | FAIL | FAIL |
| touch pointercancel event is a PointerEvent event | PASS | missing | missing |
| touch pointercancel.isTrusted value is true | PASS | missing | missing |
| touch pointercancel.composed value is valid | PASS | missing | missing |
| touch pointercancel.bubbles value is valid | PASS | missing | missing |
| touch pointercancel.cancelable value is valid | PASS | missing | missing |
| touch pointercancel.pressure value is valid | PASS | missing | missing |
| § pointerevent_pointercapture-in-custom-element.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerCapture works for custom element Shadow DOM. | PASS | PASS | PASS |
| § pointerevent_pointercapture-in-shadow-dom.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| PointerCapture works for Shadow DOM element. | PASS | PASS | PASS |
| § pointerevent_pointercapture-not-lost-in-chorded-buttons.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| Pointer Events Capture Test - capture not lost due to chorded buttons interaction | PASS | PASS | PASS |
| Pointer Events Capture Test - capture not lost due to combination of left and right chorded buttons … | PASS | PASS | PASS |
| § pointerevent_pointercapture_in_frame.html?mouse | |||
| Overall | 6 / 6 | 6 / 6 | 6 / 6 |
| Harness status | OK | OK | OK |
| Test mousepointer capture in same-origin frame: Pointer down at inner frame and set pointer capture. | PASS | PASS | PASS |
| Test mousepointer capture in same-origin frame: Pointer down at inner frame and set pointer capture … | PASS | PASS | PASS |
| Test mousepointer capture in same-origin frame: Pointer down at outer frame body and set pointer capture. | PASS | PASS | PASS |
| Test mousepointer capture in same-origin frame: Pointer down at outer frame body and set pointer cap… | PASS | PASS | PASS |
| Test mousepointer capture in same-origin frame: Pointerdown with set capture at inner frame, then re… | PASS | PASS | PASS |
| Test mousepointer capture in same-origin frame: Pointerdown with set capture at outer frame, then re… | PASS | PASS | PASS |
| § pointerevent_pointercapture_in_frame.html?pen | |||
| Overall | 5 / 5 | 0 / 0 | 6 / 6 |
| Harness status | OK | OK | OK |
| Test penpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture. | PASS | FAIL | PASS |
| Test penpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture to… | PASS | FAIL | PASS |
| Test penpointer capture in same-origin frame: Pointer down at outer frame body and set pointer capture. | FAIL | FAIL | PASS |
| Test penpointer capture in same-origin frame: Pointer down at outer frame body and set pointer captu… | PASS | FAIL | PASS |
| Test penpointer capture in same-origin frame: Pointerdown with set capture at inner frame, then rele… | PASS | FAIL | PASS |
| Test penpointer capture in same-origin frame: Pointerdown with set capture at outer frame, then rele… | PASS | FAIL | PASS |
| § pointerevent_pointercapture_in_frame.html?touch | |||
| Overall | 4 / 4 | 4 / 4 | 5 / 5 |
| Harness status | OK | OK | OK |
| Test touchpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture. | PASS | PASS | PASS |
| Test touchpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture … | FAIL | FAIL | PASS |
| Test touchpointer capture in same-origin frame: Pointer down at outer frame body and set pointer capture. | PASS | PASS | PASS |
| Test touchpointer capture in same-origin frame: Pointer down at outer frame body and set pointer cap… | FAIL | FAIL | PASS |
| Test touchpointer capture in same-origin frame: Pointerdown with set capture at inner frame, then re… | PASS | PASS | FAIL |
| Test touchpointer capture in same-origin frame: Pointerdown with set capture at outer frame, then re… | PASS | PASS | PASS |
| § pointerevent_pointerenter_does_not_bubble.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerEnter event does not bubble | PASS | PASS | PASS |
| § pointerevent_pointerleave_after_pointercancel_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| pointerleave event received | PASS | FAIL | NOTRUN |
| § pointerevent_pointerleave_descendant_over.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerleave shouldn't be received on descendant's pointerover | PASS | PASS | PASS |
| § pointerevent_pointerleave_descendants.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerleave event received | PASS | PASS | PASS |
| § pointerevent_pointerleave_does_not_bubble.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerLeave event does not bubble | PASS | PASS | PASS |
| § pointerevent_pointermove.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointermove event received | PASS | PASS | PASS |
| § pointerevent_pointermove_after_pointerup_target_removed.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| pointermove after pointerup which deletes the overlay should not keep expanding selection | PASS | PASS | PASS |
| pointermove after pointerup which deletes the overlay and move focus to the button should not keep e… | PASS | PASS | PASS |
| § pointerevent_pointermove_isprimary_same_as_pointerdown.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointermove has same isPrimary as last pointerdown | PASS | PASS | PASS |
| § pointerevent_pointermove_isprimary_same_as_pointerdown.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointermove has same isPrimary as last pointerdown | PASS | PASS | FAIL |
| § pointerevent_pointermove_on_chorded_mouse_button.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointermove events received for button state changes | PASS | PASS | PASS |
| § pointerevent_pointerout_after_pointercancel_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| pointerout event received | PASS | FAIL | NOTRUN |
| § pointerevent_pointerout_no_pointer_movement.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| Layout change under a stationary pointer (a new element appears) fires boundary events and no pointe… | PASS | PASS | PASS |
| Layout change under a stationary pointer (the element disappears) fires boundary events and no point… | PASS | PASS | PASS |
| § pointerevent_pointerout_pen.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | ERROR | OK |
| pointerout event received | PASS | NOTRUN | FAIL |
| § pointerevent_pointerout_received_once.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerout received just once | PASS | PASS | PASS |
| § pointerevent_pointerrawupdate.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| pointerrawupdate event is not fired | PASS | PASS | PASS |
| onpointerrawupdate is not exposed | PASS | PASS | PASS |
| § pointerevent_pointerrawupdate.https.html | |||
| Overall | 2 / 2 | 2 / 2 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointerrawupdate event is fired | PASS | PASS | FAIL |
| onpointerrawupdate is exposed | PASS | PASS | FAIL |
| § pointerevent_pointerrawupdate_after_adoption_from_child.https.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| `pointerrawupdate` events should be fired after the element is moved from the parent doc to a child doc | PASS | PASS | FAIL |
| § pointerevent_pointerrawupdate_after_adoption_from_parent.https.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| `pointerrawupdate` events should be fired after the element is moved from a child doc to the parent doc | PASS | PASS | FAIL |
| § pointerevent_pointerrawupdate_changes_pointer_capture.https.html | |||
| Overall | 3 / 3 | 5 / 5 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| Setting pointer capture at `pointerdown` and releasing pointer capture at `pointerrawupdate` | FAIL | PASS | missing |
| Setting pointer capture at `pointerrawupdate` | PASS | PASS | missing |
| Setting pointer capture at `pointerdown` and releasing pointer capture at `gotpointercapture` | FAIL | PASS | missing |
| Setting pointer capture at `lostpointercapture` | FAIL | PASS | missing |
| Test for handling of "fire a pointer event named pointerrawupdate" | PASS | PASS | missing |
| Setting pointer capture at `pointerdown` and releasing pointer capture at `gotpointercapture` when n… | PASS | FAIL | missing |
| § pointerevent_pointerrawupdate_coalesced_events_attributes.https.html?mouse | |||
| Overall | 32 / 32 | 32 / 32 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| Simple test for getCoalescedEvents() of `pointerrawupdate` | PASS | PASS | TIMEOUT |
| getCoalescedEvents() of pointerrawupdate should return one event | PASS | PASS | missing |
| type should be "pointerrawupdate" | PASS | PASS | missing |
| isTrusted should be true | PASS | PASS | missing |
| bubbles should be false | PASS | PASS | missing |
| cancelable should be false | PASS | PASS | missing |
| target should be same as the pointerrawupdate event | PASS | PASS | missing |
| screenX should be same as the pointerrawupdate event | PASS | PASS | missing |
| screenY should be same as the pointerrawupdate event | PASS | PASS | missing |
| clientX should be same as the pointerrawupdate event | PASS | PASS | missing |
| clientY should be same as the pointerrawupdate event | PASS | PASS | missing |
| button should be same as the pointerrawupdate event | PASS | PASS | missing |
| buttons should be same as the pointerrawupdate event | PASS | PASS | missing |
| pointerId should be same as the pointerrawupdate event | PASS | PASS | missing |
| pointerType should be same as the pointerrawupdate event | PASS | PASS | missing |
| shiftKey should be same as the pointerrawupdate event | PASS | PASS | missing |
| ctrlKey should be same as the pointerrawupdate event | PASS | PASS | missing |
| altKey should be same as the pointerrawupdate event | PASS | PASS | missing |
| metaKey should be same as the pointerrawupdate event | PASS | PASS | missing |
| target should be same as the corresponding pointermove event | PASS | PASS | missing |
| screenX should be same as the corresponding pointermove event | PASS | PASS | missing |
| screenY should be same as the corresponding pointermove event | PASS | PASS | missing |
| clientX should be same as the corresponding pointermove event | PASS | PASS | missing |
| clientY should be same as the corresponding pointermove event | PASS | PASS | missing |
| button should be same as the corresponding pointermove event | PASS | PASS | missing |
| buttons should be same as the corresponding pointermove event | PASS | PASS | missing |
| pointerId should be same as the corresponding pointermove event | PASS | PASS | missing |
| pointerType should be same as the corresponding pointermove event | PASS | PASS | missing |
| shiftKey should be same as the corresponding pointermove event | PASS | PASS | missing |
| ctrlKey should be same as the corresponding pointermove event | PASS | PASS | missing |
| altKey should be same as the corresponding pointermove event | PASS | PASS | missing |
| metaKey should be same as the corresponding pointermove event | PASS | PASS | missing |
| § pointerevent_pointerrawupdate_coalesced_events_attributes.https.html?pen | |||
| Overall | 32 / 32 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | TIMEOUT |
| Simple test for getCoalescedEvents() of `pointerrawupdate` | PASS | FAIL | TIMEOUT |
| getCoalescedEvents() of pointerrawupdate should return one event | PASS | missing | missing |
| type should be "pointerrawupdate" | PASS | missing | missing |
| isTrusted should be true | PASS | missing | missing |
| bubbles should be false | PASS | missing | missing |
| cancelable should be false | PASS | missing | missing |
| target should be same as the pointerrawupdate event | PASS | missing | missing |
| screenX should be same as the pointerrawupdate event | PASS | missing | missing |
| screenY should be same as the pointerrawupdate event | PASS | missing | missing |
| clientX should be same as the pointerrawupdate event | PASS | missing | missing |
| clientY should be same as the pointerrawupdate event | PASS | missing | missing |
| button should be same as the pointerrawupdate event | PASS | missing | missing |
| buttons should be same as the pointerrawupdate event | PASS | missing | missing |
| pointerId should be same as the pointerrawupdate event | PASS | missing | missing |
| pointerType should be same as the pointerrawupdate event | PASS | missing | missing |
| shiftKey should be same as the pointerrawupdate event | PASS | missing | missing |
| ctrlKey should be same as the pointerrawupdate event | PASS | missing | missing |
| altKey should be same as the pointerrawupdate event | PASS | missing | missing |
| metaKey should be same as the pointerrawupdate event | PASS | missing | missing |
| target should be same as the corresponding pointermove event | PASS | missing | missing |
| screenX should be same as the corresponding pointermove event | PASS | missing | missing |
| screenY should be same as the corresponding pointermove event | PASS | missing | missing |
| clientX should be same as the corresponding pointermove event | PASS | missing | missing |
| clientY should be same as the corresponding pointermove event | PASS | missing | missing |
| button should be same as the corresponding pointermove event | PASS | missing | missing |
| buttons should be same as the corresponding pointermove event | PASS | missing | missing |
| pointerId should be same as the corresponding pointermove event | PASS | missing | missing |
| pointerType should be same as the corresponding pointermove event | PASS | missing | missing |
| shiftKey should be same as the corresponding pointermove event | PASS | missing | missing |
| ctrlKey should be same as the corresponding pointermove event | PASS | missing | missing |
| altKey should be same as the corresponding pointermove event | PASS | missing | missing |
| metaKey should be same as the corresponding pointermove event | PASS | missing | missing |
| § pointerevent_pointerrawupdate_coalesced_events_attributes.https.html?touch | |||
| Overall | 0 / 0 | 32 / 32 | 0 / 0 |
| Harness status | TIMEOUT | OK | TIMEOUT |
| Simple test for getCoalescedEvents() of `pointerrawupdate` | TIMEOUT | PASS | TIMEOUT |
| getCoalescedEvents() of pointerrawupdate should return one event | missing | PASS | missing |
| type should be "pointerrawupdate" | missing | PASS | missing |
| isTrusted should be true | missing | PASS | missing |
| bubbles should be false | missing | PASS | missing |
| cancelable should be false | missing | PASS | missing |
| target should be same as the pointerrawupdate event | missing | PASS | missing |
| screenX should be same as the pointerrawupdate event | missing | PASS | missing |
| screenY should be same as the pointerrawupdate event | missing | PASS | missing |
| clientX should be same as the pointerrawupdate event | missing | PASS | missing |
| clientY should be same as the pointerrawupdate event | missing | PASS | missing |
| button should be same as the pointerrawupdate event | missing | PASS | missing |
| buttons should be same as the pointerrawupdate event | missing | PASS | missing |
| pointerId should be same as the pointerrawupdate event | missing | PASS | missing |
| pointerType should be same as the pointerrawupdate event | missing | PASS | missing |
| shiftKey should be same as the pointerrawupdate event | missing | PASS | missing |
| ctrlKey should be same as the pointerrawupdate event | missing | PASS | missing |
| altKey should be same as the pointerrawupdate event | missing | PASS | missing |
| metaKey should be same as the pointerrawupdate event | missing | PASS | missing |
| target should be same as the corresponding pointermove event | missing | PASS | missing |
| screenX should be same as the corresponding pointermove event | missing | PASS | missing |
| screenY should be same as the corresponding pointermove event | missing | PASS | missing |
| clientX should be same as the corresponding pointermove event | missing | PASS | missing |
| clientY should be same as the corresponding pointermove event | missing | PASS | missing |
| button should be same as the corresponding pointermove event | missing | PASS | missing |
| buttons should be same as the corresponding pointermove event | missing | PASS | missing |
| pointerId should be same as the corresponding pointermove event | missing | PASS | missing |
| pointerType should be same as the corresponding pointermove event | missing | PASS | missing |
| shiftKey should be same as the corresponding pointermove event | missing | PASS | missing |
| ctrlKey should be same as the corresponding pointermove event | missing | PASS | missing |
| altKey should be same as the corresponding pointermove event | missing | PASS | missing |
| metaKey should be same as the corresponding pointermove event | missing | PASS | missing |
| § pointerevent_pointerrawupdate_flush_pointercapture.https.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| Pointer capture state should be updated before `pointerrawupdate` | FAIL | PASS | FAIL |
| § pointerevent_pointerrawupdate_remove_target.https.html | |||
| Overall | 0 / 0 | 2 / 2 | 0 / 0 |
| Harness status | OK | OK | OK |
| "pointermove" and its preceding boundary events should be fired on parent if "pointerrawupdate" even… | FAIL | PASS | FAIL |
| "pointermove" and its preceding boundary events should be fired on ancestor if "pointerrawupdate" ev… | FAIL | PASS | FAIL |
| "pointermove" and its preceding boundary events should be fired on parent if "pointerrawupdate" even… | FAIL | FAIL | FAIL |
| § pointerevent_range_input.html?mouse | |||
| Overall | 5 / 5 | 5 / 5 | 5 / 5 |
| Harness status | OK | OK | OK |
| Horizontal drag on a horizontal slider. | PASS | PASS | PASS |
| Vertical drag on a horizontal slider. | PASS | PASS | PASS |
| Vertical drag on a horizontal slider with touch-action:none. | PASS | PASS | PASS |
| Vertical drag on a vertical slider. | PASS | PASS | PASS |
| Horizontal drag on a vertical slider. | PASS | PASS | PASS |
| § pointerevent_range_input.html?touch | |||
| Overall | 5 / 5 | 5 / 5 | 1 / 1 |
| Harness status | OK | OK | OK |
| Horizontal drag on a horizontal slider. | PASS | PASS | missing |
| Vertical drag on a horizontal slider. | PASS | PASS | missing |
| Vertical drag on a horizontal slider with touch-action:none. | PASS | PASS | missing |
| Vertical drag on a vertical slider. | PASS | PASS | missing |
| Horizontal drag on a vertical slider. | PASS | PASS | missing |
| Empty test for MacOS. | missing | missing | PASS |
| § pointerevent_releasepointercapture_events_to_original_target.html?mouse | |||
| Overall | 19 / 19 | 19 / 19 | 19 / 19 |
| Harness status | OK | OK | OK |
| mouse got/lost pointercapture: subsequent events to target | PASS | PASS | PASS |
| mouse pointerover/enter should be received before the target receives gotpointercapture even when th… | PASS | PASS | PASS |
| mouse gotpointercapture.pointerType is correct. | PASS | PASS | PASS |
| mouse gotpointercapture event is a PointerEvent event | PASS | PASS | PASS |
| mouse gotpointercapture.isTrusted value is true | PASS | PASS | PASS |
| mouse gotpointercapture.composed value is valid | PASS | PASS | PASS |
| mouse gotpointercapture.bubbles value is valid | PASS | PASS | PASS |
| mouse gotpointercapture.cancelable value is valid | PASS | PASS | PASS |
| mouse gotpointercapture.pressure value is valid | PASS | PASS | PASS |
| mouse gotpointercapture properties for pointerType = mouse | PASS | PASS | PASS |
| mouse lostpointercapture.pointerType is correct. | PASS | PASS | PASS |
| mouse lostpointercapture event is a PointerEvent event | PASS | PASS | PASS |
| mouse lostpointercapture.isTrusted value is true | PASS | PASS | PASS |
| mouse lostpointercapture.composed value is valid | PASS | PASS | PASS |
| mouse lostpointercapture.bubbles value is valid | PASS | PASS | PASS |
| mouse lostpointercapture.cancelable value is valid | PASS | PASS | PASS |
| mouse lostpointercapture.pressure value is valid | PASS | PASS | PASS |
| mouse lostpointercapture properties for pointerType = mouse | PASS | PASS | PASS |
| mouse pointerout/leave should not be received unless the target just lost the capture. | PASS | PASS | PASS |
| § pointerevent_releasepointercapture_events_to_original_target.html?pen | |||
| Overall | 17 / 17 | 0 / 0 | 17 / 17 |
| Harness status | OK | ERROR | OK |
| pen got/lost pointercapture: subsequent events to target | PASS | NOTRUN | PASS |
| pen pointerover/enter should be received before the target receives gotpointercapture even when the … | PASS | missing | PASS |
| pen gotpointercapture.pointerType is correct. | PASS | missing | FAIL |
| pen gotpointercapture event is a PointerEvent event | PASS | missing | PASS |
| pen gotpointercapture.isTrusted value is true | PASS | missing | PASS |
| pen gotpointercapture.composed value is valid | PASS | missing | PASS |
| pen gotpointercapture.bubbles value is valid | PASS | missing | PASS |
| pen gotpointercapture.cancelable value is valid | PASS | missing | PASS |
| pen gotpointercapture.pressure value is valid | PASS | missing | PASS |
| pen lostpointercapture.pointerType is correct. | PASS | missing | FAIL |
| pen lostpointercapture event is a PointerEvent event | PASS | missing | PASS |
| pen lostpointercapture.isTrusted value is true | PASS | missing | PASS |
| pen lostpointercapture.composed value is valid | PASS | missing | PASS |
| pen lostpointercapture.bubbles value is valid | PASS | missing | PASS |
| pen lostpointercapture.cancelable value is valid | PASS | missing | PASS |
| pen lostpointercapture.pressure value is valid | PASS | missing | PASS |
| pen pointerout/leave should not be received unless the target just lost the capture. | PASS | missing | PASS |
| pen gotpointercapture properties for pointerType = mouse | missing | missing | PASS |
| pen lostpointercapture properties for pointerType = mouse | missing | missing | PASS |
| § pointerevent_releasepointercapture_events_to_original_target.html?touch | |||
| Overall | 17 / 17 | 17 / 17 | 17 / 17 |
| Harness status | OK | OK | OK |
| touch got/lost pointercapture: subsequent events to target | PASS | PASS | PASS |
| touch pointerover/enter should be received before the target receives gotpointercapture even when th… | PASS | PASS | PASS |
| touch gotpointercapture.pointerType is correct. | PASS | PASS | FAIL |
| touch gotpointercapture event is a PointerEvent event | PASS | PASS | PASS |
| touch gotpointercapture.isTrusted value is true | PASS | PASS | PASS |
| touch gotpointercapture.composed value is valid | PASS | PASS | PASS |
| touch gotpointercapture.bubbles value is valid | PASS | PASS | PASS |
| touch gotpointercapture.cancelable value is valid | PASS | PASS | PASS |
| touch gotpointercapture.pressure value is valid | PASS | PASS | PASS |
| touch lostpointercapture.pointerType is correct. | PASS | PASS | FAIL |
| touch lostpointercapture event is a PointerEvent event | PASS | PASS | PASS |
| touch lostpointercapture.isTrusted value is true | PASS | PASS | PASS |
| touch lostpointercapture.composed value is valid | PASS | PASS | PASS |
| touch lostpointercapture.bubbles value is valid | PASS | PASS | PASS |
| touch lostpointercapture.cancelable value is valid | PASS | PASS | PASS |
| touch lostpointercapture.pressure value is valid | PASS | PASS | PASS |
| touch pointerout/leave should not be received unless the target just lost the capture. | PASS | PASS | PASS |
| touch gotpointercapture properties for pointerType = mouse | missing | missing | PASS |
| touch lostpointercapture properties for pointerType = mouse | missing | missing | PASS |
| § pointerevent_releasepointercapture_invalid_pointerid.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| releasePointerCapture: DOMException NotFoundError | PASS | PASS | PASS |
| § pointerevent_releasepointercapture_onpointercancel_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| pointer capture is released on pointercancel | PASS | FAIL | FAIL |
| § pointerevent_releasepointercapture_onpointerup_mouse.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerup was received before lostpointercapture | PASS | PASS | PASS |
| § pointerevent_releasepointercapture_pointerup_mouse.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| target0.releasePointerCapture should not throw | PASS | PASS | PASS |
| pointerup was received before lostpointercapture | PASS | PASS | PASS |
| § pointerevent_releasepointercapture_pointerup_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| releasePointerCapture on pointerup | PASS | PASS | FAIL |
| § pointerevent_releasepointercapture_release_right_after_capture.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Release pointer capture right after setpointercapture | PASS | PASS | PASS |
| § pointerevent_releasepointercapture_release_right_after_capture.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| Release pointer capture right after setpointercapture | PASS | NOTRUN | PASS |
| § pointerevent_releasepointercapture_release_right_after_capture.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Release pointer capture right after setpointercapture | PASS | PASS | PASS |
| § pointerevent_root_computed_style.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerevent_root_computed_style | PASS | PASS | PASS |
| § pointerevent_root_hit_test.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerevent_root_hit_test | PASS | PASS | PASS |
| § pointerevent_sequence_at_implicit_release_on_click.html?mouse | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| mouse Boundary events are emitted after lostpointercapture | PASS | PASS | PASS |
| No extra events are emitted | PASS | PASS | PASS |
| § pointerevent_sequence_at_implicit_release_on_click.html?pen | |||
| Overall | 2 / 2 | 0 / 0 | 2 / 2 |
| Harness status | OK | ERROR | OK |
| pen Boundary events are emitted after lostpointercapture | PASS | NOTRUN | PASS |
| No extra events are emitted | PASS | NOTRUN | PASS |
| § pointerevent_sequence_at_implicit_release_on_click.html?touch | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| touch Boundary events are emitted after lostpointercapture | PASS | PASS | PASS |
| No extra events are emitted | PASS | PASS | PASS |
| § pointerevent_sequence_at_implicit_release_on_drag.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| touch Event sequence at implicit release on drag | PASS | FAIL | FAIL |
| § pointerevent_setpointercapture_disconnected.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture: DOMException InvalidStateError | PASS | PASS | PASS |
| § pointerevent_setpointercapture_inactive_button_mouse.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture + inactive button state | PASS | PASS | PASS |
| § pointerevent_setpointercapture_invalid_pointerid.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture: DOMException NotFoundError | PASS | PASS | PASS |
| § pointerevent_setpointercapture_override_pending_capture_element.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture: override the pending pointer capture element | PASS | PASS | PASS |
| § pointerevent_setpointercapture_override_pending_capture_element.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | ERROR | OK |
| setPointerCapture: override the pending pointer capture element | PASS | NOTRUN | PASS |
| § pointerevent_setpointercapture_override_pending_capture_element.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| setPointerCapture: override the pending pointer capture element | PASS | PASS | PASS |
| § pointerevent_setpointercapture_pointerup_mouse.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| Test should be run using a mouse as input | PASS | PASS | PASS |
| target0.setPointerCapture should not throw | PASS | PASS | PASS |
| § pointerevent_setpointercapture_pointerup_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| setPointerCapture on pointerup | PASS | PASS | FAIL |
| § pointerevent_setpointercapture_relatedtarget.html | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| pointerover shouldn't trigger for the purple rectangle while the black rectangle has capture | PASS | PASS | PASS |
| relatedTarget should not be null even when the capture is set. | PASS | PASS | PASS |
| § pointerevent_setpointercapture_to_same_element_twice.html?mouse | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| A repeated setPointerCapture call does not redispatch capture events | PASS | PASS | PASS |
| A failed setPointerCapture call does not affect existing capture | PASS | PASS | PASS |
| § pointerevent_setpointercapture_to_same_element_twice.html?pen | |||
| Overall | 2 / 2 | 0 / 0 | 2 / 2 |
| Harness status | OK | OK | OK |
| A repeated setPointerCapture call does not redispatch capture events | PASS | FAIL | PASS |
| A failed setPointerCapture call does not affect existing capture | PASS | FAIL | PASS |
| § pointerevent_setpointercapture_to_same_element_twice.html?touch | |||
| Overall | 2 / 2 | 2 / 2 | 2 / 2 |
| Harness status | OK | OK | OK |
| A repeated setPointerCapture call does not redispatch capture events | PASS | PASS | PASS |
| A failed setPointerCapture call does not affect existing capture | PASS | PASS | PASS |
| § pointerevent_suppress_compat_events_on_click.html | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| Suppress compat mouse events on click | PASS | PASS | PASS |
| primary pointer pointerdown@target0 | PASS | PASS | PASS |
| primary pointer pointerdown@target1 | PASS | PASS | PASS |
| Event log | PASS | PASS | PASS |
| § pointerevent_suppress_compat_events_on_drag_mouse.html | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| Suppress compat mouse events on drag | PASS | PASS | PASS |
| primary pointer pointerdown@target0 | PASS | PASS | PASS |
| primary pointer pointerdown@target1 | PASS | PASS | PASS |
| Event log | PASS | PASS | PASS |
| § pointerevent_target_at_clicking_link_in_image_map.html?capture= | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Event targets of clicking a link in an image map | PASS | PASS | PASS |
| § pointerevent_target_at_clicking_link_in_image_map.html?capture=area | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Event targets of clicking a link in an image map | PASS | PASS | PASS |
| § pointerevent_tiltX_tiltY_to_azimuth_altitude.html | |||
| Overall | 25 / 25 | 25 / 25 | 25 / 25 |
| Harness status | OK | OK | OK |
| tiltX,tiltY to azimuth/altitude when tiltX=0 and tiltY=0 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=0 and tiltY=90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=0 and tiltY=-90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=90 and tiltY=0 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=90 and tiltY=90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=90 and tiltY=-90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=-90 and tiltY=0 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=-90 and tiltY=90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=-90 and tiltY=-90 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=0 and tiltY=45 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=0 and tiltY=-45 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=45 and tiltY=0 | PASS | PASS | PASS |
| tiltX,tiltY to azimuth/altitude when tiltX=-45 and tiltY=0 | PASS | PASS | PASS |
| tiltX/tiltY to azimuth/altitude when tiltX/tiltY are not populated | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=0 and altitude=0 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=0 and altitude=0.7853981633974483 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=0 and altitude=1.5707963267948966 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=1.5707963267948966 and altitude=0 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=1.5707963267948966 and altitude=0.7853981633974483 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=3.141592653589793 and altitude=0 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=3.141592653589793 and altitude=0.7853981633974483 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=4.71238898038469 and altitude=0 | PASS | PASS | PASS |
| azimuth/altitude to tiltX/tiltY when azimuth=4.71238898038469 and altitude=0.7853981633974483 | PASS | PASS | PASS |
| If only one of the values (tiltX, tiltY) or (azimuthAngle, altitudeAngle) is available the other one… | PASS | PASS | PASS |
| If one of the values in both sets is provided, the other value in the set is initialized with the de… | PASS | PASS | PASS |
| § pointerevent_to_slotted_target.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Pointer events from mouse to slotted element and shadow-host | PASS | PASS | PASS |
| § pointerevent_to_slotted_target.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | OK | OK |
| Pointer events from pen to slotted element and shadow-host | PASS | FAIL | PASS |
| § pointerevent_to_slotted_target.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Pointer events from touch to slotted element and shadow-host | PASS | PASS | PASS |
| § pointerevent_touch-action-auto-css_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | TIMEOUT | OK |
| touch-action attribute test | PASS | TIMEOUT | FAIL |
| § pointerevent_touch-action-button-none-test_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| touch-action attribute test in element | PASS | PASS | PASS |
| § pointerevent_touch-action-illegal.html | |||
| Overall | 3 / 3 | 3 / 3 | 3 / 3 |
| Harness status | OK | OK | OK |
| 'pan-x none' is corrected properly | PASS | PASS | PASS |
| 'pan-y none' is corrected properly | PASS | PASS | PASS |
| 'auto none' is corrected properly | PASS | PASS | PASS |
| § pointerevent_touch-action-inherit_child-auto-child-none_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | PASS | NOTRUN |
| § pointerevent_touch-action-inherit_child-none_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | PASS | NOTRUN |
| § pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | FAIL | NOTRUN |
| § pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | PASS | NOTRUN |
| § pointerevent_touch-action-inherit_highest-parent-none_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | TIMEOUT | TIMEOUT |
| touch-action attribute test | PASS | NOTRUN | NOTRUN |
| § pointerevent_touch-action-inherit_parent-none_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | OK |
| touch-action attribute test | PASS | PASS | FAIL |
| § pointerevent_touch-action-keyboard.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| touch-action attribute test | PASS | PASS | PASS |
| § pointerevent_touch-action-modified_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| No scrolling after deleting touch-action:none after pointerdown | PASS | PASS | PASS |
| § pointerevent_touch-action-mouse.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| touch-action attribute test | PASS | PASS | PASS |
| § pointerevent_touch-action-none-css_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | PASS | NOTRUN |
| § pointerevent_touch-action-none-on-body-when-style-propagates-to-viewport_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| touch-action none on body when style propagates to viewport | PASS | PASS | PASS |
| § pointerevent_touch-action-pan-x-css_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | FAIL | NOTRUN |
| § pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | FAIL | NOTRUN |
| § pointerevent_touch-action-pan-x-pan-y_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | TIMEOUT | TIMEOUT |
| touch-action attribute test | PASS | NOTRUN | NOTRUN |
| § pointerevent_touch-action-pan-y-css_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test | PASS | FAIL | NOTRUN |
| § pointerevent_touch-action-span-none-test_touch.html | |||
| Overall | 1 / 1 | 0 / 0 | 0 / 0 |
| Harness status | OK | OK | OK |
| touch-action attribute test in element | PASS | FAIL | FAIL |
| § pointerevent_touch-action-svg-none-test_touch.html | |||
| Overall | 1 / 1 | 1 / 1 | 0 / 0 |
| Harness status | OK | OK | ERROR |
| touch-action attribute test in SVG | PASS | PASS | NOTRUN |
| § pointerevent_touch-action-table-none-test_touch.html | |||
| Overall | 2 / 2 | 0 / 0 | 0 / 0 |
| Harness status | OK | TIMEOUT | ERROR |
| touch-action attribute test on the cell | PASS | FAIL | NOTRUN |
| touch-action attribute test on the row | PASS | NOTRUN | NOTRUN |
| § pointerevent_touch-action-verification.html | |||
| Overall | 37 / 37 | 25 / 25 | 25 / 25 |
| Harness status | OK | OK | OK |
| default | PASS | PASS | PASS |
| stylesheet-none | PASS | PASS | PASS |
| explicit-auto | PASS | PASS | PASS |
| explicit-pan-x | PASS | PASS | PASS |
| explicit-pan-y | PASS | PASS | PASS |
| explicit-pan-x-pan-y | PASS | PASS | PASS |
| explicit-pan-y-pan-x | PASS | PASS | PASS |
| explicit-manipulation | PASS | PASS | PASS |
| explicit-none | PASS | PASS | PASS |
| explicit-invalid-1 | PASS | PASS | PASS |
| explicit-invalid-2 | PASS | PASS | PASS |
| explicit-invalid-3 | PASS | PASS | PASS |
| explicit-invalid-4 | PASS | PASS | PASS |
| explicit-invalid-5 | PASS | PASS | PASS |
| explicit-invalid-6 | PASS | PASS | PASS |
| explicit-invalid-7 | PASS | PASS | PASS |
| explicit-invalid-8 | PASS | PASS | PASS |
| explicit-invalid-9 | PASS | PASS | PASS |
| explicit-invalid-10 | PASS | PASS | PASS |
| explicit-invalid-11 | PASS | PASS | PASS |
| explicit-invalid-12 | PASS | PASS | PASS |
| explicit-invalid-13 | PASS | PASS | PASS |
| not-inherited | PASS | PASS | PASS |
| inherit | PASS | PASS | PASS |
| initial | PASS | PASS | PASS |
| § pointerevent_touch-adjustment_click_target.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Touch-generated events should have the same target | PASS | PASS | PASS |
| § pointerevent_touch-propagates-when-target-is-video_touch.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | ERROR | OK | TIMEOUT |
| Touch-generated events should propagate to the parent when a video element is the target | TIMEOUT | PASS | TIMEOUT |
| § pointerlock/pointerevent_coordinates_when_locked.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | ERROR | OK | OK |
| mouse Test pointerevent coordinates when pointer is locked | NOTRUN | PASS | FAIL |
| § pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.https.html | |||
| Overall | 0 / 0 | 1 / 1 | 1 / 1 |
| Harness status | ERROR | OK | OK |
| mouse pointermove getCoalescedEvents when lock test | FAIL | PASS | PASS |
| § pointerlock/pointerevent_movementxy_with_pointerlock.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | ERROR | OK | OK |
| mouse pointerevent movementX/Y with pointerlock test | TIMEOUT | PASS | FAIL |
| § pointerlock/pointerevent_pointerlock_after_pointercapture.html | |||
| Overall | 0 / 0 | 1 / 1 | 1 / 1 |
| Harness status | ERROR | OK | OK |
| mouse no pointercapture while pointerlock | FAIL | PASS | PASS |
| § pointerlock/pointerevent_pointerlock_supercedes_capture.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | ERROR | OK | OK |
| mouse no pointercapture while pointerlock | FAIL | PASS | FAIL |
| § pointerlock/pointerevent_pointermove_in_pointerlock.html | |||
| Overall | 0 / 0 | 2 / 2 | 2 / 2 |
| Harness status | ERROR | OK | OK |
| pointermove event received | FAIL | PASS | PASS |
| pointermove event received inner frame | NOTRUN | PASS | PASS |
| § pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html | |||
| Overall | 0 / 0 | 1 / 1 | 1 / 1 |
| Harness status | ERROR | OK | OK |
| pointer locked pointermove events received for button state changes | NOTRUN | PASS | PASS |
| § pointerlock/pointerevent_pointerrawupdate_in_pointerlock.https.html | |||
| Overall | 0 / 0 | 1 / 1 | 0 / 0 |
| Harness status | ERROR | OK | OK |
| pointerrawupdate event received | NOTRUN | PASS | FAIL |
| § pointerup_after_pointerdown_target_removed.html?mouse | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerup event from mouse fired after pointerdown target is removed | PASS | PASS | PASS |
| § pointerup_after_pointerdown_target_removed.html?pen | |||
| Overall | 1 / 1 | 0 / 0 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerup event from pen fired after pointerdown target is removed | PASS | FAIL | PASS |
| § pointerup_after_pointerdown_target_removed.html?touch | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| pointerup event from touch fired after pointerdown target is removed | PASS | PASS | PASS |
| § pointerup_button_value_matches_corresponding_pointerdown.html | |||
| Overall | 1 / 1 | 1 / 1 | 1 / 1 |
| Harness status | OK | OK | OK |
| Test that the 'button' property of a pointerup event matches the 'button' property of the correspond… | PASS | PASS | PASS |
| § predicted_events_attributes.html?mouse | |||
| Overall | 4 / 4 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| Predicted list in boundary events | PASS | PASS | PASS |
| Predicted list in pointer-capture events | PASS | PASS | PASS |
| Predicted list in pointerdown/move/up events | PASS | PASS | PASS |
| Predicted list in pointercancel event | PASS | PASS | PASS |
| § predicted_events_attributes.html?pen | |||
| Overall | 4 / 4 | 1 / 1 | 4 / 4 |
| Harness status | OK | OK | OK |
| Predicted list in boundary events | PASS | FAIL | PASS |
| Predicted list in pointer-capture events | PASS | FAIL | PASS |
| Predicted list in pointerdown/move/up events | PASS | FAIL | PASS |
| Predicted list in pointercancel event | PASS | PASS | PASS |
| § predicted_events_attributes.html?touch | |||
| Overall | 4 / 4 | 3 / 3 | 3 / 3 |
| Harness status | OK | TIMEOUT | TIMEOUT |
| Predicted list in boundary events | PASS | PASS | PASS |
| Predicted list in pointer-capture events | PASS | PASS | PASS |
| Predicted list in pointerdown/move/up events | PASS | PASS | PASS |
| Predicted list in pointercancel event | PASS | TIMEOUT | TIMEOUT |
| § touch-action-with-swipe-dir-change.html?touch | |||
| Overall | 8 / 8 | 4 / 4 | 4 / 4 |
| Harness status | OK | OK | OK |
| touch-action:auto with right,down swipe | PASS | FAIL | FAIL |
| touch-action:auto with down,right swipe | PASS | FAIL | FAIL |
| touch-action:pan-x with right,down swipe | PASS | FAIL | FAIL |
| touch-action:pan-x with down,right swipe | PASS | PASS | PASS |
| touch-action:pan-y with right,down swipe | PASS | PASS | PASS |
| touch-action:pan-y with down,right swipe | PASS | FAIL | FAIL |
| touch-action:none with right,down swipe | PASS | PASS | PASS |
| touch-action:none with down,right swipe | PASS | PASS | PASS |