Use testdriver Action API to automate wpt tests with two touch fingers
Use testdriver Action API to automate wpt tests with two touch fingers,
pointerevent_touch-action_two-finger_interaction.html.
Bug: 606367
Change-Id: Ia5a0977b3bda9c506dae99c7bfe500fe2a887cad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1839017
Reviewed-by: Navid Zolghadr <nzolghadr@chromium.org>
Commit-Queue: Lan Wei <lanwei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#703867}
diff --git a/pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html b/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html
similarity index 61%
rename from pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html
rename to pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html
index 3537e0e..c33aa20 100644
--- a/pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html
+++ b/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html
@@ -9,16 +9,38 @@
<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/testdriver.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
<script type="text/javascript" src="../pointerevent_support.js"></script>
<script type="text/javascript">
var event_log = [];
var active_pointers = 0;
+ var actions_promise;
function resetTestState() {
event_log = [];
active_pointers = 0;
}
+ function twoFingerDrag(target) {
+ return new test_driver.Actions()
+ .addPointer("touchPointer1", "touch")
+ .addPointer("touchPointer2", "touch")
+ .pointerMove(0, 0, {origin: target, sourceName: "touchPointer1"})
+ .pointerMove(10, 0, {origin: target, sourceName: "touchPointer2"})
+ .pointerDown({sourceName: "touchPointer1"})
+ .pointerDown({sourceName: "touchPointer2"})
+ .pointerMove(0, 10, {origin: target, sourceName: "touchPointer1"})
+ .pointerMove(10, 10, {origin: target, sourceName: "touchPointer2"})
+ .pointerMove(0, 20, {origin: target, sourceName: "touchPointer1"})
+ .pointerMove(10, 20, {origin: target, sourceName: "touchPointer2"})
+ .pause(100)
+ .pointerUp({sourceName: "touchPointer1"})
+ .pointerUp({sourceName: "touchPointer2"})
+ .send();
+ }
+
function run() {
var test_pointer_events = [
setup_pointerevent_test("two-finger pan on 'touch-action: pan-x pan-y'", ["touch"]),
@@ -29,18 +51,29 @@
"pointerdown@grey, pointerdown@grey, pointercancel@grey, pointercancel@grey"
];
var current_test_index = 0;
+ var black = document.getElementById("black");
+ var grey = document.getElementById("grey");
+ var done = document.getElementById("done");
- on_event(document.getElementById("done"), "click", function() {
+ on_event(done, "click", function() {
test_pointer_events[current_test_index].step(function () {
assert_equals(active_pointers, 0);
assert_equals(event_log.join(", "), expected_events[current_test_index]);
});
event_log = [];
- test_pointer_events[current_test_index++].done();
+ // Make sure the test finishes after all the input actions are completed.
+ actions_promise.then( () => {
+ test_pointer_events[current_test_index++].done();
+ if (current_test_index < 2) {
+ actions_promise = twoFingerDrag(grey).then(function() {
+ return clickInTarget("touch", done);
+ });
+ }
+ });
});
- var targets = [document.getElementById("black"), document.getElementById("grey")];
+ var targets = [black, grey];
["pointerdown", "pointerup", "pointercancel"].forEach(function(eventName) {
targets.forEach(function(target){
@@ -49,13 +82,17 @@
if (event.type == "pointerdown") {
active_pointers++;
-
} else {
active_pointers--;
}
});
});
});
+
+ // Inject touch inputs.
+ actions_promise = twoFingerDrag(black).then(function() {
+ return clickInTarget("touch", done);
+ });
}
</script>
<style>