Bug 1000870 - Change official tests for pointer events to auto mochitest system. r=smaug
authorLebedev Maksim <Alessarik@gmail.com>
Thu, 25 Feb 2016 03:51:00 +0100
changeset 331878 5669557c3f7142d0202bac70fa52c9984423038c
parent 331877 83ee3ac3f36a6dd8dcf173c939ee2b4d0447e800
child 331879 bb2748e05cab8ff2045ab6c8be73d2064b8c7d73
push id6048
push userkmoir@mozilla.com
push dateMon, 06 Jun 2016 19:02:08 +0000
treeherdermozilla-beta@46d72a56c57d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssmaug
bugs1000870
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1000870 - Change official tests for pointer events to auto mochitest system. r=smaug
dom/events/moz.build
dom/events/test/pointerevents/mochitest.ini
dom/events/test/pointerevents/mochitest_support_external.js
dom/events/test/pointerevents/mochitest_support_internal.js
dom/events/test/pointerevents/pointerevent_button_attribute_mouse-manual.html
dom/events/test/pointerevents/pointerevent_capture_mouse-manual.html
dom/events/test/pointerevents/pointerevent_capture_suppressing_mouse-manual.html
dom/events/test/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html
dom/events/test/pointerevents/pointerevent_constructor.html
dom/events/test/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html
dom/events/test/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html
dom/events/test/pointerevents/pointerevent_lostpointercapture_is_first-manual.html
dom/events/test/pointerevents/pointerevent_pointercancel_touch-manual.html
dom/events/test/pointerevents/pointerevent_pointerdown-manual.html
dom/events/test/pointerevents/pointerevent_pointerenter-manual.html
dom/events/test/pointerevents/pointerevent_pointerenter_does_not_bubble-manual.html
dom/events/test/pointerevents/pointerevent_pointerenter_nohover-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_after_pointerup_nohover-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_descendant_over-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_descendants-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_does_not_bubble-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_mouse-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_pen-manual.html
dom/events/test/pointerevents/pointerevent_pointerleave_touch-manual.html
dom/events/test/pointerevents/pointerevent_pointermove-manual.html
dom/events/test/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
dom/events/test/pointerevents/pointerevent_pointermove_pointertype-manual.html
dom/events/test/pointerevents/pointerevent_pointerout-manual.html
dom/events/test/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html
dom/events/test/pointerevents/pointerevent_pointerout_after_pointerup_nohover-manual.html
dom/events/test/pointerevents/pointerevent_pointerout_pen-manual.html
dom/events/test/pointerevents/pointerevent_pointerout_received_once-manual.html
dom/events/test/pointerevents/pointerevent_pointerover-manual.html
dom/events/test/pointerevents/pointerevent_pointertype_mouse-manual.html
dom/events/test/pointerevents/pointerevent_pointertype_pen-manual.html
dom/events/test/pointerevents/pointerevent_pointertype_touch-manual.html
dom/events/test/pointerevents/pointerevent_pointerup-manual.html
dom/events/test/pointerevents/pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
dom/events/test/pointerevents/pointerevent_pointerup_pointertype-manual.html
dom/events/test/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html
dom/events/test/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html
dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html
dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointerup_mouse-manual.html
dom/events/test/pointerevents/pointerevent_setpointercapture_disconnected-manual.html
dom/events/test/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-manual.html
dom/events/test/pointerevents/pointerevent_setpointercapture_invalid_pointerid-manual.html
dom/events/test/pointerevents/pointerevent_setpointercapture_relatedtarget-manual.html
dom/events/test/pointerevents/pointerevent_support.js
dom/events/test/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-button-test_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-illegal.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-keyboard-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-mouse-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-none-css_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-span-test_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-svg-test_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-table-test_touch-manual.html
dom/events/test/pointerevents/pointerevent_touch-action-verification.html
dom/events/test/pointerevents/test_empty_file.html
dom/events/test/pointerevents/test_pointerevent_button_attribute_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_capture_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_capture_suppressing_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_change-touch-action-onpointerdown_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_constructor.html
dom/events/test/pointerevents/test_pointerevent_gotpointercapture_before_first_pointerevent-manual.html
dom/events/test/pointerevents/test_pointerevent_lostpointercapture_for_disconnected_node-manual.html
dom/events/test/pointerevents/test_pointerevent_lostpointercapture_is_first-manual.html
dom/events/test/pointerevents/test_pointerevent_pointercancel_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerdown-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerenter-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerenter_does_not_bubble-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerenter_nohover-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_after_pointercancel_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_after_pointerup_nohover-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_descendant_over-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_descendants-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_does_not_bubble-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_pen-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerleave_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_pointermove-manual.html
dom/events/test/pointerevents/test_pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
dom/events/test/pointerevents/test_pointerevent_pointermove_pointertype-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerout-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerout_after_pointercancel_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerout_after_pointerup_nohover-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerout_pen-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerout_received_once-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerover-manual.html
dom/events/test/pointerevents/test_pointerevent_pointertype_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_pointertype_pen-manual.html
dom/events/test/pointerevents/test_pointerevent_pointertype_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerup-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
dom/events/test/pointerevents/test_pointerevent_pointerup_pointertype-manual.html
dom/events/test/pointerevents/test_pointerevent_releasepointercapture_events_to_original_target-manual.html
dom/events/test/pointerevents/test_pointerevent_releasepointercapture_invalid_pointerid-manual.html
dom/events/test/pointerevents/test_pointerevent_releasepointercapture_onpointercancel_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_releasepointercapture_onpointerup_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_setpointercapture_disconnected-manual.html
dom/events/test/pointerevents/test_pointerevent_setpointercapture_inactive_button_mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_setpointercapture_invalid_pointerid-manual.html
dom/events/test/pointerevents/test_pointerevent_setpointercapture_relatedtarget-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-auto-css_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-button-test_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-illegal.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-none_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_parent-none_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-keyboard-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-mouse-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-none-css_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-css_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-pan-y_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-pan-y-css_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-span-test_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-svg-test_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-table-test_touch-manual.html
dom/events/test/pointerevents/test_pointerevent_touch-action-verification.html
--- a/dom/events/moz.build
+++ b/dom/events/moz.build
@@ -1,15 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-MOCHITEST_MANIFESTS += ['test/mochitest.ini']
+MOCHITEST_MANIFESTS += [
+    'test/mochitest.ini',
+    'test/pointerevents/mochitest.ini',
+]
+
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
 
 XPIDL_SOURCES += [
     'nsIEventListenerService.idl',
 ]
 
 XPIDL_MODULE = 'content_events'
 
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/mochitest.ini
@@ -0,0 +1,165 @@
+[DEFAULT]
+skip-if = (toolkit == 'gonk') || (os == 'android') # Bug 1178701 - Issue on 'B2G ICS Emulator' and 'Android'
+support-files =
+  mochitest_support_external.js
+  mochitest_support_internal.js
+  pointerevent_styles.css
+  pointerevent_support.js
+
+[test_pointerevent_button_attribute_mouse-manual.html]
+  support-files = pointerevent_button_attribute_mouse-manual.html
+[test_pointerevent_capture_mouse-manual.html]
+  support-files = pointerevent_capture_mouse-manual.html
+[test_pointerevent_capture_suppressing_mouse-manual.html]
+  support-files = pointerevent_capture_suppressing_mouse-manual.html
+[test_pointerevent_change-touch-action-onpointerdown_touch-manual.html]
+  support-files = pointerevent_change-touch-action-onpointerdown_touch-manual.html
+  disabled = disabled
+[test_pointerevent_constructor.html]
+  support-files = pointerevent_constructor.html
+[test_pointerevent_gotpointercapture_before_first_pointerevent-manual.html]
+  support-files = pointerevent_gotpointercapture_before_first_pointerevent-manual.html
+  disabled = should be investigated
+[test_pointerevent_lostpointercapture_for_disconnected_node-manual.html]
+  support-files = pointerevent_lostpointercapture_for_disconnected_node-manual.html
+[test_pointerevent_lostpointercapture_is_first-manual.html]
+  support-files = pointerevent_lostpointercapture_is_first-manual.html
+[test_pointerevent_pointercancel_touch-manual.html]
+  support-files = pointerevent_pointercancel_touch-manual.html
+[test_pointerevent_pointerdown-manual.html]
+  support-files = pointerevent_pointerdown-manual.html
+  disabled = should be investigated
+[test_pointerevent_pointerenter_does_not_bubble-manual.html]
+  support-files = pointerevent_pointerenter_does_not_bubble-manual.html
+[test_pointerevent_pointerenter_nohover-manual.html]
+  support-files = pointerevent_pointerenter_nohover-manual.html
+[test_pointerevent_pointerenter-manual.html]
+  support-files = pointerevent_pointerenter-manual.html
+[test_pointerevent_pointerleave_after_pointercancel_touch-manual.html]
+  support-files = pointerevent_pointerleave_after_pointercancel_touch-manual.html
+[test_pointerevent_pointerleave_after_pointerup_nohover-manual.html]
+  support-files = pointerevent_pointerleave_after_pointerup_nohover-manual.html
+[test_pointerevent_pointerleave_descendant_over-manual.html]
+  support-files = pointerevent_pointerleave_descendant_over-manual.html
+  skip-if = (os == 'linux') # Bug 1180188 - Issue on Linux
+[test_pointerevent_pointerleave_descendants-manual.html]
+  support-files = pointerevent_pointerleave_descendants-manual.html
+[test_pointerevent_pointerleave_does_not_bubble-manual.html]
+  support-files = pointerevent_pointerleave_does_not_bubble-manual.html
+[test_pointerevent_pointerleave_mouse-manual.html]
+  support-files = pointerevent_pointerleave_mouse-manual.html
+[test_pointerevent_pointerleave_pen-manual.html]
+  support-files = pointerevent_pointerleave_pen-manual.html
+  disabled = should be investigated
+[test_pointerevent_pointerleave_touch-manual.html]
+  support-files = pointerevent_pointerleave_touch-manual.html
+  skip-if = (os == 'linux') # Bug 1180188 - Issue on Linux
+[test_pointerevent_pointermove-manual.html]
+  support-files = pointerevent_pointermove-manual.html
+[test_pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html]
+  support-files = pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
+[test_pointerevent_pointermove_pointertype-manual.html]
+  support-files = pointerevent_pointermove_pointertype-manual.html
+[test_pointerevent_pointerout-manual.html]
+  support-files = pointerevent_pointerout-manual.html
+[test_pointerevent_pointerout_after_pointercancel_touch-manual.html]
+  support-files = pointerevent_pointerout_after_pointercancel_touch-manual.html
+[test_pointerevent_pointerout_after_pointerup_nohover-manual.html]
+  support-files = pointerevent_pointerout_after_pointerup_nohover-manual.html
+[test_pointerevent_pointerout_pen-manual.html]
+  support-files = pointerevent_pointerout_pen-manual.html
+  disabled = should be investigated
+[test_pointerevent_pointerout_received_once-manual.html]
+  support-files = pointerevent_pointerout_received_once-manual.html
+[test_pointerevent_pointerover-manual.html]
+  support-files = pointerevent_pointerover-manual.html
+[test_pointerevent_pointertype_mouse-manual.html]
+  support-files = pointerevent_pointertype_mouse-manual.html
+[test_pointerevent_pointertype_pen-manual.html]
+  support-files = pointerevent_pointertype_pen-manual.html
+[test_pointerevent_pointertype_touch-manual.html]
+  support-files = pointerevent_pointertype_touch-manual.html
+[test_pointerevent_pointerup-manual.html]
+  support-files = pointerevent_pointerup-manual.html
+[test_pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html]
+  support-files = pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
+[test_pointerevent_pointerup_pointertype-manual.html]
+  support-files = pointerevent_pointerup_pointertype-manual.html
+[test_pointerevent_releasepointercapture_events_to_original_target-manual.html]
+  support-files = pointerevent_releasepointercapture_events_to_original_target-manual.html
+[test_pointerevent_releasepointercapture_invalid_pointerid-manual.html]
+  support-files = pointerevent_releasepointercapture_invalid_pointerid-manual.html
+[test_pointerevent_releasepointercapture_onpointercancel_touch-manual.html]
+  support-files = pointerevent_releasepointercapture_onpointercancel_touch-manual.html
+[test_pointerevent_releasepointercapture_onpointerup_mouse-manual.html]
+  support-files = pointerevent_releasepointercapture_onpointerup_mouse-manual.html
+[test_pointerevent_setpointercapture_disconnected-manual.html]
+  support-files = pointerevent_setpointercapture_disconnected-manual.html
+[test_pointerevent_setpointercapture_inactive_button_mouse-manual.html]
+  support-files = pointerevent_setpointercapture_inactive_button_mouse-manual.html
+  skip-if = (os == 'linux') && e10s # Bug 1180188 - Issue on Linux
+[test_pointerevent_setpointercapture_invalid_pointerid-manual.html]
+  support-files = pointerevent_setpointercapture_invalid_pointerid-manual.html
+[test_pointerevent_setpointercapture_relatedtarget-manual.html]
+  support-files = pointerevent_setpointercapture_relatedtarget-manual.html
+[test_pointerevent_touch-action-auto-css_touch-manual.html]
+  support-files = pointerevent_touch-action-auto-css_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-button-test_touch-manual.html]
+  support-files = pointerevent_touch-action-button-test_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-illegal.html]
+  support-files = pointerevent_touch-action-illegal.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_child-none_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_child-none_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-inherit_parent-none_touch-manual.html]
+  support-files = pointerevent_touch-action-inherit_parent-none_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-keyboard-manual.html]
+  support-files = pointerevent_touch-action-keyboard-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-mouse-manual.html]
+  support-files = pointerevent_touch-action-mouse-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-none-css_touch-manual.html]
+  support-files = pointerevent_touch-action-none-css_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-pan-x-css_touch-manual.html]
+  support-files = pointerevent_touch-action-pan-x-css_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html]
+  support-files = pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-pan-x-pan-y_touch-manual.html]
+  support-files = pointerevent_touch-action-pan-x-pan-y_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-pan-y-css_touch-manual.html]
+  support-files = pointerevent_touch-action-pan-y-css_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-span-test_touch-manual.html]
+  support-files = pointerevent_touch-action-span-test_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-svg-test_touch-manual.html]
+  support-files = pointerevent_touch-action-svg-test_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-table-test_touch-manual.html]
+  support-files = pointerevent_touch-action-table-test_touch-manual.html
+  disabled = disabled
+[test_pointerevent_touch-action-verification.html]
+  support-files = pointerevent_touch-action-verification.html
+[test_empty_file.html]
+  disabled = disabled # Bug 1150091 - Issue with support-files
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/mochitest_support_external.js
@@ -0,0 +1,93 @@
+// This file supports translating W3C tests
+// to tests on auto MochiTest system with minimum changes.
+// Author: Maksim Lebedev <alessarik@gmail.com>
+
+// Function allows to prepare our tests after load document
+addEventListener("load", function(event) {
+  console.log("OnLoad external document");
+  prepareTest();
+}, false);
+
+// Function allows to initialize prerequisites before testing
+function prepareTest() {
+  SimpleTest.waitForExplicitFinish();
+  SimpleTest.requestCompleteLog();
+  turnOnPointerEvents(startTest);
+}
+
+function turnOnPointerEvents(callback) {
+  console.log("SET dom.w3c_pointer_events.enabled as TRUE");
+  console.log("SET layout.css.touch_action.enabled as TRUE");
+  SpecialPowers.pushPrefEnv({
+    "set": [
+      ["dom.w3c_pointer_events.enabled", true],
+      ["layout.css.touch_action.enabled", true]
+    ]
+  }, callback);
+}
+
+// Function checks that test should have status PASS
+function result_function(testObj) {
+if(testObj["status"] != testObj["PASS"])
+  console.log(testObj["status"] + " = " + testObj["PASS"] + ". " + testObj["name"]);
+  is(testObj["status"], testObj["PASS"], testObj["name"]);
+}
+
+// Function allows to correct finish test in mochitest system
+function completion_function() {
+  console.log("w3c tests have been finished");
+  if(!SimpleTest._stopOnLoad) {
+    console.log("Finishing Mochitest system");
+    SimpleTest.finish();
+  }
+}
+
+// Helper function to send PointerEvent with different parameters
+function sendPointerEvent(int_win, elemId, pointerEventType, inputSource, params) {
+  var elem = int_win.document.getElementById(elemId);
+  if(!!elem) {
+    var rect = elem.getBoundingClientRect();
+    var eventObj = {type: pointerEventType, inputSource: inputSource};
+    if(params && "button" in params)
+      eventObj.button = params.button;
+    if(params && "isPrimary" in params)
+      eventObj.isPrimary = params.isPrimary;
+    else if(MouseEvent.MOZ_SOURCE_MOUSE == inputSource)
+      eventObj.isPrimary = true;
+    console.log(elemId, eventObj);
+    var salt = ("pointermove" == pointerEventType) ? 1 : 2;
+    synthesizePointer(elem, rect.width*salt/5, rect.height/2, eventObj, int_win);
+  } else {
+    is(!!elem, true, "Document should have element with id: " + elemId);
+  }
+}
+
+// Helper function to send MouseEvent with different parameters
+function sendMouseEvent(int_win, elemId, mouseEventType, params) {
+  var elem = int_win.document.getElementById(elemId);
+  if(!!elem) {
+    var rect = elem.getBoundingClientRect();
+    var eventObj = {type: mouseEventType};
+    if(params && "button" in params)
+      eventObj.button = params.button;
+    if(params && "inputSource" in params)
+      eventObj.inputSource = params.inputSource;
+    console.log(elemId, eventObj);
+    synthesizeMouse(elem, rect.width/4, rect.height/2, eventObj, int_win);
+  } else {
+    is(!!elem, true, "Document should have element with id: " + elemId);
+  }
+}
+
+// Helper function to send TouchEvent with different parameters
+function sendTouchEvent(int_win, elemId, touchEventType, params) {
+  var elem = int_win.document.getElementById(elemId);
+  if(!!elem) {
+    var rect = elem.getBoundingClientRect();
+    var eventObj = {type: touchEventType};
+    console.log(elemId, eventObj);
+    synthesizeTouch(elem, rect.width/4, rect.height/2, eventObj, int_win);
+  } else {
+    is(!!elem, true, "Document should have element with id: " + elemId);
+  }
+}
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/mochitest_support_internal.js
@@ -0,0 +1,40 @@
+// This file supports translating W3C tests
+// to tests on auto MochiTest system with minimum changes.
+// Author: Maksim Lebedev <alessarik@gmail.com>
+
+// Function allows to prepare our tests after load document
+addEventListener("load", function(event) {
+  console.log("OnLoad internal document");
+  addListeners(document.getElementById("target0"));
+  addListeners(document.getElementById("target1"));
+  preExecute();
+}, false);
+
+// Function allows to initialize prerequisites before testing
+// and adds some callbacks to support mochitest system.
+function preExecute() {
+  add_result_callback(parent.result_function);
+  add_completion_callback(parent.completion_function);
+  parent.turnOnPointerEvents(window.callExecute);
+}
+
+// The main function allows to execute tests in auto mode
+function callExecute() {
+  console.log("Run 'executeTest' function");
+  if(!!parent.executeTest)
+    parent.executeTest(window);
+  else
+    parent.is(!!parent.executeTest, true, "parent-document should have function 'executeTest'");
+}
+
+function addListeners(elem) {
+  if(!elem)
+    return;
+  var All_Events = ["pointerdown","pointerup","pointercancel","pointermove","pointerover","pointerout",
+                    "pointerenter","pointerleave","gotpointercapture","lostpointercapture"];
+  All_Events.forEach(function(name) {
+    elem.addEventListener(name, function(event) {
+      console.log('('+event.type+')-('+event.pointerType+')');
+    }, false);
+  });
+}
--- a/dom/events/test/pointerevents/pointerevent_button_attribute_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_button_attribute_mouse-manual.html
@@ -1,27 +1,31 @@
 <!doctype html>
 <html>
     <head>
         <title>Button and buttons attribute test for mouse</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>Button attribute test for mouse</h1>
