on xenial help sign in
Fix MenuBar TestCase failures

* Set modelData to null on creation to ensure the first test gets init * Move the mouse to (0,0) before starting the test... The mouse not getting reset caused all sorts of errors * Clear aboutToShowCalledSpy * In test_disabledTopLevel and test_firstDisabled, wait for events to finish to avoid racing * Add an XFAIL test to alert to incorrect behavior when the mouse hangs over the first menu item it clicks

commit8cb81fa01a66db3899938bdc3c8e7f4abd56b36b authorDalton Durst <dalton@ubports.com> dateThu 9 May 2019, 13:07 (7 years ago) parent912629f
1 file changed+40−12
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+40−12
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+40−12
@@ -65,7 +65,7 @@ Item {
6565
6666 unityMenuModel: UnityMenuModel {
6767 id: menuBackend
68− modelData: appMenuData.generateTestData(10,5,2,3)
68+ modelData: null
6969 }
7070 }
7171 }
@@ -88,9 +88,11 @@ Item {
8888 when: windowShown
8989
9090 function init() {
91+ mouseMove(root, 0, 0);
9192 menuBar.dismiss();
92− menuBackend.modelData = appMenuData.generateTestData(5,5,2,3, "menu")
93+ menuBackend.modelData = appMenuData.generateTestData(5,5,2,3, "menu");
9394 activatedSpy.clear();
95+ aboutToShowCalledSpy.clear();
9496 waitForRendering(menuBar);
9597 }
9698
@@ -233,21 +235,24 @@ Item {
233235
234236 var priv = findInvisibleChild(menuBar, "d");
235237
236− var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
237− var menuItem2 = findChild(menuBar, "menuBar-item2"); verify(menuItem2);
238+ var menuItem0 = findChild(menuBar, "menuBar-item0");
239+ verify(menuItem0);
240+ var menuItem2 = findChild(menuBar, "menuBar-item2");
241+ verify(menuItem2);
238242
239243 menuItem0.show();
240− compare(menuItem0.popupVisible, true, "Popup should be visible");
244+ waitForRendering(menuItem0);
245+ tryCompare(menuItem0, "popupVisible", true);
241246
242247 keyClick(Qt.Key_Right);
243− compare(priv.currentItem, menuItem2);
244− compare(menuItem2.popupVisible, true);
245− compare(menuItem0.popupVisible, false);
248+ tryCompare(priv, "currentItem", menuItem2);
249+ tryCompare(menuItem2, "popupVisible", true);
250+ tryCompare(menuItem0, "popupVisible", false);
246251
247252 keyClick(Qt.Key_Left);
248− compare(priv.currentItem, menuItem0);
249− compare(menuItem2.popupVisible, false);
250− compare(menuItem0.popupVisible, true);
253+ tryCompare(priv, "currentItem", menuItem0);
254+ tryCompare(menuItem2, "popupVisible", false);
255+ tryCompare(menuItem0, "popupVisible", true);
251256 }
252257
253258 function test_menuActivateClosesMenu() {
@@ -313,6 +318,28 @@ Item {
313318 compare(priv.currentItem, null, "CurrentItem should be null");
314319 }
315320
321+ function test_mouseDoesNotHoldMenuOpen() {
322+ // The user may want to click on a menu to open it then switch to
323+ // keyboard navigation. Ensure that this doesn't keep the original
324+ // menu held open.
325+
326+ var priv = findInvisibleChild(menuBar, "d");
327+ var menuItem0 = findChild(menuBar, "menuBar-item0");
328+ var menuItem1 = findChild(menuBar, "menuBar-item1");
329+
330+ mouseClick(menuItem0);
331+ // This only tests the problem behavior if the mouse is moved before
332+ // pressing the arrow keys (which almost always happens with users)
333+ mouseMove(menuItem0, 1, 1, 0);
334+ tryCompare(priv, "currentItem", menuItem0);
335+ tryCompare(menuItem0, "popupVisible", true);
336+
337+ expectFail("", "FIXME: Clicking a menu item then moving the mouse prevents keyboard navigation");
338+ keyClick(Qt.Key_Right);
339+ tryCompare(priv, "currentItem", menuItem1);
340+ tryCompare(menuItem1, "popupVisible", true);
341+ }
342+
316343 function test_overfow() {
317344 menuBackend.modelData = appMenuData.generateTestData(5,2,0,0,"menu");
318345
@@ -381,7 +408,8 @@ Item {
381408 menuItem.show();
382409
383410 // waits for item to be created so the keyclick actually works
384− findChild(menuBar, "menuBar-item0-menu-item1-actionItem");
411+ var submenuContainingDisabledItem = findChild(menuBar, "menuBar-item0-menu-item1-actionItem");
412+ waitForRendering(submenuContainingDisabledItem);
385413
386414 keyClick(Qt.Key_Down);
387415 keyClick(Qt.Key_Down);