aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2021-06-07 10:43:56 +0200
committerMitch Curtis <mitch.curtis@qt.io>2021-06-09 11:22:02 +0200
commita01fbae26559adadc9028b16dc8f6e7acce61495 (patch)
tree1dd785c797fe2378a96db98f1634aa38c9fc43bf /tests
parent74ab735615b74d3f91748f069d9f24b5ab73adbf (diff)
Stabilize tst_qquickpopup
- Give the window system some time to change the cursor - Wait for popups to be properly opened and closed Task-number: QTBUG-94251 Change-Id: Ie380312daddcb2ee95f337c321ca2724c3b9f182 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qquickpopup/data/invisibleToolTipOpen.qml2
-rw-r--r--tests/auto/qquickpopup/tst_qquickpopup.cpp53
2 files changed, 33 insertions, 22 deletions
diff --git a/tests/auto/qquickpopup/data/invisibleToolTipOpen.qml b/tests/auto/qquickpopup/data/invisibleToolTipOpen.qml
index aaed154b..6607dc6f 100644
--- a/tests/auto/qquickpopup/data/invisibleToolTipOpen.qml
+++ b/tests/auto/qquickpopup/data/invisibleToolTipOpen.qml
@@ -9,13 +9,11 @@ Window {
property alias loader: loader
MouseArea {
id: mouseArea
- property bool isToolTipVisible: false
width: 200
height: 200
hoverEnabled: true
ToolTip.text: "static tooltip"
ToolTip.visible: containsMouse
- ToolTip.onVisibleChanged: isToolTipVisible = ToolTip.visible
}
Loader {
id: loader
diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp
index a0dc1d88..7f36da20 100644
--- a/tests/auto/qquickpopup/tst_qquickpopup.cpp
+++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp
@@ -54,6 +54,7 @@
#include <QtQuickTemplates2/private/qquickslider_p.h>
#include <QtQuickTemplates2/private/qquickstackview_p.h>
#include <QtQuickTemplates2/private/qquickpopup_p_p.h>
+#include <QtQuickTemplates2/private/qquicktooltip_p.h>
using namespace QQuickVisualTestUtil;
@@ -132,7 +133,7 @@ void tst_QQuickPopup::visible()
QQuickItem *popupItem = popup->popupItem();
popup->open();
- QVERIFY(popup->isVisible());
+ QTRY_VERIFY(popup->isOpened());
QQuickOverlay *overlay = QQuickOverlay::overlay(window);
QVERIFY(overlay);
@@ -143,7 +144,7 @@ void tst_QQuickPopup::visible()
QVERIFY(!overlay->childItems().contains(popupItem));
popup->setVisible(true);
- QVERIFY(popup->isVisible());
+ QTRY_VERIFY(popup->isOpened());
QVERIFY(overlay->childItems().contains(popupItem));
popup->setVisible(false);
@@ -305,7 +306,7 @@ void tst_QQuickPopup::overlay()
popup->open();
QVERIFY(popup->isVisible());
QVERIFY(overlay->isVisible());
-
+ QTRY_VERIFY(popup->isOpened());
QTest::touchEvent(window, device.data()).press(0, QPoint(1, 1));
QCOMPARE(overlayPressedSignal.count(), ++overlayPressCount);
@@ -327,6 +328,7 @@ void tst_QQuickPopup::overlay()
QVERIFY(popup->isVisible());
QVERIFY(overlay->isVisible());
QVERIFY(!button->isPressed());
+ QTRY_VERIFY(popup->isOpened());
QTest::touchEvent(window, device.data()).press(0, button->mapToScene(QPointF(1, 1)).toPoint());
QVERIFY(popup->isVisible());
@@ -387,8 +389,8 @@ void tst_QQuickPopup::zOrder()
// on top and must be closed first, even if the other popup was opened last
popup2->open();
popup->open();
- QVERIFY(popup2->isVisible());
- QVERIFY(popup->isVisible());
+ QTRY_VERIFY(popup2->isOpened());
+ QTRY_VERIFY(popup->isOpened());
QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
QTRY_VERIFY(!popup2->isVisible());
@@ -897,9 +899,11 @@ void tst_QQuickPopup::nested()
modalPopup->open();
QCOMPARE(modalPopup->isVisible(), true);
+ QTRY_COMPARE(modalPopup->isOpened(), true);
modelessPopup->open();
QCOMPARE(modelessPopup->isVisible(), true);
+ QTRY_COMPARE(modelessPopup->isOpened(), true);
// click outside the modeless popup on the top, but inside the modal popup below
QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(150, 150));
@@ -986,12 +990,12 @@ void tst_QQuickPopup::cursorShape()
const QPoint textFieldPos(popup->x() - 10, textField->height() / 2);
QVERIFY(textField->contains(textField->mapFromScene(textFieldPos)));
QTest::mouseMove(window, textFieldPos);
- QCOMPARE(window->cursor().shape(), textField->cursor().shape());
+ QTRY_COMPARE(window->cursor().shape(), textField->cursor().shape());
// Move the mouse over the popup where it overlaps with the text field.
const QPoint textFieldOverlapPos(popup->x() + 10, textField->height() / 2);
QTest::mouseMove(window, textFieldOverlapPos);
- QCOMPARE(window->cursor().shape(), popup->popupItem()->cursor().shape());
+ QTRY_COMPARE(window->cursor().shape(), popup->popupItem()->cursor().shape());
popup->close();
QTRY_VERIFY(!popup->isVisible());
@@ -1045,7 +1049,7 @@ void tst_QQuickPopup::closeOnEscapeWithNestedPopups()
QQuickPopup *optionsMenu = window->findChild<QQuickPopup*>("optionsMenu");
QVERIFY(optionsMenu);
- QTRY_VERIFY(optionsMenu->isVisible());
+ QTRY_VERIFY(optionsMenu->isOpened());
QQuickItem *settingsMenuItem = window->findChild<QQuickItem*>("settingsMenuItem");
QVERIFY(settingsMenuItem);
@@ -1057,7 +1061,7 @@ void tst_QQuickPopup::closeOnEscapeWithNestedPopups()
QQuickPopup *settingsDialog = window->contentItem()->findChild<QQuickPopup*>("settingsDialog");
QVERIFY(settingsDialog);
- QTRY_VERIFY(settingsDialog->isVisible());
+ QTRY_VERIFY(settingsDialog->isOpened());
QQuickComboBox *comboBox = window->contentItem()->findChild<QQuickComboBox*>("comboBox");
QVERIFY(comboBox);
@@ -1066,7 +1070,7 @@ void tst_QQuickPopup::closeOnEscapeWithNestedPopups()
const QPoint comboBoxCenter = comboBox->mapToScene(
QPointF(comboBox->width() / 2, comboBox->height() / 2)).toPoint();
QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, comboBoxCenter);
- QTRY_VERIFY(comboBox->popup()->isVisible());
+ QTRY_VERIFY(comboBox->popup()->isOpened());
// Close the combo box popup with the escape key. The settings dialog should still be visible.
QTest::keyClick(window, Qt::Key_Escape);
@@ -1149,7 +1153,7 @@ void tst_QQuickPopup::orientation()
QQuickPopup *popup = window->property("popup").value<QQuickPopup*>();
QVERIFY(popup);
popup->open();
-
+ QTRY_VERIFY(popup->isOpened());
QCOMPARE(popup->popupItem()->position(), position);
}
@@ -1337,8 +1341,9 @@ void tst_QQuickPopup::tabFence()
QQuickPopup *popup = window->property("dialog").value<QQuickPopup*>();
QVERIFY(popup);
- popup->open();
popup->setModal(true);
+ popup->open();
+ QTRY_VERIFY(popup->isOpened());
QQuickButton *outsideButton1 = window->property("outsideButton1").value<QQuickButton*>();
QVERIFY(outsideButton1);
@@ -1393,6 +1398,11 @@ void tst_QQuickPopup::invisibleToolTipOpen()
QQuickItem *mouseArea = qvariant_cast<QQuickItem *>(window->property("mouseArea"));
QVERIFY(mouseArea);
+ auto toolTipAttached = qobject_cast<QQuickToolTipAttached*>(
+ qmlAttachedPropertiesObject<QQuickToolTip>(mouseArea, false));
+ QVERIFY(toolTipAttached);
+ QQuickPopup *toolTip = toolTipAttached->toolTip();
+ QVERIFY(toolTip);
QObject *loader = qvariant_cast<QObject *>(window->property("loader"));
QVERIFY(loader);
@@ -1400,7 +1410,7 @@ void tst_QQuickPopup::invisibleToolTipOpen()
// As an added bonus, this is also slightly more realistic. :D
QTest::mouseMove(window, QPoint(mouseArea->width() / 2 - 1, mouseArea->height() / 2 - 1));
QTest::mouseMove(window, QPoint(mouseArea->width() / 2, mouseArea->height() / 2));
- QTRY_VERIFY(mouseArea->property("isToolTipVisible").toBool());
+ QTRY_VERIFY(toolTip->isOpened());
QSignalSpy componentLoadedSpy(loader, SIGNAL(loaded()));
QVERIFY(componentLoadedSpy.isValid());
@@ -1408,7 +1418,7 @@ void tst_QQuickPopup::invisibleToolTipOpen()
loader->setProperty("active", true);
QTRY_COMPARE(componentLoadedSpy.count(), 1);
- QTRY_VERIFY(mouseArea->property("isToolTipVisible").toBool());
+ QTRY_VERIFY(toolTip->isVisible());
}
void tst_QQuickPopup::centerInOverlayWithinStackViewItem()
@@ -1436,17 +1446,20 @@ void tst_QQuickPopup::destroyDuringExitTransition()
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
- QPointer<QQuickPopup> dialog2 = window->property("dialog2").value<QQuickPopup*>();
- QVERIFY(dialog2);
- QTRY_COMPARE(dialog2->isVisible(), true);
+ {
+ QPointer<QQuickPopup> dialog2 = window->property("dialog2").value<QQuickPopup*>();
+ QVERIFY(dialog2);
+ QTRY_COMPARE(dialog2->isOpened(), true);
- // Close the second dialog, destroying it before its exit transition can finish.
- QTest::keyClick(window, Qt::Key_Escape);
- QTRY_VERIFY(!dialog2);
+ // Close the second dialog, destroying it before its exit transition can finish.
+ QTest::keyClick(window, Qt::Key_Escape);
+ QTRY_VERIFY(!dialog2);
+ }
// Events should go through to the dialog underneath.
QQuickPopup *dialog1 = window->property("dialog1").value<QQuickPopup*>();
QVERIFY(dialog1);
+ QTRY_COMPARE(dialog1->isOpened(), true);
QQuickButton *button = dialog1->property("button").value<QQuickButton*>();
QVERIFY(button);
const auto buttonClickPos = button->mapToScene(QPointF(button->width() / 2, button->height() / 2)).toPoint();