+        <!--
         <h2>This test is for mouse only</h2>
         <h4>
             Test Description: This test checks if button attribute for mouse handled properly.
             <p>Put your mouse over the black rectangle</p>
         </h4>
         <p>
+        -->
         <div id="target0" style="background:black"></div>
+        <div id="target1" style="background:yellow"></div>
         <script>
             var eventTested = false;
             var detected_pointertypes = {};
 
             setup({ explicit_done: true });
             add_completion_callback(showPointerTypes);
 
             function run() {
--- a/dom/events/test/pointerevents/pointerevent_capture_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_capture_mouse-manual.html
@@ -1,34 +1,37 @@
 <!doctype html>
 <html>
     <head>
         <title>Set/Release capture</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body>
+        <!--
         <h1>Pointer Events capture test</h1>
         <h4>
             Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
             <ol>
                 <li> Move your mouse over the black rectangle. pointermove event should be logged in the black rectangle</li>
                 <li> Move your mouse over the purple rectangle. pointerover event should be logged in the purple rectangle</li>
                 <li> Press and hold left mouse button over "Set Capture" button. "gotpointercapture" should be logged in the black rectangle</li>
                 <li> Move your mouse anywhere. pointermove should be logged in the black rectangle</li>
                 <li> Move your mouse over the purple rectangle. Nothig should happen</li>
                 <li> Move your mouse over the black rectangle. pointermove should be logged in the black rectangle</li>
                 <li> Release left mouse button. "lostpointercapture" should be logged in the black rectangle</li>
             </ol>
         </h4>
         Test passes if the proper behaviour of the events is observed.
+        -->
         <div id="target0"></div>
         <br>
         <div id="target1"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var isPointerCapture = false;
             var pointermoveNoCaptureGot0 = false;
--- a/dom/events/test/pointerevents/pointerevent_capture_suppressing_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_capture_suppressing_mouse-manual.html
@@ -1,36 +1,39 @@
 <!doctype html>
 <html>
     <head>
         <title>Set/Release capture</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body>
+        <!--
         <h1>Pointer Events capture test</h1>
         <h4>
             Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
             <ol>
                 <li> Put your mouse over the black rectangle. pointerover and pointerenter should be logged inside of it.</li>
                 <li> Move your mouse out of the black rectangle. pointerout and pointerleave should be logged inside of it</li>
                 <li> Put your mouse over the purple rectangle. pointerover and pointerenter should be logged inside of it.</li>
                 <li> Move your mouse out of the purple rectangle. pointerout and pointerleave should be logged inside of it</li>
                 <li> Press and hold left mouse button over "Set Capture" button. "gotpointercapture" should be logged in the black rectangle</li>
                 <li> Put your mouse over the purple rectangle and then move it out. Nothing should happen</li>
                 <li> Put your mouse over the black rectangle. pointerover and pointerenter should be logged inside of it.</li>
                 <li> Move your mouse out of the black rectangle. pointerout and pointerleave should be logged inside of it</li>
                 <li> Release left mouse button. "lostpointercapture" should be logged in the black rectangle</li>
             </ol>
         </h4>
         Test passes if the proper behaviour of the events is observed.
+        -->
         <div id="target0"></div>
         <br>
         <div id="target1"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var isPointerCapture = false;
             var isRelatedTargetValueTested = false;
--- a/dom/events/test/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html
@@ -1,35 +1,38 @@
 <!doctype html>
 <html>
     <head>
         <title>Change touch-action on pointerdown</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             background: black;
             width: 700px;
             height: 430px;
             color: white;
             overflow-y: auto;
             overflow-x: auto;
             white-space: nowrap;
             }
         </style>
     </head>
     <body onload="run()">
         <h1>Pointer Events touch-action attribute support</h1>
