pointerevents

edit

WPT coverage of the tests of pointerevents at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable169179094%
Tentative59056%
Reftests000–
All174188093%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • BUG: 2
  • TEST BUG: 5
  • NOT IMPLEMENTED: 6
  • TEST RUNNER: 1

Stable tests

TestResultSubtestsKindDescription
bugs/drag_on_added_range_input.htmlPass1 / 1
bugs/events_after_lostpointercapture_remove_setcapture_node.htmlFail0 / 1TEST BUGthe expected log (lostpointercapture@target0, pointerup@button, pointerup@button) is produced by no browser (Chrome, Firefox and Safari fail the test): the library logs lostpointercapture@target0 twice, then pointerup@button
capturing_boundary_event_handler_at_ua_shadowdom.htmlPass9 / 9
coalesced_events_attributes.https.htmlPass12 / 12
coalesced_events_attributes_on_redispatch.https.htmlPass3 / 3
coalesced_events_attributes_under_load.https.optional.htmlFail0 / 3NOT IMPLEMENTEDthe moves of a pointer are never coalesced: each move injected in the input devices fires its own pointermove, whose coalesced events list has one event, even while the main thread is busy (optional test; Chrome, Firefox and Safari fail it too)
compat/pointerevent_compat-mouse-events-when-removing-nodes.htmlPass4 / 4
compat/pointerevent_mouse-on-object.htmlFail1 / 2NOT IMPLEMENTEDa press of the mouse on an <object> element does not capture the mouse: once the pointer is dragged out of the element, its pointermove and pointerup events are fired at the element under the pointer, and the test expects them at the <object> (only Blink passes)
compat/pointerevent_mouse-pointer-on-scrollbar.htmlPass2 / 2
compat/pointerevent_mouse-pointer-preventdefault-passive.htmlPass1 / 1
compat/pointerevent_mouse-pointer-preventdefault.htmlPass7 / 7
compat/pointerevent_mouse-pointer-updown-events.htmlPass1 / 1
compat/pointerevent_mouse_target_after_pointer_target_host_of_shadow_removed.htmlPass3 / 3
compat/pointerevent_mouse_target_after_pointer_target_root_element_in_shadow_removed.htmlPass3 / 3
compat/pointerevent_mouse_target_after_pointer_target_slot_removed.htmlPass3 / 3
compat/pointerevent_mouseevent_key_pressed.htmlPass5 / 5
compat/pointerevent_preventdefault_pointerdown_dblclick.htmlPass2 / 2
compat/pointerevent_touch-action-verification.htmlPass4 / 4
compat/pointerevent_touch-action_two-finger_interaction.htmlPass2 / 2
idlharness.https.window.jsPass203 / 203
inheritance.htmlPass2 / 2
mouse-pointer-boundary-events-for-shadowdom.htmlPass1 / 1
parsing/touch-action-computed.htmlPass6 / 6
parsing/touch-action-invalid.htmlPass3 / 3
parsing/touch-action-valid.htmlPass6 / 6
pointer-events-none-skip-scroll-in-iframe.htmlPass1 / 1
pointer-events-none-skip-scroll-scrollbar.htmlPass1 / 1
pointer-events-none-skip-scroll-will-change-in-iframe.htmlPass1 / 1
pointer-events-none-skip-scroll-will-change-scrollbar.htmlPass1 / 1
pointer-events-none-skip-scroll-will-change.htmlPass1 / 1
pointer-events-none-skip-scroll.htmlPass1 / 1
pointer_boundary_events_after_removing_last_over_element_through_innerhtml.htmlPass2 / 2
pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.htmlPass1 / 1
pointerevent-drag-interaction.htmlPass4 / 4
pointerevent_after_target_appended.htmlFail20 / 24BUGthe touch subtests: when a listener of pointerdown or pointerup appends a child under the touch (or moves the target), the expected sequences fire pointerup at the new child and no pointerleave/pointerenter at the ancestors that stay under the touch; the library keeps the implicit pointer capture of the pointerdown target for pointerup, and fires the boundary events of the whole ancestor chain when the touch leaves (Chrome, Firefox and Safari each fail some of these subtests)
pointerevent_after_target_removed.htmlPass12 / 12
pointerevent_after_target_removed_from_slot.htmlFail0 / 6BUGthe events that follow the removal of the <slot> of the target (or of the slotted element, or the change of its slot name): the next target is the parent of the slot, with an extra pointerenter at it, where the test expects the slot (and its fallback content) to keep the pointer; Chrome and Firefox fail these subtests too
pointerevent_attributes.htmlPass468 / 468
pointerevent_attributes.optional.htmlFail10 / 150NOT IMPLEMENTEDthe legacy fromElement and toElement attributes of MouseEvent (the precondition of the optional subtests)
pointerevent_auxclick_is_a_pointerevent.htmlPass4 / 4
pointerevent_boundary_events_at_implicit_release_hoverable_pointers.htmlPass1 / 1
pointerevent_boundary_events_attributes_during_drag.htmlPass2 / 2
pointerevent_boundary_events_before_pointerrawupdate.https.htmlPass1 / 1
pointerevent_boundary_events_cross_origin.htmlPass5 / 5
pointerevent_boundary_events_in_capturing.htmlPass3 / 3
pointerevent_boundary_events_modifier_no_pointer_movement.htmlPass24 / 24
pointerevent_boundary_events_on_image_map.htmlPass8 / 8
pointerevent_bubble_ancestors_none.htmlPass1 / 1
pointerevent_bubble_display_none.htmlPass1 / 1
pointerevent_bubble_mousedown_mouseup_different_target.htmlPass1 / 1
pointerevent_capture_mouse.htmlPass8 / 8
pointerevent_capture_mouse_and_release_and_capture_again.htmlPass1 / 1
pointerevent_capture_suppressing_mouse.htmlPass2 / 2
pointerevent_capture_touch_and_release_at_got_capture.htmlPass1 / 1
pointerevent_change-touch-action-onpointerdown_touch.htmlPass2 / 2
pointerevent_click_during_capture.htmlPass12 / 12
pointerevent_click_during_parent_capture.htmlPass68 / 68
pointerevent_click_is_a_pointerevent.htmlPass10 / 10
pointerevent_click_is_a_pointerevent_multiple_clicks.htmlPass3 / 3
pointerevent_coalesced_movement.https.htmlPass1 / 1
pointerevent_constructor.htmlPass35 / 35
pointerevent_constructor.https.htmlPass64 / 64
pointerevent_contextmenu_is_a_pointerevent.htmlTimeout2 / 4NOT IMPLEMENTEDthe touch variant: the long press of a touch does not fire contextmenu (the test also times out in Chrome, Firefox and Safari)
pointerevent_disabled_form_control.htmlPass3 / 3
pointerevent_element_haspointercapture.htmlFail2 / 3TEST BUGthe touch variant expects hasPointerCapture() to be false in the pointerup listener of the second tapped element, which has the implicit pointer capture of the touch (Chrome, Firefox and Safari fail it too)
pointerevent_element_haspointercapture_release_pending_capture.htmlPass3 / 3
pointerevent_fractional_coordinates.htmlPass6 / 6
pointerevent_fractional_coordinates_untrusted.htmlPass1,032 / 1,032
pointerevent_hit_test_scroll.htmlPass1 / 1
pointerevent_hit_test_scroll_visible_descendant.htmlPass1 / 1
pointerevent_iframe-touch-action-none_touch.htmlPass1 / 1
pointerevent_lostpointercapture_for_disconnected_node.htmlPass4 / 4
pointerevent_lostpointercapture_for_disconnected_node_in_shadow_dom.htmlPass1 / 1
pointerevent_lostpointercapture_for_disconnected_shadow_host.htmlPass1 / 1
pointerevent_lostpointercapture_is_first.htmlPass1 / 1
pointerevent_lostpointercapture_remove_setcapture_node.htmlPass1 / 1
pointerevent_mouse_capture_change_hover.htmlPass3 / 3
pointerevent_mouse_pointercapture_inactivate_pointer.htmlPass2 / 2
pointerevent_movementxy.htmlPass3 / 3
pointerevent_multi_touch_pointerdown_prevented.htmlPass2 / 2
pointerevent_multiple_pointerover_no_pointer_movement.htmlFail0 / 1TEST RUNNERthe two mouse input sources of the action sequence are the mouse of the user agent (one pointer, as in Chrome and Safari), so the boundary events of the layout change are fired once, not once per input source (only Firefox passes)
pointerevent_on_event_handlers.htmlPass30 / 30
pointerevent_pointerId_scope.htmlPass1 / 1
pointerevent_pointer_boundary_events_after_reappending_last_over_target.htmlPass3 / 3
pointerevent_pointer_boundary_events_after_removing_last_over_element.htmlPass2 / 2
pointerevent_pointercancel_touch.htmlPass7 / 7
pointerevent_pointercapture-in-custom-element.htmlPass1 / 1
pointerevent_pointercapture-in-shadow-dom.htmlPass1 / 1
pointerevent_pointercapture-not-lost-in-chorded-buttons.htmlPass2 / 2
pointerevent_pointercapture_in_frame.htmlPass18 / 18
pointerevent_pointerenter_does_not_bubble.htmlPass1 / 1
pointerevent_pointerleave_after_pointercancel_touch.htmlPass1 / 1
pointerevent_pointerleave_descendant_over.htmlPass1 / 1
pointerevent_pointerleave_descendants.htmlPass1 / 1
pointerevent_pointerleave_does_not_bubble.htmlPass1 / 1
pointerevent_pointermove.htmlPass1 / 1
pointerevent_pointermove_after_pointerup_target_removed.htmlPass2 / 2
pointerevent_pointermove_isprimary_same_as_pointerdown.htmlPass2 / 2
pointerevent_pointermove_on_chorded_mouse_button.htmlPass1 / 1
pointerevent_pointerout_after_pointercancel_touch.htmlPass1 / 1
pointerevent_pointerout_no_pointer_movement.htmlPass2 / 2
pointerevent_pointerout_pen.htmlPass1 / 1
pointerevent_pointerout_received_once.htmlPass1 / 1
pointerevent_pointerrawupdate.htmlPass2 / 2
pointerevent_pointerrawupdate.https.htmlPass2 / 2
pointerevent_pointerrawupdate_after_adoption_from_child.https.htmlPass1 / 1
pointerevent_pointerrawupdate_after_adoption_from_parent.https.htmlPass1 / 1
pointerevent_pointerrawupdate_changes_pointer_capture.https.htmlPass6 / 6
pointerevent_pointerrawupdate_coalesced_events_attributes.https.htmlPass96 / 96
pointerevent_pointerrawupdate_flush_pointercapture.https.htmlPass1 / 1
pointerevent_pointerrawupdate_remove_target.https.htmlPass3 / 3
pointerevent_range_input.htmlPass10 / 10
pointerevent_releasepointercapture_events_to_original_target.htmlPass53 / 53
pointerevent_releasepointercapture_invalid_pointerid.htmlPass1 / 1
pointerevent_releasepointercapture_onpointercancel_touch.htmlPass1 / 1
pointerevent_releasepointercapture_onpointerup_mouse.htmlPass1 / 1
pointerevent_releasepointercapture_pointerup_mouse.htmlPass2 / 2
pointerevent_releasepointercapture_pointerup_touch.htmlPass1 / 1
pointerevent_releasepointercapture_release_right_after_capture.htmlPass3 / 3
pointerevent_root_computed_style.htmlPass1 / 1
pointerevent_root_hit_test.htmlPass1 / 1
pointerevent_sequence_at_implicit_release_on_click.htmlPass6 / 6
pointerevent_sequence_at_implicit_release_on_drag.htmlPass1 / 1
pointerevent_setpointercapture_disconnected.htmlPass1 / 1
pointerevent_setpointercapture_inactive_button_mouse.htmlPass1 / 1
pointerevent_setpointercapture_invalid_pointerid.htmlPass1 / 1
pointerevent_setpointercapture_override_pending_capture_element.htmlPass3 / 3
pointerevent_setpointercapture_pointerup_mouse.htmlPass2 / 2
pointerevent_setpointercapture_pointerup_touch.htmlPass1 / 1
pointerevent_setpointercapture_relatedtarget.htmlPass2 / 2
pointerevent_setpointercapture_to_same_element_twice.htmlPass6 / 6
pointerevent_suppress_compat_events_on_click.htmlPass4 / 4
pointerevent_suppress_compat_events_on_drag_mouse.htmlPass4 / 4
pointerevent_target_at_clicking_link_in_image_map.htmlPass2 / 2
pointerevent_tiltX_tiltY_to_azimuth_altitude.htmlPass25 / 25
pointerevent_to_slotted_target.htmlPass3 / 3
pointerevent_touch-action-auto-css_touch.htmlPass1 / 1
pointerevent_touch-action-button-none-test_touch.htmlPass1 / 1
pointerevent_touch-action-illegal.htmlPass3 / 3
pointerevent_touch-action-inherit_child-auto-child-none_touch.htmlPass1 / 1
pointerevent_touch-action-inherit_child-none_touch.htmlPass1 / 1
pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.htmlFail0 / 1TEST BUGthe in-view center point of the scrolled content is on the horizontal scrollbar of the scroll container (classic scrollbars), where a touch does not pan: scrollLeft stays 0, as in Chrome, Firefox and Safari, which fail the test the same way
pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.htmlPass1 / 1
pointerevent_touch-action-inherit_highest-parent-none_touch.htmlPass1 / 1
pointerevent_touch-action-inherit_parent-none_touch.htmlPass1 / 1
pointerevent_touch-action-keyboard.htmlPass1 / 1
pointerevent_touch-action-modified_touch.htmlPass1 / 1
pointerevent_touch-action-mouse.htmlPass1 / 1
pointerevent_touch-action-none-css_touch.htmlPass1 / 1
pointerevent_touch-action-none-on-body-when-style-propagates-to-viewport_touch.htmlPass1 / 1
pointerevent_touch-action-overflow-hidden_touch.htmlPass3 / 3
pointerevent_touch-action-pan-down-css_touch.htmlPass1 / 1
pointerevent_touch-action-pan-left-css_touch.htmlPass1 / 1
pointerevent_touch-action-pan-right-css_touch.htmlPass1 / 1
pointerevent_touch-action-pan-up-css_touch.htmlPass1 / 1
pointerevent_touch-action-pan-x-css_touch.htmlPass1 / 1
pointerevent_touch-action-pan-x-pan-y-pan-y_touch.htmlPass1 / 1
pointerevent_touch-action-pan-x-pan-y_touch.htmlPass1 / 1
pointerevent_touch-action-pan-y-css_touch.htmlPass1 / 1
pointerevent_touch-action-single-axis_touch.htmlPass2 / 2
pointerevent_touch-action-span-none-test_touch.htmlPass1 / 1
pointerevent_touch-action-svg-none-test_touch.htmlPass1 / 1
pointerevent_touch-action-table-none-test_touch.htmlPass2 / 2
pointerevent_touch-action-verification.htmlPass37 / 37
pointerevent_touch-adjustment_click_target.htmlPass1 / 1
pointerevent_touch-propagates-when-target-is-video_touch.htmlPass1 / 1
pointerlock/pointerevent_coordinates_when_locked.htmlPass1 / 1
pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.https.htmlPass1 / 1
pointerlock/pointerevent_movementxy_with_pointerlock.htmlPass1 / 1
pointerlock/pointerevent_pointerlock_after_pointercapture.htmlPass1 / 1
pointerlock/pointerevent_pointerlock_supercedes_capture.htmlPass1 / 1
pointerlock/pointerevent_pointermove_in_pointerlock.htmlPass2 / 2
pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.htmlPass1 / 1
pointerlock/pointerevent_pointerrawupdate_in_pointerlock.https.htmlPass1 / 1
pointerup_after_pointerdown_target_removed.htmlPass3 / 3
pointerup_button_value_matches_corresponding_pointerdown.htmlPass1 / 1
predicted_events_attributes.htmlPass12 / 12
touch-action-with-swipe-dir-change.htmlPass8 / 8
touch-scroll-axis-lock-with-scroll-chain.htmlPass2 / 2

