Fix Flaky tests

These tests where failing sometimes in our CI, because centerOnScreen()
was invoked which asks the window manager to move the window, but does
not wait for the event's completion. The solution is to do all that
*before* the initial qWaitForWindowActive().

Fixes: QTBUG-73128
Change-Id: I06c1f85d5ff9657dccab50f29084f7624cd7e194
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
Dimitrios Apostolou 2019-07-18 19:02:40 +02:00
parent ce7c431fb2
commit 1d06eb3f82
2 changed files with 23 additions and 23 deletions

View File

@ -151,10 +151,10 @@ void tst_QQuickMenu::mouse()
QQuickApplicationHelper helper(this, QLatin1String("applicationwindow.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
menu->open();
@ -270,12 +270,12 @@ void tst_QQuickMenu::contextMenuKeyboard()
QQuickApplicationHelper helper(this, QLatin1String("applicationwindow.qml"));
QQuickApplicationWindow *window = helper.appWindow;
centerOnScreen(window);
moveMouseAway(window);
window->show();
window->requestActivate();
QVERIFY(QTest::qWaitForWindowActive(window));
QVERIFY(QGuiApplication::focusWindow() == window);
centerOnScreen(window);
moveMouseAway(window);
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
QCOMPARE(menu->currentIndex(), -1);
@ -453,12 +453,12 @@ void tst_QQuickMenu::disabledMenuItemKeyNavigation()
QQuickApplicationHelper helper(this, QLatin1String("disabledMenuItemKeyNavigation.qml"));
QQuickApplicationWindow *window = helper.appWindow;
centerOnScreen(window);
moveMouseAway(window);
window->show();
window->requestActivate();
QVERIFY(QTest::qWaitForWindowActive(window));
QVERIFY(QGuiApplication::focusWindow() == window);
centerOnScreen(window);
moveMouseAway(window);
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
QCOMPARE(menu->currentIndex(), -1);
@ -610,10 +610,10 @@ void tst_QQuickMenu::menuSeparator()
{
QQuickApplicationHelper helper(this, QLatin1String("menuSeparator.qml"));
QQuickWindow *window = helper.window;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
QVERIFY(menu);
@ -752,10 +752,10 @@ void tst_QQuickMenu::popup()
{
QQuickApplicationHelper helper(this, QLatin1String("popup.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickMenu *menu = window->property("menu").value<QQuickMenu *>();
QVERIFY(menu);
@ -1039,10 +1039,10 @@ void tst_QQuickMenu::subMenuMouse()
QQuickApplicationHelper helper(this, QLatin1String("subMenus.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickMenu *mainMenu = window->property("mainMenu").value<QQuickMenu *>();
QVERIFY(mainMenu);
@ -1145,10 +1145,10 @@ void tst_QQuickMenu::subMenuDisabledMouse()
QQuickApplicationHelper helper(this, QLatin1String("subMenuDisabled.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickMenu *mainMenu = window->property("mainMenu").value<QQuickMenu *>();
QVERIFY(mainMenu);
@ -1207,10 +1207,10 @@ void tst_QQuickMenu::subMenuKeyboard()
QQuickApplicationHelper helper(this, QLatin1String("subMenus.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
if (mirrored)
window->setLocale(QLocale("ar_EG"));
@ -1329,10 +1329,10 @@ void tst_QQuickMenu::subMenuDisabledKeyboard()
QQuickApplicationHelper helper(this, QLatin1String("subMenuDisabled.qml"));
QQuickApplicationWindow *window = helper.appWindow;
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
if (mirrored)
window->setLocale(QLocale("ar_EG"));
@ -1417,10 +1417,10 @@ void tst_QQuickMenu::subMenuPosition()
if (flip)
window->setWidth(window->width() - mainMenu->width());
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
centerOnScreen(window);
moveMouseAway(window);
window->show();
QVERIFY(QTest::qWaitForWindowActive(window));
if (mirrored)
window->setLocale(QLocale("ar_EG"));

View File

@ -85,10 +85,10 @@ void tst_qquickmenubar::mouse()
QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0)));
QVERIFY(window);
QVERIFY(QTest::qWaitForWindowActive(window.data()));
centerOnScreen(window.data());
moveMouseAway(window.data());
QVERIFY(QTest::qWaitForWindowActive(window.data()));
QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>();
QVERIFY(menuBar);
@ -224,10 +224,10 @@ void tst_qquickmenubar::keys()
QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0)));
QVERIFY(window);
QVERIFY(QTest::qWaitForWindowActive(window.data()));
centerOnScreen(window.data());
moveMouseAway(window.data());
QVERIFY(QTest::qWaitForWindowActive(window.data()));
QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>();
QVERIFY(menuBar);
@ -412,10 +412,10 @@ void tst_qquickmenubar::mnemonics()
QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0)));
QVERIFY(window);
QVERIFY(QTest::qWaitForWindowActive(window.data()));
centerOnScreen(window.data());
moveMouseAway(window.data());
QVERIFY(QTest::qWaitForWindowActive(window.data()));
QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>();
QVERIFY(menuBar);