+        <!--
         <h4>Test Description: Press and hold your touch. Try to scroll text in any direction.
             Then release your touch and try to scroll again. Expected: no panning.
         </h4>
         <p>Note: this test is for touch-devices only</p>
+        -->
         <div id="target0" style="touch-action: auto;">
             <p>
                 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
                 nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.
                 Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit
                 lobortis nisl ut aliquip ex ea commodo consequat.
             </p>
             <p>Lorem ipsum dolor sit amet...</p>
--- a/dom/events/test/pointerevents/pointerevent_constructor.html
+++ b/dom/events/test/pointerevents/pointerevent_constructor.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>PointerEvent: Constructor test</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
     <h1>PointerEvent: Dispatch custom event</h1>
     <h4>Test Description: This test checks if PointerEvent constructor works properly using synthetic pointerover and pointerout events. For valid results, this test must be run without generating real (trusted) pointerover or pointerout events on the black rectangle below.</h4>
     <div id="target0"></div>
     <script>
         var eventTested = false;
         var detected_pointertypes = {};
--- a/dom/events/test/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: gotpiontercapture is fired first and asynchronously.</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
         <meta name="assert" content="After setting capture, the gotpointercapture dispatched to the capturing element before any other event is fired." />
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("gotpointercapture event"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -73,21 +74,23 @@
                     listener.setPointerCapture(event.pointerId);
                     isWaiting = true;
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch gotpointercapture event</h1>
+        <!--
         <h4>Test Description:
             After pointer capture is set for a pointer, and prior to dispatching the first event for the pointer, the gotpointercapture
             event must be dispatched to the element that is receiving the pointer capture. The gotpointercapture event must be dispatched asynchronously.
         </h4>
         <br />
+        -->
         <div id="target0">
             Use the mouse, touch or pen to tap/click this box.
         </div>
         <div id="listener">Do not hover over or touch this element. </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
--- a/dom/events/test/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html
@@ -1,29 +1,32 @@
 <!doctype html>
 <html>
     <head>
         <title>Lostpointercapture fires on document when target is removed</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body>
+        <!--
         <h1>Pointer Events - lostpointercapture when capturing element is removed</h1>
         <h4>
             Test Description:
             This test checks if lostpointercapture is fired at the document when the capturing node is removed from the document.
             Complete the following actions:
             <ol>
                 <li>Press and hold left mouse button over "Set Capture" button. "gotpointercapture" should be logged inside of the black rectangle.
                 <li>"lostpointercapture" should be logged inside of the black rectangle after a short delay.
             </ol>
         </h4>
+        -->
         <div id="target0"></div>
         <div id="target1" style="background:black; color:white"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var isDisconnected = false;
             var count = 0;
 
--- a/dom/events/test/pointerevents/pointerevent_lostpointercapture_is_first-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_lostpointercapture_is_first-manual.html
@@ -1,31 +1,34 @@
 <!doctype html>
 <html>
     <head>
         <title>Lostpointercapture triggers first and asynchronously</title>
         <meta name="assert" content="TA11.1: After pointer capture is released for a pointer, and prior to any subsequent events for the pointer, the lostpointercapture event must be dispatched to the element from which pointer capture was removed; TA11.2: lostpointercapture must be dispatched asynchronously.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>Pointer Events capture test - lostpointercapture order</h1>
+        <!--
         <h4>
             Test Description:
             This test checks if lostpointercapture is handled asynchronously and prior to all subsequent events.
             Complete the following actions:
             <ol>
                 <li>Press and hold left mouse button over "Set Capture" button. "gotpointercapture" should be logged inside of the black rectangle
                 <li>"lostpointercapture" should be logged inside of the black rectangle after a short delay
             </ol>
         </h4>
         Test passes if lostpointercapture is dispatched after releasing the mouse button and before any additional pointer events.
+        -->
         <div id="target0" style="background:black; color:white"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var detected_pointertypes = {};
             var detected_pointerEvents = new Array();
             var pointerdown_event = null;
 
--- a/dom/events/test/pointerevents/pointerevent_pointercancel_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointercancel_touch-manual.html
@@ -1,27 +1,30 @@
 <!doctype html>
 <html>
     <head>
         <title>PointerCancel - touch</title>
         <meta name="viewport" content="width=device-width">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body class="scrollable" onload="run()">
         <h1>pointercancel test</h1>
+        <!--
         <h3>Warning: this test works properly only for devices that have touchscreen</h3>
         <h4>
         Test Description: This test checks if pointercancel event triggers.
         <p>Start touch over the black rectangle and then move your finger to scroll the page.</p>
         </h4>
         <p>
+        -->
         <div id="target0" style="background: black"></div>
         <script>
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointercancel event received");
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
--- a/dom/events/test/pointerevents/pointerevent_pointerdown-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerdown-manual.html
@@ -5,19 +5,20 @@ Test cases for Pointer Events v1 spec
 This document references Test Assertions (abbrev TA below) written by Cathy Chan
 http://www.w3.org/wiki/PointerEvents/TestAssertions
 -->
     <head>
         <title>Pointer Events pointerdown tests</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script>
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerdown event received");
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_pointerenter-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerenter-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: Dispatch pointerenter. </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device is moved into the hit test boundaries of an element or one of its descendants, the pointerenter event must be dispatched."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerenter event"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_pointerenter_does_not_bubble-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerenter_does_not_bubble-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: The pointerenter event does not bubble </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="The pointerenter event must not bubble up to parent elements."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerEnter event does not bubble"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -63,23 +64,25 @@
             border: 1px solid orange;
             width:100px;
             height:100px;
             }
         </style>
     </head>
     <body onload="run()">
         <h1> Pointer Event: pointerenter does not bubble</h1>
