Skip to content

Commit 700d3f5

Browse files
feat!: context menu test bench improvements (#7801)
* feat: context menu testbench improvements * deprecate ContextMenuOverlayElement --------- Co-authored-by: Serhii Kulykov <iamkulykov@gmail.com>
1 parent 39c34ec commit 700d3f5

File tree

7 files changed

+218
-167
lines changed

7 files changed

+218
-167
lines changed

vaadin-context-menu-flow-parent/vaadin-context-menu-flow-integration-tests/src/test/java/com/vaadin/flow/component/contextmenu/it/AbstractContextMenuIT.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,4 @@ protected TestBenchElement getMenuContent(ContextMenuElement menu) {
102102
return wrap(TestBenchElement.class,
103103
menu.findElement(By.cssSelector(":scope > [slot='overlay']")));
104104
}
105-
106-
protected void openSubMenu(ContextMenuItemElement parentItem) {
107-
parentItem.openSubMenu();
108-
}
109105
}

vaadin-context-menu-flow-parent/vaadin-context-menu-flow-integration-tests/src/test/java/com/vaadin/flow/component/contextmenu/it/ContextMenuCloseIT.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,53 +21,57 @@
2121
import org.openqa.selenium.By;
2222
import org.openqa.selenium.WebElement;
2323

24+
import com.vaadin.flow.component.contextmenu.testbench.ContextMenuElement;
2425
import com.vaadin.flow.testutil.TestPath;
26+
import com.vaadin.testbench.TestBenchElement;
2527

