Skip to content

Commit e3e77f3

Browse files
author
evgen460
committed
4935_Test-refactoring-element-Sidenav3
1 parent 21d3a78 commit e3e77f3

File tree

4 files changed

+56
-20
lines changed

4 files changed

+56
-20
lines changed

jdi-light-angular-tests/src/main/java/io/github/com/pages/SideNavPage.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package io.github.com.pages;
22

3+
import com.epam.jdi.light.angular.elements.common.Button;
34
import com.epam.jdi.light.angular.elements.common.Checkbox;
45
import com.epam.jdi.light.angular.elements.complex.SideNav;
56
import com.epam.jdi.light.angular.elements.complex.radiobuttons.RadioGroup;
6-
import com.epam.jdi.light.elements.common.UIElement;
7+
import com.epam.jdi.light.angular.elements.composite.MaterialSelectorContainer;
78
import com.epam.jdi.light.elements.pageobjects.annotations.locators.UI;
8-
import com.epam.jdi.light.ui.html.elements.common.Button;
9+
import com.epam.jdi.light.ui.html.elements.common.TextField;
910
import io.github.com.pages.sections.SideNavSection;
1011

1112
public class SideNavPage extends NewAngularPage {
@@ -33,10 +34,10 @@ public class SideNavPage extends NewAngularPage {
3334
@UI("#configurable-mode .mat-sidenav .mat-mdc-radio-group")
3435
public static RadioGroup sideNavRadioGroup;
3536
@UI("#mat-select-position")
36-
public static UIElement sideNavPosition;
37+
public static MaterialSelectorContainer sideNavPosition;
3738

3839
@UI("#mat-select-focus-on-the-first-item")
39-
public static UIElement sideNavFocusSelection;
40+
public static MaterialSelectorContainer sideNavFocusSelection;
4041

4142
@UI("#configurable-mode .mat-sidenav-content .mat-mdc-radio-group")
4243
public static RadioGroup contentRadioGroup;
@@ -66,10 +67,10 @@ public class SideNavPage extends NewAngularPage {
6667
public static Button toggleFixedSideNav;
6768

6869
@UI("#fixed-position .mat-sidenav-content mat-form-field input[formcontrolname='top']")
69-
public static UIElement topGap;
70+
public static TextField topGap;
7071

7172
@UI("#fixed-position .mat-sidenav-content mat-form-field input[formcontrolname='bottom']")
72-
public static UIElement bottomGap;
73+
public static TextField bottomGap;
7374

7475
public static SideNavSection sidenavBackdropDrawer;
7576

jdi-light-angular-tests/src/test/java/io/github/epam/angular/tests/elements/complex/SideNavTests.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package io.github.epam.angular.tests.elements.complex;
22

3-
import com.epam.jdi.light.angular.elements.composite.MaterialSelectorContainer;
43
import com.epam.jdi.light.elements.common.UIElement;
54
import io.github.epam.TestsInit;
6-
import org.testng.annotations.BeforeMethod;
5+
import org.testng.annotations.BeforeClass;
76
import org.testng.annotations.Test;
87

98
import static com.epam.jdi.light.elements.composite.WebPage.refresh;
@@ -19,7 +18,6 @@
1918
import static io.github.com.pages.SideNavPage.contentRadioGroup;
2019
import static io.github.com.pages.SideNavPage.contentToggle;
2120
import static io.github.com.pages.SideNavPage.customEscapeBackdrop;
22-
import static io.github.com.pages.SideNavPage.firstElement;
2321
import static io.github.com.pages.SideNavPage.firstElementFocused;
2422
import static io.github.com.pages.SideNavPage.fixSideNav;
2523
import static io.github.com.pages.SideNavPage.fixedPosition;
@@ -55,7 +53,7 @@ public class SideNavTests extends TestsInit {
5553
public static final String MODE = "mode";
5654
public static final String SIDE = "side";
5755

58-
@BeforeMethod(alwaysRun = true)
56+
@BeforeClass(alwaysRun = true)
5957
public void before() {
6058
sideNavPage.open();
6159
waitCondition(() -> sideNavPage.isOpened());
@@ -87,11 +85,11 @@ public void verifyPositionSelectionDrawerWithExplicitBackdropSettingSideNavTest(
8785
sidenavBackdropContainer.is().enabled();
8886

8987
sideNavPosition.click();
90-
(new MaterialSelectorContainer()).select("End");
88+
sideNavPosition.select("End");
9189

9290
backDropToggle.click();
9391
sidenavBackdropDrawer.is().displayed();
94-
sidenavBackdropDrawer.has().cssClass("mat-drawer-end");
92+
sidenavBackdropContainer.has().sideNavSectionOnTheRight(sidenavBackdropDrawer.getLocation());
9593
}
9694

9795
@Test(description = "Test verifies first menu item focus when 'true' is selected")
@@ -101,13 +99,13 @@ public void verifyFocusSelectionDrawerWithExplicitBackdropSettingSideNavTest() {
10199
sidenavBackdropContainer.is().enabled();
102100

103101
sideNavFocusSelection.click();
104-
(new MaterialSelectorContainer()).select("True");
102+
sideNavFocusSelection.select("True");
105103

106104
backDropToggle.click();
107105

108106
firstElementFocused.base().timer().wait(() -> firstElementFocused.has().cssClass("cdk-program-focused"));
109-
firstElementFocused.has().cssClass("cdk-focused");
110107
firstElementFocused.is().displayed();
108+
firstElementFocused.is().focused();
111109
}
112110

113111
@Test(description = "Verify main content is properly displayed alongside two side navigation panels")
@@ -213,12 +211,10 @@ public void verifyAutoSizeSideNav() {
213211
public void fixedSideNavTest() {
214212
String testValue = "100";
215213
fixedPosition.show();
216-
topGap.click();
217214
topGap.clear();
218-
topGap.sendKeys(testValue);
219-
bottomGap.click();
215+
topGap.setValue(testValue);
220216
bottomGap.clear();
221-
bottomGap.sendKeys(testValue);
217+
bottomGap.setValue(testValue);
222218
fixSideNav.click();
223219
fixedPosition.getSideNav().has().attr(STYLE, "transform: none; visibility: visible; top: 100px; bottom: " +
224220
"100px;");
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.epam.jdi.light.angular.asserts;
2+
3+
import com.epam.jdi.light.angular.elements.complex.SideNav;
4+
import com.epam.jdi.light.asserts.generic.UIAssert;
5+
import com.epam.jdi.light.common.JDIAction;
6+
import org.hamcrest.Matchers;
7+
import org.openqa.selenium.Point;
8+
9+
import static com.epam.jdi.light.asserts.core.SoftAssert.jdiAssert;
10+
11+
public class SideNaveAssert extends UIAssert<SideNaveAssert, SideNav> {
12+
13+
private static final String LOCATION_ERROR_MESSAGE = "SideNavSection with location %s isn't on the right side";
14+
15+
@JDIAction(value = "Assert that '{name}' has section with location '{0}' on the right side", isAssert = true)
16+
public SideNaveAssert sideNavSectionOnTheRight(Point locationOfSection) {
17+
jdiAssert(element().isSectionInRightPart(locationOfSection), Matchers.is(true),
18+
String.format(LOCATION_ERROR_MESSAGE, locationOfSection));
19+
return this;
20+
}
21+
}

jdi-light-angular/src/main/java/com/epam/jdi/light/angular/elements/complex/SideNav.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
package com.epam.jdi.light.angular.elements.complex;
22

3-
import com.epam.jdi.light.asserts.generic.UIAssert;
3+
import com.epam.jdi.light.angular.asserts.SideNaveAssert;
44
import com.epam.jdi.light.common.JDIAction;
55
import com.epam.jdi.light.elements.base.UIBaseElement;
66
import com.epam.jdi.light.elements.common.UIElement;
77
import com.epam.jdi.light.elements.complex.WebList;
8+
import com.epam.jdi.light.elements.interfaces.base.HasLabel;
9+
import org.openqa.selenium.Point;
810

911
/**
1012
* To see an example of Checkbox web element please visit https://material.angular.io/components/sidenav/overview.
1113
*/
1214

13-
public class SideNav extends UIBaseElement<UIAssert<?, SideNav>> {
15+
public class SideNav extends UIBaseElement<SideNaveAssert> implements HasLabel {
16+
17+
@Override
18+
public SideNaveAssert is() {
19+
return new SideNaveAssert().set(this);
20+
}
21+
22+
@Override
23+
public SideNaveAssert has() {
24+
return is();
25+
}
1426

1527
@JDIAction("Get '{name}' side nav")
1628
public UIElement getSideNav() {
@@ -64,4 +76,10 @@ public UIElement getMatDrawer() {
6476
public UIElement getMatDrawerContent() {
6577
return this.find(".mat-drawer-content");
6678
}
79+
80+
@JDIAction("Is '{name}' side nav has section with location '{0}' on right side")
81+
public boolean isSectionInRightPart(Point locationOfSection) {
82+
int containerCenterX = this.getLocation().getX() + this.getSize().getWidth() / 2;
83+
return locationOfSection.getX() >= containerCenterX;
84+
}
6785
}

0 commit comments

Comments
 (0)