+        <!--
         <h4>
             Test Description:
             The pointerenter event must not bubble up to parent elements.
         </h4>
         <div id="instructions">
             Use the mouse or pen to hover over then out of the purple box nested in the black box. Or with touch, tap on the purple box.
         </div>
+        -->
         <div id="parent0">
             <div id="target0"></div>
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
--- a/dom/events/test/pointerevents/pointerevent_pointerenter_nohover-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerenter_nohover-manual.html
@@ -4,19 +4,20 @@
         <title>Pointer Event: Dispatch pointerenter. (nohover)</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device that does not support hover is moved into the hit test boundaries of an element
 or one of its descendants as a result of a pointerdown event, the pointerenter event must be dispatched. "/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerenter event"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -51,22 +52,24 @@ or one of its descendants as a result of
                         f_pointerenter_rcvd = true;
                     }
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch pointerenter (nohover)</h1>
+        <!--
         <h4>
             Test Description:
             When a pointing device that does not support hover is moved into the hit test boundaries of an element or one of its
             descendants as a result of a pointerdown event, the pointerenter event must be dispatched.
         </h4>
         <br />
+        -->
         <div id="target0">
             Tap here.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerleave after pointercancel</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body class="scrollable" onload="run()">
         <h2>pointerleave after pointercancel</h2>
         <h4>Test Description: This test checks if pointerleave event triggers after pointercancel. Start touch on the black rectangle and move your touch to scroll in any direction. </h4>
         <p>Note: this test is for touch devices only</p>
         <div id="target0"></div>
         <script>
             var test_pointerleave = async_test("pointerleave event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_after_pointerup_nohover-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_after_pointerup_nohover-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerleave after pointerup</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h2>pointerleave after pointerup</h2>
         <h4>Test Description: This test checks if pointerleave event triggers for devices that don't support hover. Tap the black rectangle. </h4>
         <p>Note: this test is only for devices that do not support hover.</p>
         <div id="target0"></div>
         <script>
             var test_pointerleave = async_test("pointerleave event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_descendant_over-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_descendant_over-manual.html
@@ -1,30 +1,33 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerleave + descendant</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>pointerleave</h1>
+        <!--
         <h4>
             Test Description: This test checks if pointerleave event works properly.
             <ol>
                 <li>Put your mouse over the black rectangle
                 <li>Then move it into the purple rectangle
                 <li>Click on the purple rectangle to complete the test
             </ol>
             Note: when you entered the black rectangle once don't leave it before the end of the test to get proper results.
         </h4>
         <p>
+        -->
         <div id="target0" style="background:black">
             <div id="target1" style="background:purple"></div>
         </div>
         <script>
             var eventTested = false;
             var pointerleaveReceived = false;
             var detected_pointertypes = {};
 
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_descendants-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_descendants-manual.html
@@ -1,25 +1,28 @@
 <!doctype html>
 <html>
     <head>
         <title>Pointerleave + descendant</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>pointerleave</h1>
+        <!--
         <h4>
             Test Description: This test checks if pointerleave event works properly.
             <p>Put your mouse over the black rectangle and then move it out through purple rectangle boundaries.</p>
         </h4>
         <p>
+        -->
         <div id="target0" style="background:black; height: 47px;">
             <div style="background:purple; height: 35px; width: 90%; position: absolute"></div>
         </div>
         <script>
             var eventTested = false;
             var detected_pointertypes = {};
 
             add_completion_callback(showPointerTypes);
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_does_not_bubble-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_does_not_bubble-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: The pointerleave event does not bubble </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="The pointerleave event must not bubble up to parent elements."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerLeave event does not bubble"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -52,23 +53,25 @@
             border: 1px solid orange;
             width:100px;
             height:100px;
             }
         </style>
     </head>
     <body onload="run()">
         <h1> Pointer Event: pointerleave does not bubble</h1>
+        <!--
         <h4>
             Test Description:
             The pointerleave event must not bubble up to parent elements.
         </h4>
         <div id="instructions">
             Use the mouse or pen to hover over then out of the purple box nested in the black box. Or with touch, tap on the purple box.
         </div>
+        -->
         <div id="parent0">
             <div id="target0"></div>
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_mouse-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: Dispatch pointerleave (mouse). </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device that has continuous position (such as a mouse) leaves the hit test boundaries of an element, the pointerleave event must be dispatched."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerleave event"); // set up test harness;
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -31,21 +32,23 @@
                     });
                     test_pointerEvent.done(); // complete test
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch pointerleave (mouse)</h1>
+        <!--
         <h4>
             Test Description:
             When a pointing device that has continuous position (such as a mouse) leaves the hit test boundaries of an element, the pointerleave event must be dispatched.
         </h4>
         <br />
