Skip to content

Commit 067491a

Browse files
authored
feat: menu bar test bench improvements (#7807)
1 parent d857eb6 commit 067491a

File tree

10 files changed

+290
-200
lines changed

10 files changed

+290
-200
lines changed

vaadin-menu-bar-flow-parent/vaadin-menu-bar-flow-integration-tests/src/test/java/com/vaadin/flow/component/menubar/tests/MenuBarClassNamesIT.java

Lines changed: 14 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.vaadin.flow.component.menubar.testbench.MenuBarButtonElement;
2626
import com.vaadin.flow.component.menubar.testbench.MenuBarElement;
2727
import com.vaadin.flow.component.menubar.testbench.MenuBarItemElement;
28+
import com.vaadin.flow.component.menubar.testbench.MenuBarSubMenuElement;
2829
import com.vaadin.flow.testutil.TestPath;
2930
import com.vaadin.tests.AbstractComponentIT;
3031

@@ -103,13 +104,10 @@ public void subMenuHasClassName_callRemoveClassName_classNameIsRemoved() {
103104
verifySubMenuItemClassNames(true,
104105
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
105106

106-
closeSubMenu();
107107
click("remove-sub-item-class-name");
108108

109109
verifySubMenuItemClassNames(false,
110110
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
111-
112-
closeSubMenu();
113111
}
114112

115113
@Test
@@ -120,21 +118,17 @@ public void subMenuItem_toggleMultipleClassNames_classNamesAreToggled() {
120118
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME,
121119
MenuBarClassNamesPage.SUB_ITEM_SECOND_CLASS_NAME);
122120

123-
closeSubMenu();
124121
click("add-remove-multiple-sub-item-classes");
125122

126123
verifySubMenuItemClassNames(false,
127124
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME,
128125
MenuBarClassNamesPage.SUB_ITEM_SECOND_CLASS_NAME);
129126

130-
closeSubMenu();
131127
click("add-remove-multiple-sub-item-classes");
132128

133129
verifySubMenuItemClassNames(true,
134130
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME,
135131
MenuBarClassNamesPage.SUB_ITEM_SECOND_CLASS_NAME);
136-
137-
closeSubMenu();
138132
}
139133

140134
@Test
@@ -144,13 +138,10 @@ public void subMenuItem_toggleSingleClassName_classNameIsToggled() {
144138
verifySubMenuItemClassNames(false,
145139
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
146140

147-
closeSubMenu();
148141
click("toggle-sub-item-class-name");
149142

150143
verifySubMenuItemClassNames(true,
151144
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
152-
153-
closeSubMenu();
154145
}
155146

156147
@Test
@@ -160,13 +151,10 @@ public void subMenuItem_classNamesAreToggleWithSet_classNamesAreToggled() {
160151
verifySubMenuItemClassNames(false,
161152
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
162153

163-
closeSubMenu();
164154
click("set-unset-sub-item-class-name");
165155

166156
verifySubMenuItemClassNames(true,
167157
MenuBarClassNamesPage.SUB_ITEM_FIRST_CLASS_NAME);
168-
169-
closeSubMenu();
170158
}
171159

172160
@Test
@@ -176,8 +164,9 @@ public void menuItemWithClassNameInOverflow_changeClassName_classNameIsChanged()
176164
waitForResizeObserver();
177165
menuBar.getOverflowButton().click();
178166
click("change-item2-class-name");
179-
menuBar.getOverflowButton().click();
180-
MenuBarItemElement menuItem = menuBar.getSubMenuItems().get(0);
167+
MenuBarSubMenuElement subMenu = menuBar.getOverflowButton()
168+
.openSubMenu();
169+
MenuBarItemElement menuItem = subMenu.getMenuItems().get(0);
181170
Assert.assertEquals(
182171
Set.of(MenuBarClassNamesPage.MENU_ITEM_SECOND_CLASS_NAME),
183172
menuItem.getClassNames());
@@ -188,10 +177,11 @@ public void menuItemWithClassNameInOverflow_removeClassName_classNameIsRemoved()
188177
click("set-width");
189178
click("set-item2-class-name");
190179
waitForResizeObserver();
191-
menuBar.getOverflowButton().click();
180+
menuBar.getOverflowButton().openSubMenu();
192181
click("remove-item2-class-name");
193-
menuBar.getOverflowButton().click();
194-
MenuBarItemElement menuItem = menuBar.getSubMenuItems().get(0);
182+
MenuBarSubMenuElement subMenu = menuBar.getOverflowButton()
183+
.openSubMenu();
184+
MenuBarItemElement menuItem = subMenu.getMenuItems().get(0);
195185
Assert.assertEquals(Set.of(), menuItem.getClassNames());
196186
}
197187

@@ -218,24 +208,6 @@ private void click(String id) {
218208
findElement(By.id(id)).click();
219209
}
220210

221-
public void closeSubMenu() {
222-
$("body").first().click();
223-
verifyClosed();
224-
}
225-
226-
private void openSubMenu() {
227-
menuBar.getButtons().get(0).click();
228-
verifyOpened();
229-
}
230-
231-
public void verifyClosed() {
232-
Assert.assertFalse(menuBar.getSubMenu().getPropertyBoolean("opened"));
233-
}
234-
235-
public void verifyOpened() {
236-
Assert.assertTrue(menuBar.getSubMenu().getPropertyBoolean("opened"));
237-
}
238-
239211
private void waitForResizeObserver() {
240212
getCommandExecutor().getDriver().executeAsyncScript(
241213
"var callback = arguments[arguments.length - 1];"
@@ -244,15 +216,18 @@ private void waitForResizeObserver() {
244216

245217
private void verifySubMenuItemClassNames(boolean containsClassNames,
246218
String... classNames) {
247-
openSubMenu();
248-
MenuBarItemElement subMenuItem = menuBar.getSubMenuItems().get(2);
249-
var subMenuItemClassNames = subMenuItem.getClassNames();
219+
MenuBarSubMenuElement subMenu = menuBar.getButtons().get(0)
220+
.openSubMenu();
221+
MenuBarItemElement subMenuItem = subMenu.getMenuItems().get(2);
222+
Set<String> subMenuItemClassNames = subMenuItem.getClassNames();
250223
for (String className : classNames) {
251224
if (containsClassNames) {
252225
Assert.assertTrue(subMenuItemClassNames.contains(className));
253226
} else {
254227
Assert.assertFalse(subMenuItemClassNames.contains(className));
255228
}
256229
}
230+
$("body").first().click();
231+
subMenu.waitUntilClosed();
257232
}
258233
}

vaadin-menu-bar-flow-parent/vaadin-menu-bar-flow-integration-tests/src/test/java/com/vaadin/flow/component/menubar/tests/MenuBarCloseIT.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.junit.Test;
2121

2222
import com.vaadin.flow.component.menubar.testbench.MenuBarElement;
23+
import com.vaadin.flow.component.menubar.testbench.MenuBarSubMenuElement;
2324
import com.vaadin.flow.testutil.TestPath;
2425
import com.vaadin.tests.AbstractComponentIT;
2526

@@ -34,12 +35,13 @@ public void init() {
3435
@Test
3536
public void clickingCloseButton_closesSubmenu() {
3637
MenuBarElement menuBar = $(MenuBarElement.class).first();
37-
menuBar.getButtons().get(0).click();
38+
MenuBarSubMenuElement subMenu = menuBar.getButtons().get(0)
39+
.openSubMenu();
3840

39-
Assert.assertTrue(menuBar.getSubMenu().getPropertyBoolean("opened"));
41+
Assert.assertTrue(subMenu.isOpen());
4042

4143
clickElementWithJs("close-button");
4244

43-
Assert.assertFalse(menuBar.getSubMenu().getPropertyBoolean("opened"));
45+
Assert.assertFalse(subMenu.isOpen());
4446
}
4547
}

vaadin-menu-bar-flow-parent/vaadin-menu-bar-flow-integration-tests/src/test/java/com/vaadin/flow/component/menubar/tests/MenuBarDetachReattachIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ public void init() {
4040
public void detach_reattach_noClientErrors_clientCodeFunctional() {
4141
click("toggle-attached");
4242
click("toggle-attached");
43-
waitForElementPresent(By.tagName("vaadin-menu-bar"));
43+
menuBar = $(MenuBarElement.class).waitForFirst();
4444
checkLogsForErrors();
4545

4646
// Verify client-code with setVisible functionality:
47-
menuBar = $(MenuBarElement.class).first();
4847
click("toggle-item-2-visibility");
4948
assertButtonContents("item 1");
5049
}

0 commit comments

Comments
 (0)