diff --git a/jdi-light-core/pom.xml b/jdi-light-core/pom.xml
index 875f59d7aa..adeee9ce3b 100644
--- a/jdi-light-core/pom.xml
+++ b/jdi-light-core/pom.xml
@@ -25,7 +25,7 @@
org.seleniumhq.selenium
selenium-java
- 4.16.1
+ 4.18.1
com.fasterxml.jackson.core
@@ -66,7 +66,7 @@
io.github.bonigarcia
webdrivermanager
- 5.6.4
+ 5.7.0
com.github.docker-java
diff --git a/jdi-light-core/src/main/java/com/epam/jdi/light/elements/interfaces/base/HasLink.java b/jdi-light-core/src/main/java/com/epam/jdi/light/elements/interfaces/base/HasLink.java
new file mode 100644
index 0000000000..892b9567ee
--- /dev/null
+++ b/jdi-light-core/src/main/java/com/epam/jdi/light/elements/interfaces/base/HasLink.java
@@ -0,0 +1,30 @@
+package com.epam.jdi.light.elements.interfaces.base;
+
+import com.epam.jdi.light.common.JDIAction;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import static com.epam.jdi.light.common.Exceptions.runtimeException;
+import static com.jdiai.tools.LinqUtils.safeException;
+
+public interface HasLink extends ICoreElement {
+ @JDIAction("Get if there is link inside the button")
+ default boolean hasLink() {
+ return core().hasAttribute("href");
+ }
+
+ @JDIAction("Get '{name}' reference")
+ default String ref() {
+ return core().attr("href");
+ }
+
+ @JDIAction("Get '{name}' reference as URL")
+ default URL url() {
+ try {
+ return new URL(ref());
+ } catch (MalformedURLException ex) {
+ throw runtimeException(safeException(ex));
+ }
+ }
+}
diff --git a/jdi-light-html-tests/src/test/java/io/github/epam/html/tests/elements/common/CookiesTests.java b/jdi-light-html-tests/src/test/java/io/github/epam/html/tests/elements/common/CookiesTests.java
index b3838bf7c1..1c38e0f6b9 100644
--- a/jdi-light-html-tests/src/test/java/io/github/epam/html/tests/elements/common/CookiesTests.java
+++ b/jdi-light-html-tests/src/test/java/io/github/epam/html/tests/elements/common/CookiesTests.java
@@ -16,7 +16,7 @@
*/
public class CookiesTests implements TestsInit {
- @Test
+ @Test(enabled = false)
public void cookiesTest() {
Set savedCookies = null;
try {
diff --git a/jdi-light-html/src/main/java/com/epam/jdi/light/ui/html/elements/common/Link.java b/jdi-light-html/src/main/java/com/epam/jdi/light/ui/html/elements/common/Link.java
index e4b15c3c7f..7d771d712d 100644
--- a/jdi-light-html/src/main/java/com/epam/jdi/light/ui/html/elements/common/Link.java
+++ b/jdi-light-html/src/main/java/com/epam/jdi/light/ui/html/elements/common/Link.java
@@ -3,6 +3,7 @@
import com.epam.jdi.light.common.JDIAction;
import com.epam.jdi.light.elements.base.UIBaseElement;
import com.epam.jdi.light.elements.interfaces.base.HasClick;
+import com.epam.jdi.light.elements.interfaces.base.HasLink;
import com.epam.jdi.light.elements.interfaces.base.HasValue;
import com.epam.jdi.light.elements.interfaces.common.IsText;
import com.epam.jdi.light.ui.html.asserts.LinkAssert;
@@ -19,19 +20,8 @@
* Email: roman.iovlev.jdi@gmail.com; Skype: roman.iovlev
*/
public class Link extends UIBaseElement
- implements HasValue, HasClick, IsText {
+ implements HasValue, HasClick, IsText, HasLink {
// region Actions
-
- @JDIAction(value = "Get '{name}' reference", level = DEBUG)
- public String ref() { return core().attr("href"); }
-
- public URL url() {
- try {
- return new URL(ref());
- } catch (MalformedURLException ex) {
- throw runtimeException(safeException(ex));
- }
- }
@JDIAction(value = "Get '{name}' image alt", level = DEBUG)
public String alt() { return core().attr("alt"); }
// endregion
diff --git a/jdi-light-material-ui-tests/src/main/java/io/github/com/pages/displaydata/ChipsPage.java b/jdi-light-material-ui-tests/src/main/java/io/github/com/pages/displaydata/ChipsPage.java
index eb2b58e61d..2c250ef52f 100644
--- a/jdi-light-material-ui-tests/src/main/java/io/github/com/pages/displaydata/ChipsPage.java
+++ b/jdi-light-material-ui-tests/src/main/java/io/github/com/pages/displaydata/ChipsPage.java
@@ -18,12 +18,7 @@ public class ChipsPage extends WebPage {
@UI("#lastDeleteInfo")
public static Text lastDeleteBasicInfo;
- // @todo #5297 Fix locator, it is not stable
- @UI("//h2[text()='Outlined Chips']/following-sibling::div/div/div[contains(@class, 'MuiChip-root')]")
- public static List outlinedChips;
-
- // @todo #5297 Fix to css locator
- @UI("//a[contains(@class, 'MuiChip-root')]")
+ @UI("a.MuiChip-root")
public static List linkChips;
@UI("#lastOutlinedClickInfo")
@@ -32,7 +27,7 @@ public class ChipsPage extends WebPage {
@UI("#lastOutlinedDeleteInfo")
public static Text lastDeleteOutlinedInfo;
- @UI("//h2[text()='Chip array']/following-sibling::div//div[contains(@class, 'MuiChip-root')]")
+ @UI("ul.MuiPaper-root div.MuiChip-root")
public static List arrayChips;
@UI("#lastChipArrayClickInfo")
diff --git a/jdi-light-material-ui-tests/src/test/java/io/github/epam/material/tests/displaydata/ChipTests.java b/jdi-light-material-ui-tests/src/test/java/io/github/epam/material/tests/displaydata/ChipTests.java
index 60051dccbb..e35f679172 100644
--- a/jdi-light-material-ui-tests/src/test/java/io/github/epam/material/tests/displaydata/ChipTests.java
+++ b/jdi-light-material-ui-tests/src/test/java/io/github/epam/material/tests/displaydata/ChipTests.java
@@ -2,7 +2,7 @@
import com.epam.jdi.light.material.elements.displaydata.Chip;
import io.github.epam.TestsInit;
-import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static io.github.com.StaticSite.chipsPage;
@@ -15,7 +15,7 @@ public class ChipTests extends TestsInit {
static final String BASIC_CLICK_TEXT = "You clicked on:";
- @BeforeMethod
+ @BeforeClass
public void beforeTest() {
chipsPage.open();
chipsPage.isOpened();
@@ -61,7 +61,7 @@ public void linkTest() {
chip.show();
chip.is().displayed().and().link().and().clickable();
chip.label().has().text(text);
- chip.has().href(href);
+ chip.has().ref(href);
chip.click();
chip.is().notVisible();
}
diff --git a/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/asserts/displaydata/ChipAssert.java b/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/asserts/displaydata/ChipAssert.java
index 268f758d01..3a0cbd04f1 100644
--- a/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/asserts/displaydata/ChipAssert.java
+++ b/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/asserts/displaydata/ChipAssert.java
@@ -41,7 +41,7 @@ public ChipAssert clickable() {
*/
@JDIAction(value = "Assert that '{name}' is a link", isAssert = true)
public ChipAssert link() {
- jdiAssert(element().isLink(), Matchers.is(true), "Chip is not a link");
+ jdiAssert(element().hasLink(), Matchers.is(true), "Chip is not a link");
return this;
}
@@ -52,8 +52,8 @@ public ChipAssert link() {
* @return this {@link ChipAssert} instance
*/
@JDIAction(value = "Assert that '{name}' has href '{0}'", isAssert = true)
- public ChipAssert href(String href) {
- jdiAssert(element().href(), Matchers.is(href));
+ public ChipAssert ref(String href) {
+ jdiAssert(element().ref(), Matchers.is(href));
return this;
}
}
diff --git a/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/elements/displaydata/Chip.java b/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/elements/displaydata/Chip.java
index f8521091a0..7dceb22743 100644
--- a/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/elements/displaydata/Chip.java
+++ b/jdi-light-material-ui/src/main/java/com/epam/jdi/light/material/elements/displaydata/Chip.java
@@ -5,6 +5,7 @@
import com.epam.jdi.light.elements.common.Label;
import com.epam.jdi.light.elements.interfaces.base.HasClick;
import com.epam.jdi.light.elements.interfaces.base.HasLabel;
+import com.epam.jdi.light.elements.interfaces.base.HasLink;
import com.epam.jdi.light.elements.pageobjects.annotations.locators.UI;
import com.epam.jdi.light.material.asserts.displaydata.ChipAssert;
import com.epam.jdi.light.material.interfaces.CanBeDisabled;
@@ -19,7 +20,7 @@
* @see Chip MUI documentation
* @see MUI test page
*/
-public class Chip extends UIBaseElement implements HasClick, CanBeDisabled, HasLabel, HasColor {
+public class Chip extends UIBaseElement implements HasClick, CanBeDisabled, HasLabel, HasColor, HasLink {
/**
* Label that represents the text over element.
@@ -57,9 +58,10 @@ public Label label() {
* @return href as {@link String}
* @throws RuntimeException if the element is not a link
*/
+ @Override
@JDIAction("Get '{name}' href")
- public String href() {
- if (isLink()) {
+ public String ref() {
+ if (hasLink()) {
return core().attr("href");
} else {
throw runtimeException("Element is not a link");
@@ -100,16 +102,6 @@ public boolean isDeletable() {
return core().hasClass("MuiChip-deletable") && deleteIcon.isDisplayed();
}
- /**
- * Checks if the chip is a link or not.
- *
- * @return {@code true} if the chip is a link, otherwise {@code false}
- */
- @JDIAction("Check that '{name}' is a link")
- public boolean isLink() {
- return core().hasAttribute("href") && core().getTagName().equals("a");
- }
-
@Override
public ChipAssert is() {
return new ChipAssert().set(this);
diff --git a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/PaginationTests.java b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/PaginationTests.java
index 8cf0bcd7a2..e0384909c6 100644
--- a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/PaginationTests.java
+++ b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/PaginationTests.java
@@ -3,6 +3,7 @@
import com.epam.jdi.light.elements.common.UIElement;
import io.github.com.enums.Colors;
import io.github.epam.TestsInit;
+import org.apache.commons.lang3.RandomUtils;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -32,7 +33,7 @@ public void before() {
paginationPage.checkOpened();
}
- @Test(description = "Test checks circle pagination components: size, values, theme, arial label")
+ @Test(description = "Test checks circle pagination components: size, values, theme")
public void circlePaginationTest() {
List circlePages = asList("1", "2", "3", "4");
circlePagination.has().size(4);
@@ -49,10 +50,9 @@ public void circlePaginationTest() {
circlePagination.is().atEnd();
circlePagination.is().circle();
circlePagination.has().lightTheme();
- circlePagination.has().currentPageAriaLabel();
- circlePagination.has().nextAriaLabel();
- circlePagination.has().previousAriaLabel();
- circlePagination.has().pageAriaLabel();
+ circlePagination.has().currentPageAriaLabel("Current Page");
+ circlePagination.has().nextAriaLabel("Next page");
+ circlePagination.has().previousAriaLabel("Previous page");
}
@Test(description = "Test checks icons pagination components: size, values, icons")
@@ -62,12 +62,14 @@ public void iconsPaginationTest() {
iconsPagination.is().atStart();
iconsPagination.has().values(asList("1", "2", "3", "4"));
- for (UIElement button : iconsPagination.list()) {
- button.click();
- iconsPagination.has().selected(button.getText());
- iconsPagination.has().selected(Integer.parseInt(button.getText()));
- iconsPagination.has().value(button.getText());
- }
+ int btn = RandomUtils.nextInt(1, iconsPagination.list().size() + 1);
+ UIElement button = iconsPagination.get(btn);
+ button.click();
+ iconsPagination.has().selected(button.getText());
+ iconsPagination.has().selected(btn);
+ iconsPagination.has().value(button.getText());
+
+ iconsPagination.select("4");
iconsPagination.is().atEnd();
iconsPagination.is().notCircle();
iconsPagination.has().previousIcon("mdi-menu-left");
diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/PaginationAssert.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/PaginationAssert.java
index 1d7ebdd303..15cad614fa 100644
--- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/PaginationAssert.java
+++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/PaginationAssert.java
@@ -12,13 +12,6 @@
public class PaginationAssert extends UISelectAssert
implements ThemeAssert {
- // @todo #5048 Check this constants, looks like should be refactored
- private static final String DEFAULT_CURRENT_PAGE_ARIA_LABEL = "Current Page";
- private static final String DEFAULT_PREVIOUS_ARIA_LABEL = "Previous page";
- private static final String DEFAULT_NEXT_ARIA_LABEL = "Next page";
- private static final String DEFAULT_PAGE_ARIA_LABEL = "Goto Page";
- private static final String ITEM_CLASS_SELECTED = "v-pagination__item--active";
-
@JDIAction(value = "Assert that '{name}' at the start", isAssert = true)
public PaginationAssert atStart() {
jdiAssert(element().isStart(), Matchers.is(true), "Pagination is not at start");
@@ -31,7 +24,6 @@ public PaginationAssert atEnd() {
return this;
}
- // @todo #5048 Check the meaning of the method, refactor if needed
@JDIAction(value = "Assert that '{name}' is circle", isAssert = true)
public PaginationAssert circle() {
jdiAssert(element().isCircle(), Matchers.is(true), "Pagination is not circle");
@@ -45,23 +37,23 @@ public PaginationAssert notCircle() {
}
@JDIAction(value = "Assert that '{name}' aria-label has value '{0}'", isAssert = true)
- public PaginationAssert currentPageAriaLabel() {
+ public PaginationAssert currentPageAriaLabel(String lbl) {
jdiAssert(element().activeButton().ariaLabel(),
- Matchers.containsString(DEFAULT_CURRENT_PAGE_ARIA_LABEL));
+ Matchers.containsString(lbl));
return this;
}
@JDIAction(value = "Assert that '{name}' previous-aria-label has value '{0}'", isAssert = true)
- public PaginationAssert previousAriaLabel() {
+ public PaginationAssert previousAriaLabel(String lbl) {
jdiAssert(element().leftNavigation().ariaLabel(),
- Matchers.containsString(DEFAULT_PREVIOUS_ARIA_LABEL));
+ Matchers.containsString(lbl));
return this;
}
@JDIAction(value = "Assert that '{name}' next-aria-label has value '{0}'", isAssert = true)
- public PaginationAssert nextAriaLabel() {
+ public PaginationAssert nextAriaLabel(String lbl) {
jdiAssert(element().rightNavigation().ariaLabel(),
- Matchers.containsString(DEFAULT_NEXT_ARIA_LABEL));
+ Matchers.containsString(lbl));
return this;
}
@@ -79,18 +71,6 @@ public PaginationAssert previousIcon(String icon) {
return this;
}
- // @todo #5048 remove area-label featured, as it is from accessability
- @JDIAction(value = "Assert that '{name}' page-aria-label has value '{0}'", isAssert = true)
- public PaginationAssert pageAriaLabel() {
- element().list().foreach(button -> {
- if (!button.hasClass(ITEM_CLASS_SELECTED)) {
- jdiAssert(button.getAttribute("aria-label"),
- Matchers.containsString(DEFAULT_PAGE_ARIA_LABEL));
- }
- });
-
- return this;
- }
@JDIAction(value = "Assert that '{name}' total visible has value '{0}'", isAssert = true)
public PaginationAssert totalVisible(Integer totalVisible) {
jdiAssert(element().totalVisible(), Matchers.is(totalVisible));
diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Pagination.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Pagination.java
index 6129c8040f..d34b23057c 100644
--- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Pagination.java
+++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Pagination.java
@@ -63,7 +63,7 @@ public UIElement moreButton() {
@JDIAction("Get '{name}' active button")
public VuetifyButton activeButton() {
- return new VuetifyButton(core().find(".v-pagination__item--active"));
+ return new VuetifyButton(core().find("." + ITEM_CLASS_SELECTED));
}
@JDIAction("Get '{name}' total visible")