+        -->
         <div id="target0">
             Use a mouse to move over then out of this element
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_pen-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_pen-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: Dispatch pointerleave (pen). </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device that supports hover (pen stylus) leaves the range of the digitizer while over an element, the pointerleave event must be dispatched."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerleave event"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_pointerleave_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerleave_touch-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: Dispatch pointerleave (touch). </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device that does not support hover (such as a finger) leaves the hit test boundaries as a result of a pointerup event, the pointerleave event must be dispatched. "/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerleave event");
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_pointermove-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointermove-manual.html
@@ -1,19 +1,20 @@
 <!doctype html>
 <html>
     <head>
         <title>Pointermove</title>
         <meta name="viewport" content="width=device-width">
         <meta name="assert" content="When a pointer changes coordinates, the pointermove event must be dispatched."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h2>PointerMove</h2>
         <h4>Test Description: This test checks if pointermove event triggers. Move your mouse over the black rectangle or slide it if you are using touchscreen.</h4>
         <div id="target0" style="background:black"></div>
         <script>
             var eventTested = false;
             var detected_pointertypes = {};
--- a/dom/events/test/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: pointermove has same isPrimary as last pointerdown with the same pointerId</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="The isPrimary attribute of a pointermove event must have the same value as the isPrimary attribute of the last pointerdown event with the same pointerId attribute."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointermove has same isPrimary as last pointerdown"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -45,24 +46,26 @@
                         assert_not_equals(pointermove_event, null, "pointermove event was never received: ");
                     });
                     test_pointerEvent.done(); // complete test
                 });
             }
         </script>
     </head>
     <body onload="run()">
+        <!--
         <h1>Pointer Event: pointermove has the same isPrimary as last pointerdown with the same pointerId</h1>
         <h4>Test Description:
             The isPrimary attribute of a pointermove event must have the same value as the isPrimary attribute of the last pointerdown event with the same pointerId attribute.
         </h4>
         <div id="instructions">
             Press and hold a mouse button, touch contact or pen contact on this element. Move around inside the element while maintaining contact/button down. Only use one device per test run.
             <p>Lift off of the element to complete the test.</p>
         </div>
+        -->
         <div id="target0" style="touch-action: none;">
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointermove_pointertype-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointermove_pointertype-manual.html
@@ -1,26 +1,29 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerType conservation</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
+        <!--
         <h1>pointerType conservation</h1>
         <h4>Test Description: This test checks if pointerType attribute defined properly.</h4>
         <div id="instructions">
             Press and move a mouse button, touch contact or pen contact on the black rectangle. Only use one device per test run.
         </div>
         <p>Note: This test may be run with different pointer devices, however only one device should be used per test run.
         <p>
+        -->
         <div id="target0"></div>
         <script>
             var eventTested = false;
             var pointerTypeGot = false;
             var pointerdown_event;
             var detected_pointertypes = {};
 
             setup({ explicit_done: true });
--- a/dom/events/test/pointerevents/pointerevent_pointerout-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerout-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerout</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h2>pointerout</h2>
         <h4>Test Description: This test checks if pointerout event triggers. Put your mouse over the black rectangle and then move it out of the rectangle boundaries. If you are using touchscreen tap the black rectangle. </h4>
         <div id="target0" style="background: black"></div>
         <script>
             var test_pointerEvent = async_test("pointerout event received");
             // showPointerTypes is defined in pointerevent_support.js
