diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-01-15 14:43:43 +0100 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-01-15 17:30:19 +0100 |
commit | b0b16fba126ca62949c5e93b2b64f2eec6b9e9b9 (patch) | |
tree | b5419f67ced91860d9fcbf1ffbda12fa8d1fd1e8 | |
parent | 1f40b1010cf158cb1782b31dba191ac76b3fcdbd (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>
-rw-r--r-- | tests/auto/widgets/touchinput/tst_touchinput.cpp | 8 |
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() |