summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2021-01-15 14:43:43 +0100
committerKirill Burtsev <kirill.burtsev@qt.io>2021-01-15 17:30:19 +0100
commitb0b16fba126ca62949c5e93b2b64f2eec6b9e9b9 (patch)
treeb5419f67ced91860d9fcbf1ffbda12fa8d1fd1e8 /tests
parent1f40b1010cf158cb1782b31dba191ac76b3fcdbd (diff)
Touch input test: detect and check scrolling on each input
Scrolling is momentum based and with smooth scrolling handling may lead to multiple scroll position offset changes for series of touch event. Moreover, it's not certain that offset position fetched through js after input is final position, so check it on each scrolling step. Change-Id: I793b9c237b024b5f68cdd5662a91d72b21bb64c4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/touchinput/tst_touchinput.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/auto/widgets/touchinput/tst_touchinput.cpp b/tests/auto/widgets/touchinput/tst_touchinput.cpp
index d9381153d..3c7d8ccbb 100644
--- a/tests/auto/widgets/touchinput/tst_touchinput.cpp
+++ b/tests/auto/widgets/touchinput/tst_touchinput.cpp
@@ -68,10 +68,12 @@ private:
QTest::touchEvent(target, s_touchDevice).press(42, p, target);
+ QSignalSpy spy(view.page(), &QWebEnginePage::scrollPositionChanged);
for (int i = 0; i < 3; ++i) {
down ? p -= QPoint(5, 15) : p += QPoint(5, 15);
QTest::qWait(100); // too fast and events are recognized as fling gesture
QTest::touchEvent(target, s_touchDevice).move(42, p, target);
+ spy.wait();
}
QTest::touchEvent(target, s_touchDevice).release(42, p, target);
@@ -114,6 +116,11 @@ private:
return position ? (*position = p) : p;
}
+ int pageScrollPosition() {
+ // this one is updated later in page in asynchronous way
+ return qRound(view.page()->scrollPosition().y());
+ }
+
double getScaleFactor(double *scale = nullptr) {
double s = evaluateJavaScriptSync(view.page(), "window.visualViewport.scale").toDouble();
return scale ? (*scale = s) : s;
@@ -155,6 +162,7 @@ void TouchInputTest::cleanup()
evaluateJavaScriptSync(view.page(), "if (document.activeElement) document.activeElement.blur()");
evaluateJavaScriptSync(view.page(), "window.scrollTo(0, 0)");
QTRY_COMPARE(getScrollPosition(), 0);
+ QTRY_COMPARE(pageScrollPosition(), 0);
}
void TouchInputTest::touchTap()