--- a/dom/events/test/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerout</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body class="scrollable" onload="run()">
         <h2>pointerout</h2>
         <h4>Test Description: This test checks if pointerout event triggers after pointercancel. Start touch on the black rectangle and move your touch to scroll in any direction. </h4>
         <p>Note: this test is for touch devices only</p>
         <div id="target0"></div>
         <script>
             var test_pointerout = async_test("pointerout event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerout_after_pointerup_nohover-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerout_after_pointerup_nohover-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerout</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h2>pointerout</h2>
         <h4>Test Description: This test checks if pointerout event triggers for devices that don't support hover. Tap the black rectangle. </h4>
         <p>Note: this test is only for devices that do not support hover.</p>
         <div id="target0"></div>
         <script>
             var test_pointerout = async_test("pointerout event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerout_pen-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerout_pen-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerout</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h2>pointerout</h2>
         <h4>Test Description: This test checks if pointerout event triggers for pen. Place your pen over the black rectangle and then pull the pen out of the digitizer's detectable range. </h4>
         <p>Note: this test is for devices that support hover - for pen only</p>
         <div id="target0"></div>
         <script>
             var test_pointerout = async_test("pointerout event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerout_received_once-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerout_received_once-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerout received just once</title>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <meta name="viewport" content="width=device-width">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>pointerout received just once</h1>
         <h4>
             Test Description: This test checks if pointerout event dispatched properly.
             <ol>
                 <li>Put your mouse over the black rectangle.
                 <li>Move your mouse out of the black rectangle
--- a/dom/events/test/pointerevents/pointerevent_pointerover-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerover-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: Dispatch pointerover. </title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="When a pointing device is moved into the hit test boundaries of an element, the pointerover event must be dispatched. "/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerover is dispatched"); // set up test harness;
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_pointertype_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointertype_mouse-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: If a pointer event is initiated by a mouse device, then the pointerType must be "mouse"</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="If a pointer event is initiated by a mouse device, then the pointerType must be 'mouse'."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointer event have pointerType as mouse"); // set up test harness
             var eventTested = false;
 
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
@@ -42,20 +43,22 @@
                 for (var i = 0; i < All_Pointer_Events.length; i++) {
                     on_event(target0, All_Pointer_Events[i], eventHandler);
                 }
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch pointer events with pointerType equal to "mouse"</h1>
+        <!--
         <h4>Test Description:
             If a pointer event is initiated by a mouse device, then the pointerType must be 'mouse'.
         </h4>
         <br />
+        -->
         <div id="target0">
             Using the mouse, click this element.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointertype_pen-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointertype_pen-manual.html
@@ -3,31 +3,34 @@
     <head>
         <title>Pointer Event: If a pointer event is initiated by a pen device, then the pointerType must be "pen"</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="If a pointer event is initiated by a pen device, then the pointerType must be 'pen'."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointer event has pointerType as pen"); // set up test harness
             var eventTested = false;
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
             function eventHandler(event) {
                 detected_pointertypes[event.pointerType] = true;
                 if(!eventTested) {
+                    if("pen" != event.pointerType)
+                        return;
                     check_PointerEvent(event);
                     test_pointerEvent.step(function () {
                         assert_equals(event.pointerType, "pen", "Verify event.pointerType is 'pen'.");
                     });
                     eventTested = true;
                 }
                 if (event.type == "pointerup") {
                     test_pointerEvent.done(); // complete test
@@ -40,20 +43,22 @@
                 for (var i = 0; i < All_Pointer_Events.length; i++) {
                     on_event(target0, All_Pointer_Events[i], eventHandler);
                 }
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch pointer events with pointerType equal to "pen"</h1>
+        <!--
         <h4>Test Description:
             If a pointer event is initiated by a pen device, then the pointerType must be 'pen'.
         </h4>
         <br />
+        -->
         <div id="target0">
             Using pen, tap here.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointertype_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointertype_touch-manual.html
@@ -3,31 +3,34 @@
     <head>
         <title>Pointer Event: If a pointer event is initiated by a touch device, then the pointerType must be "touch"</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="If a pointer event is initiated by a touch device, then the pointerType must be 'touch'."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointer event has pointerType as touch"); // set up test harness
             var eventTested = false;
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
             function eventHandler(event) {
                 detected_pointertypes[event.pointerType] = true;
                 if(!eventTested) {
+                    if("touch" != event.pointerType)
+                        return;
                     check_PointerEvent(event);
                     test_pointerEvent.step(function () {
                         assert_equals(event.pointerType, "touch", "Verify event.pointerType is 'touch'.");
                     });
                     eventTested = true;
                 }
                 if (event.type == "pointerup") {
                     test_pointerEvent.done(); // complete test
@@ -41,20 +44,22 @@
                 for (var i = 0; i < All_Pointer_Events.length; i++) {
                     on_event(target0, All_Pointer_Events[i], eventHandler);
                 }
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: Dispatch pointer events with pointerType equal to "touch"</h1>
+        <!--
         <h4>Test Description:
             If a pointer event is initiated by a touch device, then the pointerType must be 'touch'.
         </h4>
         <br />
+        -->
         <div id="target0">
             Using touch, tap here.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointerup-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerup-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerup</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>pointerup</h1>
         <h4>Test Description: This test checks if pointerup event triggers. Press mouse left button and release it over the black rectangle or tap it if you are using a touchscreen.</h4>
         <div id="target0" style="background:black"></div>
         <script>
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerup event received");
--- a/dom/events/test/pointerevents/pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
@@ -3,19 +3,20 @@
     <head>
         <title>Pointer Event: pointerup has same isPrimary as last pointerdown with the same pointerId</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="The isPrimary attribute of a pointerup event must have the same value as the isPrimary attribute of the last pointerdown event with the same pointerId attribute."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointerup has same isPrimary as last pointerdown"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -40,22 +41,24 @@
                     pointerdown_event = event;
                     detected_pointertypes[event.pointerType] = true;
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: pointerup has the same isPrimary as last pointerdown with the same pointerId</h1>
+        <!--
         <h4>Test Description:
             The isPrimary attribute of a pointerup event must have the same value as the isPrimary attribute of the last pointerdown event with the same pointerId attribute.
         </h4>
         <div id="instructions">
             Press and release a mouse button, touch contact or pen contact on this element. Only use one device per test run.
         </div>
+        -->
         <div id="target0" style="touch-action: none;">
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_pointerup_pointertype-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_pointerup_pointertype-manual.html
@@ -1,26 +1,29 @@
 <!doctype html>
 <html>
     <head>
         <title>pointerType conservation</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>pointerType conservation</h1>
+        <!--
         <h4>Test Description: This test checks if pointerType attribute defined properly.</h4>
         <div id="instructions">
             Press and release a mouse button, touch contact or pen contact on the black rectangle. Only use one device per test run.
         </div>
         <p>Note: This test may be run with different pointer devices, however only one device should be used per test run.
         <p>
+        -->
         <div id="target0"></div>
         <script>
             var eventTested = false;
             var pointerTypeGot = false;
             var pointerdown_event;
             var detected_pointertypes = {};
 
             setup({ explicit_done: true });
--- a/dom/events/test/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html
@@ -2,19 +2,20 @@
 <html>
     <head>
         <title>Pointer Event: releasePointerCapture() - subsequent events follow normal hitting testing mechanisms</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <meta name="assert" content="After invoking the releasePointerCapture method on an element, subsequent events for the specified pointer must follow normal hit testing mechanisms for determining the event target"/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("lostpointercapture: subsequent events to target.");  // set up test harness
             var suppressedEventsFail = false;
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
@@ -92,22 +93,24 @@
                     on_event(listener, All_Pointer_Events[i], listenerEventHandler);
                 }
             }
         </script>
     </head>
     <body onload="run()">
         <div id="listener"></div>
         <h1>Pointer Event: releasePointerCapture() - subsequent events follow normal hitting testing mechanisms</h1>
+        <!--
         <h4>
             Test Description:
             After invoking the releasePointerCapture method on an element, subsequent events for the specified
             pointer must follow normal hit testing mechanisms for determining the event target
         </h4>
         <br />
+        -->
         <div id="target0">
             Use mouse, touch or pen to contact here and move around.
         </div>
         <div id="complete-notice">
             <p>Test complete:  Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
--- a/dom/events/test/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html
@@ -5,19 +5,20 @@
         <meta name="assert" content="releasePointerCapture DOMException - InvalidPointerId"/>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
         <link rel="help" href="http://www.w3.org/wiki/PointerEvents/TestAssertions">
         <meta name="assert" content="When the releasePointerCapture method is invoked, if the provided pointerId value does not match any of the active pointers, a DOMException with the name InvalidPointerId must be thrown."/>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("releasePointerCapture: DOMException InvalidPointerId"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -52,22 +53,24 @@
                     listener.setPointerCapture(event.pointerId);
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <div id="listener"></div>
         <h1> Pointer Event: releasePointerCapture() DOMException - InvalidPointerId</h1>
+        <!--
         <h4>
             Test Description:
             Upon invocation of the releasePointerCapture method, if the provided pointerId value does not match any of the
             active pointers, a DOMException with the name InvalidPointerId must be thrown.
         </h4>
         <br />
+        -->
         <div id="target0">
             Use the mouse, touch or pen to move over or contact this box.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
--- a/dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html
@@ -1,28 +1,31 @@
 <!doctype html>
 <html>
     <head>
         <title>Release capture on pointercancel</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body class="scrollable">
         <h1>Pointer Events Capture Test - release capture on pointercancel</h1>
+        <!--
         <h4>
             Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
             <ol>
                 <li> Touch black rectangle and do not release your touch
                 <li> Move your touch to scroll the page. "lostpointercapture" should be logged inside of the black rectangle immediately after "pointercancel"
             </ol>
         </h4>
         Test passes if the proper behavior of the events is observed.
+        -->
         <div id="target0" style="background:black; color:white"></div>
 
         <script type='text/javascript'>
             var pointercancelGot = false;
             var count=0;
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("pointer capture is released on pointercancel");
 
--- a/dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointerup_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_releasepointercapture_onpointerup_mouse-manual.html
@@ -1,28 +1,31 @@
 <!doctype html>
 <html>
     <head>
         <title>Release capture on pointerup</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body>
         <h1>Pointer Events Capture Test - release capture on pointerup</h1>
+        <!--
         <h4>
             Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
             <ol>
                 <li> Press and hold left mouse button over "Set Capture" button
                 <li> Release left mouse button anywhere over the document. "lostpointercapture" should be logged inside of the black rectangle immediately after "pointerup"
             </ol>
         </h4>
         Test passes if the proper behavior of the events is observed.
+        -->
         <div id="target0" style="background:black; color:white"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var isPointerCapture = false;
             var pointerupGot = false;
             var count=0;
 
--- a/dom/events/test/pointerevents/pointerevent_setpointercapture_disconnected-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_setpointercapture_disconnected-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>setPointerCapture() throws on disconnected node</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             add_completion_callback(showPointerTypes);
             var test_setPointerCapture = async_test("setPointerCapture: DOMException InvalidStateError");
 
             function run() {
                 var target0 = document.getElementById("target0");
                 var target1 = document.getElementById("target1");
@@ -34,20 +35,22 @@
                     }
                     test_setPointerCapture.done();
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: DOMException InvalidStateError</h1>
+        <!--
         <h4>Test Description:
             When the setPointerCapture method is invoked, if the target node does not participate in its ownerDocument's tree, a DOMException with the name InvalidStateError must be thrown.
         </h4>
         <br>
+        -->
         <div id="target0">
             Use the mouse, touch or pen to contact this box.
         </div>
         <div id="target1"></div>
         <div id="complete-notice">
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
         </div>
         <div id="log"></div>
--- a/dom/events/test/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-manual.html
@@ -1,29 +1,33 @@
 <!doctype html>
 <html>
     <head>
         <title>setPointerCapture + inactive button state</title>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <meta name="viewport" content="width=device-width">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body onload="run()">
         <h1>setPointerCapture</h1>
+        <!--
         <h4>
             Test Description: This test checks if setPointerCapture works properly.
             <ol>
                 <li>Put your mouse over the black rectangle
                 <li>Move you mouse out to complete the test
             </ol>
         </h4>
         <p>
+        -->
         <div id="target0" style="background:black; color:white;"></div>
+        <div id="target1" style="background:yellow;"></div>
         <script>
             var detected_pointertypes = {};
 
             var captureGot = false;
 
             setup({ explicit_done: true });
             add_completion_callback(showPointerTypes);
 
--- a/dom/events/test/pointerevents/pointerevent_setpointercapture_invalid_pointerid-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_setpointercapture_invalid_pointerid-manual.html
@@ -4,19 +4,20 @@
         <title>Pointer Event: gotPiontercapture is fired first.</title>
         <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
         <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
         <link rel="help" href="http://www.w3.org/wiki/PointerEvents/TestAssertions">
         <meta name="assert" content="When the setPointerCapture method is invoked, if the provided pointerId value does not match any of the active pointers, a DOMException with the name InvalidPointerId must be thrown." />
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- /resources/testharness.js -->
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
+        <script type="text/javascript" src="mochitest_support_internal.js"></script>
         <script type="text/javascript">
             var detected_pointertypes = {};
             var test_pointerEvent = async_test("setPointerCapture: DOMException InvalidPointerId"); // set up test harness
             // showPointerTypes is defined in pointerevent_support.js
             // Requirements: the callback function will reference the test_pointerEvent object and
             // will fail unless the async_test is created with the var name "test_pointerEvent".
             add_completion_callback(showPointerTypes);
 
@@ -43,20 +44,22 @@
                     }
                     test_pointerEvent.done(); // complete test
                 });
             }
         </script>
     </head>
     <body onload="run()">
         <h1>Pointer Event: DOMException InvalidPointerId</h1>
+        <!--
         <h4>Test Description:
             When the setPointerCapture method is invoked, if the provided pointerId value does not match any of the active pointers, a DOMException with the name InvalidPointerId must be thrown.
         </h4>
         <br />
+        -->
         <div id="target0">
             Use the mouse, touch or pen to contact this box.
         </div>
         <div id="complete-notice">
             <p>Test complete: Scroll to Summary to view Pass/Fail Results.</p>
             <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
             <p>Refresh the page to run the tests again with a different pointer type.</p>
         </div>
--- a/dom/events/test/pointerevents/pointerevent_setpointercapture_relatedtarget-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_setpointercapture_relatedtarget-manual.html
@@ -1,31 +1,33 @@
 <!doctype html>
 <html>
     <head>
         <title>Set/Release capture + relatedTarget</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
     </head>
     <body>
+        <!--
         <h1>Pointer Events Capture Test - capture and relatedTarget</h1>
         <h4>
             Test Description: This test checks if setCapture/releaseCapture functions works properly. Complete the following actions:
             <ol>
                 <li> Put your mouse over the lower rectangle. pointerover should be received for the purple rectangle
                 <li> Press and hold left mouse button over "Set Capture" button
                 <li> Put your mouse over the upper rectangle. pointerover should be received for the black rectangle
                 <li> Release left mouse button to complete the test.
             </ol>
         </h4>
         Test passes if the proper behavior of the events is observed.
-
+        -->
         <div id="target0" style="background:black; color:white"></div>
         <br>
         <div id="target1" style="background:purple; color:white"></div>
         <br>
         <input type="button" id="btnCapture" value="Set Capture">
         <script type='text/javascript'>
             var isPointerCapture = false;
             var isPointeroverGot = false;
--- a/dom/events/test/pointerevents/pointerevent_support.js
+++ b/dom/events/test/pointerevents/pointerevent_support.js
@@ -149,22 +149,40 @@ function objectScroller(target, directio
         target.scrollTop = 0;
     } else if (direction == 'left') {
         target.scrollLeft = 0;
     }
 }
 
 function sPointerCapture(e) {
     try {
-        target0.setPointerCapture(e.pointerId);
+        if(target0.setPointerCapture)
+            target0.setPointerCapture(e.pointerId);
+        else
+            test(function() {
+                assert_equals(typeof(target0.setPointerCapture), "function", "target0 should have function setPointerCapture");
+            }, "target0 should have function setPointerCapture");
     }
     catch(e) {
+        console.log("catch exception: " + e);
+        test(function() {
+            assert_true(false, "Exception in function setPointerCapture");
+        }, "Exception in function setPointerCapture");
     }
 }
 
 function rPointerCapture(e) {
     try {
         captureButton.value = 'Set Capture';
-        target0.releasePointerCapture(e.pointerId);
+        if(target0.releasePointerCapture)
+            target0.releasePointerCapture(e.pointerId);
+        else
+            test(function() {
+                assert_equals(typeof(target0.releasePointerCapture), "function", "target0 should have function releasePointerCapture");
+            }, "target0 should have function releasePointerCapture");
     }
     catch(e) {
+        console.log("catch exception: " + e);
+        test(function() {
+            assert_true(false, "Exception in function releasePointerCapture");
+        }, "Exception in function releasePointerCapture");
     }
-}
\ No newline at end of file
+}
--- a/dom/events/test/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: auto</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: auto;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-button-test_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-button-test_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>Button touch-action test</title>
         <meta name="assert" content="TA15.11 -The touch-action CSS property applies to button elements.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             height: 150px;
             width: 200px;
             overflow-y: auto;
             background: black;
             padding: 100px;
             position: relative;