Tentative tests

TestResultSubtestsKindDescription
compat/pointerevent_touch_target_after_pointerdown_target_removed.tentative.htmlPass18 / 18
persistentDeviceId/get-persistendeviceid-from-pointer-event.tentative.htmlPass1 / 1
persistentDeviceId/get-persistendeviceid-from-pointer-mouse-event.tentative.htmlPass1 / 1
persistentDeviceId/pointer-event-has-persistentdeviceid-from-pointer-event-init.tentative.htmlPass2 / 2
pointerevent_after_target_appended_interleaved.tentative.htmlFail0 / 12TEST BUGthe expected lists of the tentative test contain click events, but the test only logs the events whose type starts with the tested prefix (mouse): Chrome, Firefox and Safari fail every subtest too
pointerevent_after_target_removed_interleaved.tentative.htmlFail0 / 6TEST BUGthe expected lists of the tentative test contain click events, but the test only logs the events whose type starts with the tested prefix (mouse): Chrome, Firefox and Safari fail every subtest too
pointerevent_boundary_events_cross_document_same_origin.tentative.htmlFail1 / 5NOT IMPLEMENTEDthe tentative exposure of the relatedTarget of the pointer boundary events across same-origin documents (w3c/pointerevents#656): every document boundary is handled as a cross-origin one, as pointerevent_boundary_events_cross_origin.html expects
pointerevent_click_on_chorded_mouse_button.tentative.htmlPass2 / 2
pointermove_after_pointerover_target_removed.tentative.htmlFail3 / 4NOT IMPLEMENTEDthe tentative rule that pointermove is not fired when a listener of the preceding pointerover removed its target: the library fires it at the parent of the removed target