2628
@TestPath("vaadin-context-menu/close")
2729
public class ContextMenuCloseIT extends AbstractContextMenuIT {
2830

31+
private TestBenchElement target;
32+
2933
@Before
3034
public void init() {
3135
open();
36+
target = $(TestBenchElement.class).id("context-menu-target");
3237
}
3338

3439
@Test
3540
public void closeOnClick_openedChangeListener_isFromClientTrue() {
36-
rightClickOn("context-menu-target");
37-
verifyOpened();
41+
ContextMenuElement contextMenu = ContextMenuElement
42+
.openByRightClick(target);
3843

3944
clickBody();
40-
verifyClosedAndRemoved();
45+
contextMenu.waitUntilClosed();
4146

4247
WebElement message = findElement(By.id("closed-message"));
4348
Assert.assertEquals("Closed from client: true", message.getText());
4449
}
4550

4651
@Test
4752
public void closeProgrammatically_openedChangeListener_isFromClientFalse() {
48-
rightClickOn("context-menu-target");
49-
verifyOpened();
53+
ContextMenuElement contextMenu = ContextMenuElement
54+
.openByRightClick(target);
5055

5156
leftClickOn("close-menu");
52-
verifyClosedAndRemoved();
57+
contextMenu.waitUntilClosed();
5358

5459
WebElement message = findElement(By.id("closed-message"));
5560
Assert.assertEquals("Closed from client: false", message.getText());
5661
}
5762

5863
@Test
5964
public void reopen_closeOnClick_openedChangeListener_isFromClientTrue() {
60-
rightClickOn("context-menu-target");
61-
verifyOpened();
65+
ContextMenuElement contextMenu = ContextMenuElement
66+
.openByRightClick(target);
6267

6368
leftClickOn("close-menu");
64-
verifyClosedAndRemoved();
69+
contextMenu.waitUntilClosed();
6570

66-
rightClickOn("context-menu-target");
67-
verifyOpened();
71+
contextMenu = ContextMenuElement.openByRightClick(target);
6872

6973
clickBody();
70-
verifyClosedAndRemoved();
74+
contextMenu.waitUntilClosed();
7175

7276
WebElement message = findElement(By.id("closed-message"));
7377
Assert.assertEquals("Closed from client: true", message.getText());

vaadin-context-menu-flow-parent/vaadin-context-menu-flow-integration-tests/src/test/java/com/vaadin/flow/component/contextmenu/it/ContextMenuDemoIT.java

Lines changed: 50 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -42,40 +42,38 @@ public void init() {
4242

4343
@Test
4444
public void openAndCloseBasicContextMenu_contentIsRendered() {
45-
verifyClosedAndRemoved();
46-
47-
rightClickOn("basic-context-menu-target");
48-
verifyOpened();
45+
ContextMenuElement contextMenu = ContextMenuElement
46+
.openByRightClick($("*").id("basic-context-menu-target"));
47+
List<ContextMenuItemElement> menuItems = contextMenu.getMenuItems();
4948

5049
Assert.assertArrayEquals(new String[] { "First menu item",
5150
"Second menu item", "Disabled menu item" },
52-
getMenuItemCaptions());
51+
getMenuItemCaptions(menuItems));
5352

5453
Assert.assertFalse("The last item is supposed to be disabled",
55-
getMenuItems().get(2).isEnabled());
54+
menuItems.get(2).isEnabled());
5655

57-
$("body").first().click();
58-
verifyClosedAndRemoved();
56+
clickBody();
57+
contextMenu.waitUntilClosed();
5958
}
6059

6160
@Test
6261
public void openAndCloseContextMenuWithComponents_contentIsRendered() {
63-
verifyClosedAndRemoved();
64-
65-
rightClickOn("context-menu-with-components-target");
66-
verifyOpened();
62+
ContextMenuElement contextMenu = ContextMenuElement.openByRightClick(
63+
$("*").id("context-menu-with-components-target"));
64+
List<ContextMenuItemElement> menuItems = contextMenu.getMenuItems();
6765

6866
Assert.assertArrayEquals(new String[] { "First menu item", "Checkbox" },
69-
getMenuItemCaptions());
70-
Assert.assertTrue(getMenuContent().$("hr").exists());
71-
WebElement span = getMenuContent().$("span").first();
67+
getMenuItemCaptions(menuItems));
68+
Assert.assertTrue(getMenuContent(contextMenu).$("hr").exists());
69+
WebElement span = getMenuContent(contextMenu).$("span").first();
7270
Assert.assertEquals("This is not a menu item", span.getText());
7371

74-
WebElement checkbox = getMenuItems().get(1)
72+
WebElement checkbox = menuItems.get(1)
7573
.findElement(By.tagName("vaadin-checkbox"));
7674
checkbox.click();
77-
$("body").first().click();
78-
verifyClosedAndRemoved();
75+
clickBody();
76+
contextMenu.waitUntilClosed();
7977
WebElement message = findElement(
8078
By.id("context-menu-with-components-message"));
8179
Assert.assertEquals("Clicked on checkbox with value: true",
@@ -84,84 +82,76 @@ public void openAndCloseContextMenuWithComponents_contentIsRendered() {
8482

8583
@Test
8684
public void hierarchicalContextMenu_openSubMenus() {
87-
verifyClosedAndRemoved();
88-
89-
rightClickOn("hierarchical-menu-target");
85+
ContextMenuElement contextMenu = ContextMenuElement
86+
.openByRightClick($("*").id("hierarchical-menu-target"));
9087
verifyNumberOfMenus(1);
9188

92-
openSubMenu(getMenuItems().get(1));
89+
ContextMenuElement subMenu = contextMenu.getMenuItems().get(1)
90+
.openSubMenu();
9391
verifyNumberOfMenus(2);
9492

95-
List<ContextMenuElement> menus = getAllMenus();
96-
openSubMenu(getMenuItems(menus.get(1)).get(1));
97-
93+
ContextMenuElement subSubMenu = subMenu.getMenuItems().get(1)
94+
.openSubMenu();
9895
verifyNumberOfMenus(3);
99-
menus = getAllMenus();
100-
getMenuItems(menus.get(2)).get(0).click();
96+
97+
subSubMenu.getMenuItems().get(0).click();
98+
contextMenu.waitUntilClosed();
10199

102100
Assert.assertEquals("Clicked on the third item",
103101
$("span").id("hierarchical-menu-message").getText());
104-
105-
verifyClosedAndRemoved();
106102
}
107103

108104
@Test
109105
public void checkableMenuItems() {
110-
verifyClosedAndRemoved();
111-
112-
rightClickOn("checkable-menu-items-target");
113-
verifyOpened();
106+
ContextMenuElement contextMenu = ContextMenuElement
107+
.openByRightClick($("*").id("checkable-menu-items-target"));
114108

115-
List<ContextMenuItemElement> items = getMenuItems();
116-
ContextMenuPageIT.assertCheckedInClientSide(items.get(0), false);
117-
ContextMenuPageIT.assertCheckedInClientSide(items.get(1), true);
109+
List<ContextMenuItemElement> items = contextMenu.getMenuItems();
110+
Assert.assertFalse(items.get(0).isChecked());
111+
Assert.assertTrue(items.get(1).isChecked());
118112

119113
items.get(1).click();
114+
contextMenu.waitUntilClosed();
120115

121116
Assert.assertEquals("Unselected option 2",
122117
$("span").id("checkable-menu-items-message").getText());
123-
verifyClosedAndRemoved();
124118

125-
rightClickOn("checkable-menu-items-target");
126-
verifyOpened();
119+
contextMenu = ContextMenuElement
120+
.openByRightClick($("*").id("checkable-menu-items-target"));
127121

128-
items = getMenuItems();
129-
ContextMenuPageIT.assertCheckedInClientSide(items.get(0), false);
130-
ContextMenuPageIT.assertCheckedInClientSide(items.get(1), false);
122+
items = contextMenu.getMenuItems();
123+
Assert.assertFalse(items.get(0).isChecked());
124+
Assert.assertFalse(items.get(1).isChecked());
131125

132126
items.get(0).click();
127+
contextMenu.waitUntilClosed();
133128

134129
Assert.assertEquals("Selected option 1",
135130
$("span").id("checkable-menu-items-message").getText());
136-
verifyClosedAndRemoved();
137131

138-
rightClickOn("checkable-menu-items-target");
139-
verifyOpened();
132+
contextMenu = ContextMenuElement
133+
.openByRightClick($("*").id("checkable-menu-items-target"));
140134

141-
items = getMenuItems();
142-
ContextMenuPageIT.assertCheckedInClientSide(items.get(0), true);
143-
ContextMenuPageIT.assertCheckedInClientSide(items.get(1), false);
135+
items = contextMenu.getMenuItems();
136+
Assert.assertTrue(items.get(0).isChecked());
137+
Assert.assertFalse(items.get(1).isChecked());
144138

145139
items.get(2).click();
146-
verifyOpened();
147-
ContextMenuPageIT.assertCheckedInClientSide(items.get(2), false);
140+
Assert.assertTrue(contextMenu.isOpen());
141+
Assert.assertFalse(items.get(2).isChecked());
148142

149143
items.get(2).click();
150-
verifyOpened();
151-
ContextMenuPageIT.assertCheckedInClientSide(items.get(2), true);
144+
Assert.assertTrue(contextMenu.isOpen());
145+
Assert.assertTrue(items.get(2).isChecked());
152146
}
153147

154148
@Test
155149
public void subMenuHasComponents_componentsAreNotItems() {
156-
verifyClosedAndRemoved();
157-
158-
rightClickOn("context-menu-with-submenu-components-target");
159-
verifyOpened();
160-
161-
openSubMenu(getMenuItems().get(1));
162-
verifyNumberOfMenus(2);
150+
ContextMenuElement contextMenu = ContextMenuElement.openByRightClick(
151+
$("*").id("context-menu-with-submenu-components-target"));
152+
ContextMenuElement subMenu = contextMenu.getMenuItems().get(1)
153+
.openSubMenu();
163154

164-
ContextMenuElement subMenu = getAllMenus().get(1);
165155
TestBenchElement menuContent = getMenuContent(subMenu);
166156
TestBenchElement menuListBox = menuContent
167157
.$("vaadin-context-menu-list-box").first();

0 commit comments

Comments
 (0)