@@ -21,19 +22,21 @@
             touch-action: none;
             width: 350px;
             height: 350px;
             border: 2px solid red;
             }
         </style>
     </head>
     <body onload="run()">
+        <!--
         <h2>Pointer Events touch-action attribute support</h2>
         <h4 id="desc">Test Description: Try to scroll black element DOWN moving your touch outside of the red border. Wait for description update.</h4>
         <p>Note: this test is for touch only</p>
+        -->
         <div id="target0">
             <button>Test Button</button>
         </div>
         <br>
         <input type="button" id="btnComplete" value="Complete test">
 
         <script type='text/javascript'>
             var detected_pointertypes = {};
--- a/dom/events/test/pointerevents/pointerevent_touch-action-illegal.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-illegal.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: illegal</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 50px;
             touch-action: pan-x none;
             }
             #target1 {
             width: 700px;
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: parent > child: auto > child: none</title>
         <meta name="assert" content="TA15.5 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent, Child: `auto`, Grand-Child: `none`">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller > div {
             touch-action: auto;
             }
             .scroller > div div {
             touch-action: none;
             }
         </style>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: child: none</title>
         <meta name="assert" content="TA15.9 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent, Child: `none`">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller > div {
             touch-action: none;
             }
         </style>
     </head>
     <body onload="run()">
         <h1>Pointer Events touch-action attribute support</h1>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: parent > child: pan-x > child: pan-x</title>
         <meta name="assert" content="TA15.6 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent, Child: `pan-x`, Grand-Child: `pan-x`">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller > div {
             touch-action: pan-x;
             }
             .scroller > div div {
             touch-action: pan-x;
             }
         </style>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: parent > child: pan-x > child: pan-y</title>
         <meta name="assert" content="TA15.13 - Touch action inherits child 'pan-x' -> child 'pan-y' test">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller > div {
             touch-action: pan-x;
             }
             .scroller > div div {
             touch-action: pan-y;
             }
         </style>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: parent: none + two embedded children</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #divParent {
             touch-action: none;
             }
         </style>
     </head>
     <body onload="run()">
         <h1>Pointer Events touch-action attribute support</h1>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: inherit from parent: none</title>
         <meta name="assert" content="TA15.8 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent: `none` Child: `auto`">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller {
             touch-action: none;
             }
         </style>
     </head>
     <body onload="run()">
         <h1>Pointer Events touch-action attribute support</h1>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-keyboard-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-keyboard-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: keyboard</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: none;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-mouse-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-mouse-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: mouse</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: none;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-none-css_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-none-css_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: none</title>
         <meta name="assert" content="TA15.2 - With `touch-action: none` on a swiped or click/dragged element, `pointerdown+(optional pointermove)+pointerup` must be dispatched.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: none;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: pan-x</title>
         <meta name="assert" content="TA15.3 - With `touch-action: pan-x` on a swiped or click/dragged element, only panning on the x-axis should be possible.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: pan-x;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: parent > child: pan-x pan-y > child: pan-y</title>
         <meta name="assert" content="TA15.17 - Touch action 'pan-x pan-y' 'pan-y' test">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             .scroller > div {
             touch-action: pan-x pan-y;
             }
             .scroller > div div {
             touch-action: pan-y;
             }
         </style>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: pan-x pan-y</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: pan-x pan-y;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>touch-action: pan-y</title>
         <meta name="assert" content="TA15.4 - With `touch-action: pan-y` on a swiped or click/dragged element, only panning in the y-axis should be possible.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 430px;
             touch-action: pan-y;
             }
         </style>
     </head>
--- a/dom/events/test/pointerevents/pointerevent_touch-action-span-test_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-span-test_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>Span touch-action test</title>
         <meta name="assert" content="TA15.18 - The touch-action CSS property applies to all elements except non-replaced inline elements."
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             height: 150px;
             width: 200px;
             overflow-y: auto;
             background: black;
             padding: 100px;
             position: relative;
--- a/dom/events/test/pointerevents/pointerevent_touch-action-svg-test_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-svg-test_touch-manual.html
@@ -1,17 +1,18 @@
 <!doctype html>
 <html>
     <head>
         <title>SVG test</title>
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             height: 350px;
             width: 300px;
             overflow-y: auto;
             background: black;
             padding: 100px;
             position: relative;
--- a/dom/events/test/pointerevents/pointerevent_touch-action-table-test_touch-manual.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-table-test_touch-manual.html
@@ -1,18 +1,19 @@
 <!doctype html>
 <html>
     <head>
         <title>Table touch-action test</title>
         <meta name="assert" content="TA15.19 The touch-action CSS property applies to all elements except table rows, row groups, table columns, and column groups.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             height: 150px;
             width: 200px;
             overflow-y: auto;
             background: black;
             padding: 100px;
             position: relative;
