This tests basic multi touch event support. This is a limited version of test basic-multi-touch-events.html that avoids the situation where one touch point is released while another is maintained. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS lastEvent.type is "touchstart" FAIL lastEvent.touches.length should be 2. Was 1. FAIL lastEvent.changedTouches.length should be 2. Was 1. FAIL lastEvent.targetTouches.length should be 2. Was 1. PASS lastEvent.pageX is 0 PASS lastEvent.pageY is 0 PASS lastEvent.touches[0].pageX is 10 PASS lastEvent.touches[0].pageY is 10 PASS lastEvent.touches[0].clientX is 10 PASS lastEvent.touches[0].clientY is 10 FAIL lastEvent.touches[0].identifier should be 0. Was 1. FAIL lastEvent.touches[1].pageX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.touches[1].pageX') FAIL lastEvent.touches[1].pageY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.touches[1].pageY') FAIL lastEvent.touches[1].clientX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.touches[1].clientX') FAIL lastEvent.touches[1].clientY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.touches[1].clientY') FAIL lastEvent.touches[1].identifier should be 1. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.touches[1].identifier') PASS lastEvent.changedTouches[0].pageX is 10 PASS lastEvent.changedTouches[0].pageY is 10 PASS lastEvent.changedTouches[0].clientX is 10 PASS lastEvent.changedTouches[0].clientY is 10 FAIL lastEvent.changedTouches[0].identifier should be 0. Was 1. FAIL lastEvent.changedTouches[1].pageX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.changedTouches[1].pageX') FAIL lastEvent.changedTouches[1].pageY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.changedTouches[1].pageY') FAIL lastEvent.changedTouches[1].clientX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.changedTouches[1].clientX') FAIL lastEvent.changedTouches[1].clientY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.changedTouches[1].clientY') FAIL lastEvent.changedTouches[1].identifier should be 1. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.changedTouches[1].identifier') PASS lastEvent.targetTouches[0].pageX is 10 PASS lastEvent.targetTouches[0].pageY is 10 PASS lastEvent.targetTouches[0].clientX is 10 PASS lastEvent.targetTouches[0].clientY is 10 FAIL lastEvent.targetTouches[0].identifier should be 0. Was 1. FAIL lastEvent.targetTouches[1].pageX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.targetTouches[1].pageX') FAIL lastEvent.targetTouches[1].pageY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.targetTouches[1].pageY') FAIL lastEvent.targetTouches[1].clientX should be 20. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.targetTouches[1].clientX') FAIL lastEvent.targetTouches[1].clientY should be 30. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.targetTouches[1].clientY') FAIL lastEvent.targetTouches[1].identifier should be 1. Threw exception TypeError: undefined is not an object (evaluating 'lastEvent.targetTouches[1].identifier')