Click here to download the Blitz Browser!

WPT

wpt / touch-events / single-touch.html

Spec: Touch Events ↗

Runs: Chrome 155.0.8042.0 (wpt@4eb09bcd9, 2026-09-04) | Firefox 157.0a1 (wpt@c3fcbf4ba, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-52f0f (wpt@a1ecd0c09, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total227/227226/2270/2270/2270/227NOT RUN
SubtestChromeFirefoxSafariLadybirdServoBlitz
Verify touch events for a single touch drag operationPASSFAILFAILFAIL
touchstart event is a TouchEvent eventPASSPASS
touchstart.touches attribute exists check_TouchEventPASSPASS
touchstart.touches attribute is of type TouchListPASSPASS
touchstart.touches's touch list is a TouchList objectPASSPASS
touchstart.touches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchstart.touches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchstart.touches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchstart.touches.TouchList.item attribute is of type functionPASSPASS
touchstart.touches[0]'s touch point is a Touch objectPASSPASS
touchstart.touches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.target attribute is of type ElementPASSPASS
touchstart.touches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchstart.touches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchstart.touches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchstart.targetTouches attribute exists check_TouchEventPASSPASS
touchstart.targetTouches attribute is of type TouchListPASSPASS
touchstart.targetTouches's touch list is a TouchList objectPASSPASS
touchstart.targetTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchstart.targetTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchstart.targetTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchstart.targetTouches.TouchList.item attribute is of type functionPASSPASS
touchstart.targetTouches[0]'s touch point is a Touch objectPASSPASS
touchstart.targetTouches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.target attribute is of type ElementPASSPASS
touchstart.targetTouches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchstart.targetTouches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchstart.targetTouches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchstart.changedTouches attribute exists check_TouchEventPASSPASS
touchstart.changedTouches attribute is of type TouchListPASSPASS
touchstart.changedTouches's touch list is a TouchList objectPASSPASS
touchstart.changedTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchstart.changedTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchstart.changedTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchstart.changedTouches.TouchList.item attribute is of type functionPASSPASS
touchstart.changedTouches[0]'s touch point is a Touch objectPASSPASS
touchstart.changedTouches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.target attribute is of type ElementPASSPASS
touchstart.changedTouches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchstart.changedTouches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchstart.changedTouches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchstart.altKey attribute exists check_TouchEventPASSPASS
touchstart.altKey attribute is of type booleanPASSPASS
touchstart.metaKey attribute exists check_TouchEventPASSPASS
touchstart.metaKey attribute is of type booleanPASSPASS
touchstart.ctrlKey attribute exists check_TouchEventPASSPASS
touchstart.ctrlKey attribute is of type booleanPASSPASS
touchstart.shiftKey attribute exists check_TouchEventPASSPASS
touchstart.shiftKey attribute is of type booleanPASSPASS
touchstart: all TouchList lengths are correctPASSPASS
touchstart: all TouchList identifiers are consistentPASSPASS
touchstart: event target same as targetTouches targetPASSPASS
touchstart: touch pageX/pageY inside of target elementPASSPASS
touchstart: touch clientX/clientY is consistent with pageX/pageYPASSPASS
touchstart: touch screenX/screenY pageX/pageY and clientX/clientY values are no less than 0PASSPASS
touchmove event is a TouchEvent eventPASSPASS
touchmove.touches attribute exists check_TouchEventPASSPASS
touchmove.touches attribute is of type TouchListPASSPASS
touchmove.touches's touch list is a TouchList objectPASSPASS
touchmove.touches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchmove.touches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchmove.touches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchmove.touches.TouchList.item attribute is of type functionPASSPASS
touchmove.touches[0]'s touch point is a Touch objectPASSPASS
touchmove.touches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.target attribute is of type ElementPASSPASS
touchmove.touches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchmove.touches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchmove.touches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchmove.targetTouches attribute exists check_TouchEventPASSPASS
touchmove.targetTouches attribute is of type TouchListPASSPASS
touchmove.targetTouches's touch list is a TouchList objectPASSPASS
touchmove.targetTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchmove.targetTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchmove.targetTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchmove.targetTouches.TouchList.item attribute is of type functionPASSPASS
touchmove.targetTouches[0]'s touch point is a Touch objectPASSPASS
touchmove.targetTouches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.target attribute is of type ElementPASSPASS
touchmove.targetTouches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchmove.targetTouches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchmove.targetTouches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchmove.changedTouches attribute exists check_TouchEventPASSPASS
touchmove.changedTouches attribute is of type TouchListPASSPASS
touchmove.changedTouches's touch list is a TouchList objectPASSPASS
touchmove.changedTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchmove.changedTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchmove.changedTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchmove.changedTouches.TouchList.item attribute is of type functionPASSPASS
touchmove.changedTouches[0]'s touch point is a Touch objectPASSPASS
touchmove.changedTouches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.target attribute is of type ElementPASSPASS
touchmove.changedTouches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchmove.changedTouches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchmove.changedTouches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchmove.altKey attribute exists check_TouchEventPASSPASS
touchmove.altKey attribute is of type booleanPASSPASS
touchmove.metaKey attribute exists check_TouchEventPASSPASS
touchmove.metaKey attribute is of type booleanPASSPASS
touchmove.ctrlKey attribute exists check_TouchEventPASSPASS
touchmove.ctrlKey attribute is of type booleanPASSPASS
touchmove.shiftKey attribute exists check_TouchEventPASSPASS
touchmove.shiftKey attribute is of type booleanPASSPASS
touchmove: all TouchList lengths are correctPASSPASS
touchmove: all TouchList identifiers matches touchstart identifierPASSPASS
touchmove: event target same as targetTouches targetPASSPASS
touchmove: touch pageX/pageY inside of one of the target elementsPASSPASS
touchmove: touch clientX/clientY is consistent with pageX/pageYPASSPASS
touchmove: touch screenX/screenY pageX/pageY and clientX/clientY values are no less than 0PASSPASS
touchend event is a TouchEvent eventPASSPASS
touchend.touches attribute exists check_TouchEventPASSPASS
touchend.touches attribute is of type TouchListPASSPASS
touchend.touches's touch list is a TouchList objectPASSPASS
touchend.touches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchend.touches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchend.touches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchend.touches.TouchList.item attribute is of type functionPASSPASS
touchend.targetTouches attribute exists check_TouchEventPASSPASS
touchend.targetTouches attribute is of type TouchListPASSPASS
touchend.targetTouches's touch list is a TouchList objectPASSPASS
touchend.targetTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchend.targetTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchend.targetTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchend.targetTouches.TouchList.item attribute is of type functionPASSPASS
touchend.changedTouches attribute exists check_TouchEventPASSPASS
touchend.changedTouches attribute is of type TouchListPASSPASS
touchend.changedTouches's touch list is a TouchList objectPASSPASS
touchend.changedTouches.TouchList.length attribute exists check_touchList_objectPASSPASS
touchend.changedTouches.TouchList.length attribute is of type number (unsigned long)PASSPASS
touchend.changedTouches.TouchList.item attribute exists check_touchList_objectPASSPASS
touchend.changedTouches.TouchList.item attribute is of type functionPASSPASS
touchend.changedTouches[0]'s touch point is a Touch objectPASSPASS
touchend.changedTouches[0].Touch.identifier attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.identifier attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.target attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.target attribute is of type ElementPASSPASS
touchend.changedTouches[0].Touch.screenX attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.screenX attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.screenY attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.screenY attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.clientX attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.clientX attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.clientY attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.clientY attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.pageX attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.pageX attribute is of type number (long)PASSPASS
touchend.changedTouches[0].Touch.pageY attribute exists check_Touch_objectPASSPASS
touchend.changedTouches[0].Touch.pageY attribute is of type number (long)PASSPASS
touchend.altKey attribute exists check_TouchEventPASSPASS
touchend.altKey attribute is of type booleanPASSPASS
touchend.metaKey attribute exists check_TouchEventPASSPASS
touchend.metaKey attribute is of type booleanPASSPASS
touchend.ctrlKey attribute exists check_TouchEventPASSPASS
touchend.ctrlKey attribute is of type booleanPASSPASS
touchend.shiftKey attribute exists check_TouchEventPASSPASS
touchend.shiftKey attribute is of type booleanPASSPASS
touchend: all TouchList lengths are correctPASSPASS
touchend: touches identifier matches changedTouches identifierPASSPASS
touchend: touch pageX/pageY inside expected elementPASSPASS
touchend: touch clientX/clientY is consistent with pageX/pageYPASSPASS
touchend: touch screenX/screenY pageX/pageY and clientX/clientY values are no less than 0PASSPASS