--- a/dom/events/test/pointerevents/pointerevent_touch-action-verification.html
+++ b/dom/events/test/pointerevents/pointerevent_touch-action-verification.html
@@ -6,18 +6,19 @@
         auto: The user agent MAY determine any permitted touch behaviors, such as panning and zooming manipulations of the viewport, for touches that begin on the element. 
         none: Touches that begin on the element MUST NOT trigger default touch behaviors.
         pan-x: The user agent MAY consider touches that begin on the element only for the purposes of horizontally scrolling the element's nearest ancestor with horizontally scrollable content.
         pan-y: The user agent MAY consider touches that begin on the element only for the purposes of vertically scrolling the element's nearest ancestor with vertically scrollable content.
         manipulation: The user agent MAY consider touches that begin on the element only for the purposes of scrolling and continuous zooming. Any additional behaviors supported by auto are out of scope for this specification.">
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
-        <script src="/resources/testharnessreport.js"></script>
+        <!--script src="/resources/testharnessreport.js"></script-->
         <script src="pointerevent_support.js"></script>
+        <script src="mochitest_support_internal.js"></script>
         <style>
             #target0 {
             width: 700px;
             height: 20px;
             touch-action: auto;
             }
             #target1 {
             width: 700px;
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_empty_file.html
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+This file should exist until bug 1150091 will be fixed.
+[manifestparser] Adding support-files under tests overwrites DEFAULT instead of appending.
+-->
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_button_attribute_mouse-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_button_attribute_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target1", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_capture_mouse-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_capture_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "btnCapture", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target0",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "btnCapture", "pointerdown", MouseEvent.MOZ_SOURCE_MOUSE, {button:1});
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointerup",   MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_capture_suppressing_mouse-manual.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_capture_suppressing_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "btnCapture", "pointerdown", MouseEvent.MOZ_SOURCE_MOUSE, {button:1});
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target0",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointerup",   MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1",    "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_change-touch-action-onpointerdown_touch-manual.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_change-touch-action-onpointerdown_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        const WM_VSCROLL = 0x0115;
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchmove");
+        sendTouchEvent(int_win, "target0", "touchend");
+        //sendTouchEvent(int_win, "target0", "touchstart");
+        //sendTouchEvent(int_win, "target0", "touchmove");
+        //sendTouchEvent(int_win, "target0", "touchend");
+        var utils = _getDOMWindowUtils(int_win);
+        var target0 = int_win.document.getElementById("target0");
+        utils.sendNativeMouseScrollEvent(target0.getBoundingClientRect().left + 5,
+                                        target0.getBoundingClientRect().top + 5,
+                                        WM_VSCROLL, 10, 10, 0, 0, 0, target0);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_constructor.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_constructor.html";
+      }
+      function executeTest(int_win) {
+        // Function should be, but can be empty
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_gotpointercapture_before_first_pointerevent-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_gotpointercapture_before_first_pointerevent-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "complete-notice", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:0});
+        sendMouseEvent(int_win, "target0", "mousedown", {button:1});
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:0});
+        sendPointerEvent(int_win, "complete-notice", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:0});
+        sendPointerEvent(int_win, "target0", "pointerdown", MouseEvent.MOZ_SOURCE_MOUSE, {button:1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_lostpointercapture_for_disconnected_node-manual.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      SimpleTest.requestFlakyTimeout("Official test uses timeout");
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_lostpointercapture_for_disconnected_node-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "btnCapture", "mousedown");
+        sendMouseEvent(int_win, "btnCapture", "mousemove");
+        setTimeout(function() {
+          sendMouseEvent(int_win, "target1", "mousemove");
+        }, 500);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_lostpointercapture_is_first-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_lostpointercapture_is_first-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "btnCapture", "mousedown");
+        sendMouseEvent(int_win, "btnCapture", "mouseup");
+        sendMouseEvent(int_win, "btnCapture", "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointercancel_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointercancel_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchcancel");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerdown-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerdown-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "log",     "mousemove");
+        sendMouseEvent(int_win, "target0", "mousedown", {button:1});
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerenter-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerenter-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerenter_does_not_bubble-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerenter_does_not_bubble-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousemove");
+        sendMouseEvent(int_win, "log",     "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerenter_nohover-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerenter_nohover-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "log",     "mousemove");
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_after_pointercancel_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_after_pointercancel_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchcancel");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_after_pointerup_nohover-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_after_pointerup_nohover-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_descendant_over-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_descendant_over-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousemove");
+        sendMouseEvent(int_win, "target1", "mousedown");
+        sendMouseEvent(int_win, "target1", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_descendants-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_descendants-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "log",     "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_does_not_bubble-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_does_not_bubble-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_mouse-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousemove");
+        sendMouseEvent(int_win, "log",     "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_pen-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_pen-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown",  {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+        sendMouseEvent(int_win, "target0", "mouseup",    {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+        sendMouseEvent(int_win, "target0", "mouseleave", {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerleave_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerleave_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointermove-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointermove-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mousemove");
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointermove_pointertype-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointermove_pointertype-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerout-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerout-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerout_after_pointercancel_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerout_after_pointercancel_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchcancel");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerout_after_pointerup_nohover-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerout_after_pointerup_nohover-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerout_pen-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerout_pen-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown", {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+        sendMouseEvent(int_win, "target0", "mouseup",   {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+        sendMouseEvent(int_win, "target0", "mouseout",  {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerout_received_once-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerout_received_once-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerover-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerover-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousemove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointertype_mouse-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointertype_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointertype_pen-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointertype_pen-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown", {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+        sendMouseEvent(int_win, "target0", "mouseup",   {inputSource:MouseEvent.MOZ_SOURCE_PEN});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointertype_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointertype_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerup-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerup-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerup_isprimary_same_as_pointerdown-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_pointerup_pointertype-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_pointerup_pointertype-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+        sendMouseEvent(int_win, "target0", "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_releasepointercapture_events_to_original_target-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_releasepointercapture_events_to_original_target-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchmove");
+        sendTouchEvent(int_win, "target0", "touchend");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_releasepointercapture_invalid_pointerid-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_releasepointercapture_invalid_pointerid-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchmove");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_releasepointercapture_onpointercancel_touch-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_releasepointercapture_onpointercancel_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendTouchEvent(int_win, "target0", "touchstart");
+        sendTouchEvent(int_win, "target0", "touchcancel");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_releasepointercapture_onpointerup_mouse-manual.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_releasepointercapture_onpointerup_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "btnCapture", "pointerdown", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "btnCapture", "pointerup",   MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_setpointercapture_disconnected-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_setpointercapture_disconnected-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_setpointercapture_inactive_button_mouse-manual.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_setpointercapture_inactive_button_mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target1", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target1", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_setpointercapture_invalid_pointerid-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_setpointercapture_invalid_pointerid-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target0", "mousedown");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_setpointercapture_relatedtarget-manual.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_setpointercapture_relatedtarget-manual.html";
+      }
+      function executeTest(int_win) {
+        sendMouseEvent(int_win, "target1",    "mousemove");
+        sendMouseEvent(int_win, "btnCapture", "mousedown");
+        sendMouseEvent(int_win, "target1",    "mousemove");
+        sendMouseEvent(int_win, "target1",    "mouseup");
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-auto-css_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-auto-css_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-button-test_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-button-test_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-illegal.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-illegal.html";
+      }
+      function executeTest(int_win) {
+        // Function should be, but can be empty
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-none_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_child-none_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-inherit_parent-none_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-inherit_parent-none_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-keyboard-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-keyboard-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-mouse-manual.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-mouse-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointerdown", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "log",     "pointermove", MouseEvent.MOZ_SOURCE_MOUSE);
+        sendPointerEvent(int_win, "log",     "pointerup",   MouseEvent.MOZ_SOURCE_MOUSE);
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-none-css_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-none-css_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-css_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-pan-x-css_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-pan-x-pan-y_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-pan-x-pan-y_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-pan-y-css_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-pan-y-css_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-span-test_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-span-test_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-svg-test_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-svg-test_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-table-test_touch-manual.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-table-test_touch-manual.html";
+      }
+      function executeTest(int_win) {
+        sendPointerEvent(int_win, "target0", "pointermove", MouseEvent.MOZ_SOURCE_MOUSE, {button:-1});
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_pointerevent_touch-action-verification.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1000870
+-->
+  <head>
+    <meta charset="utf-8">
+    <title>Test for Bug 1000870</title>
+    <meta name="author" content="Maksim Lebedev" />
+    <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+    <script type="text/javascript" src="mochitest_support_external.js"></script>
+    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+    <script type="text/javascript">
+      SimpleTest.waitForExplicitFinish();
+      function startTest() {
+        var iframe = document.getElementById("testFrame");
+        iframe.src = "pointerevent_touch-action-verification.html";
+      }
+      function executeTest(int_win) {
+        // Function should be, but can be empty
+      }
+    </script>
+  </head>
+  <body>
+    <iframe id="testFrame" height="800" width="1000"></iframe>
+  </body>
+</html>