diff --git a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/AutocompletesTests.java b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/AutocompletesTests.java index 7fb369f561..df8ffd71e9 100644 --- a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/AutocompletesTests.java +++ b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/AutocompletesTests.java @@ -40,7 +40,7 @@ public void before() { public void styleAutocompleteTest() { List list = Arrays.asList("foo", "bar", "fizz", "buzz"); lightDenseShapedOutlinedAutocomplete.is() - .light() + .lightTheme() .dense() .shaped() .outlined(); @@ -56,13 +56,13 @@ public void styleAutocompleteTest() { lightDenseFilledRoundedAutocomplete.close(); darkSoloAutocomplete.is() - .dark() + .darkTheme() .solo(); darkSoloAutocomplete.expand(); darkSoloAutocomplete.has().options(list); darkSoloAutocomplete.close(); - darkSoloInvertedAutocomplete.is().dark(); + darkSoloInvertedAutocomplete.is().darkTheme(); darkSoloInvertedAutocomplete.expand(); darkSoloInvertedAutocomplete.has().options(list); darkSoloInvertedAutocomplete.close(); diff --git a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/ListItemGroupTests.java b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/ListItemGroupTests.java index 621362fd46..d4b915bcdf 100644 --- a/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/ListItemGroupTests.java +++ b/jdi-light-vuetify-tests/src/test/java/io/github/epam/vuetify/tests/complex/ListItemGroupTests.java @@ -57,8 +57,8 @@ public void iconListItemGroup() { @Test(description = "Test checks list item group's theme : Theme (dark/light)") public void themeListItemGroup() { activeClassListItemGroup.show(); - activeClassListItemGroup.has().theme("theme--dark"); + activeClassListItemGroup.has().darkTheme(); flatListItemGroup.show(); - flatListItemGroup.has().theme("theme--light"); + flatListItemGroup.has().lightTheme(); } } diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/AutocompleteAssert.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/AutocompleteAssert.java index 2ea3b50c86..3db01f14d2 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/AutocompleteAssert.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/AutocompleteAssert.java @@ -17,7 +17,8 @@ public class AutocompleteAssert extends UIAssert, DenseAssert, RoundedAssert, - ShapedAssert { + ShapedAssert, + ThemeAssert { @JDIAction(value = "Assert that '{name}' is expanded", isAssert = true) public AutocompleteAssert expanded() { @@ -86,23 +87,4 @@ public AutocompleteAssert solo() { ); return this; } - - // @todo #5308 create interface for Themes - @JDIAction(value = "Assert that 'name' has dark style", isAssert = true) - public AutocompleteAssert dark() { - jdiAssert( - element().root().attr("class"), - Matchers.containsString("theme--dark") - ); - return this; - } - - @JDIAction(value = "Assert that 'name' has dark style", isAssert = true) - public AutocompleteAssert light() { - jdiAssert( - element().root().attr("class"), - Matchers.containsString("theme--light") - ); - return this; - } } diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/ListItemAssert.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/ListItemAssert.java index 4e6b03f1bd..3400e51912 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/ListItemAssert.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/ListItemAssert.java @@ -4,6 +4,7 @@ import com.epam.jdi.light.asserts.generic.UIAssert; import com.epam.jdi.light.common.JDIAction; import com.epam.jdi.light.vuetify.elements.common.ListItem; +import com.epam.jdi.light.vuetify.interfaces.asserts.ThemeAssert; import org.hamcrest.Matcher; import org.hamcrest.Matchers; @@ -13,7 +14,8 @@ * Assertions for {@link ListItem} */ public class ListItemAssert extends UIAssert - implements ITextAssert { + implements ITextAssert, + ThemeAssert { @Override @JDIAction(value = "Assert that '{name}' is displayed", isAssert = true) diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/timelines/TimeLineAssert.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/timelines/TimeLineAssert.java index 092167fc43..39d3e09b09 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/timelines/TimeLineAssert.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/asserts/timelines/TimeLineAssert.java @@ -4,12 +4,14 @@ import com.epam.jdi.light.common.JDIAction; import com.epam.jdi.light.vuetify.elements.complex.timelines.TimeLine; import com.epam.jdi.light.vuetify.interfaces.asserts.DenseAssert; +import com.epam.jdi.light.vuetify.interfaces.asserts.ThemeAssert; import org.hamcrest.Matchers; import static com.epam.jdi.light.asserts.core.SoftAssert.jdiAssert; public class TimeLineAssert extends UISelectAssert - implements DenseAssert { + implements DenseAssert, + ThemeAssert { @JDIAction(value = "Assert that '{name}' is align to top", isAssert = true) public TimeLineAssert alignTop() { diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Autocomplete.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Autocomplete.java index be0b4de296..c81ce94a6c 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Autocomplete.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/Autocomplete.java @@ -27,7 +27,7 @@ */ public class Autocomplete extends UIBaseElement - implements ISetup, IsFilled, IsOutlined, IsDense, IsShaped, HasRounded { + implements ISetup, IsFilled, IsOutlined, IsDense, IsShaped, HasRounded, HasTheme { private static final String VALUE_LOCATOR = "div input[type='hidden']"; private static final String INPUT_LOCATOR = "div input[type='text']"; private static final String EXPAND_LOCATOR = "div .v-input__append-inner"; diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/PaginationPage.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/PaginationPage.java index 2c24b98667..4a0dd7196c 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/PaginationPage.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/PaginationPage.java @@ -4,6 +4,7 @@ import com.epam.jdi.light.vuetify.asserts.PaginationPageAssert; import com.epam.jdi.light.elements.interfaces.base.HasColor; +// @todo #5421 PaginationPage is not a part of Vue, should be removed /** * Class describes the Page displayed in Pagination element * https://v2.vuetifyjs.com/en/components/paginations/ diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/AppBar.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/AppBar.java index d6fb335472..4d369bee7d 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/AppBar.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/AppBar.java @@ -13,6 +13,7 @@ */ public class AppBar extends BasicBar { + private static final String IMAGE_LOCATOR = ".v-toolbar__image .v-image"; private static final String OVERFLOW_WINDOW_LOCATOR = "//ancestor::div[contains(@class, 'v-card')]//div[contains" + "(@class, 'overflow-y-auto')]"; diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/SystemBar.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/SystemBar.java index 47f4544daf..da465f433b 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/SystemBar.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/SystemBar.java @@ -4,7 +4,6 @@ import com.epam.jdi.light.vuetify.asserts.bars.SystemBarAssert; import com.epam.jdi.light.vuetify.elements.common.Icon; import com.epam.jdi.light.vuetify.interfaces.HasMeasurement; -import com.epam.jdi.light.vuetify.interfaces.HasTheme; import java.util.List; import java.util.stream.Collectors; @@ -13,7 +12,7 @@ * To see examples of System Bar web elements please visit https://v2.vuetifyjs.com/en/components/system-bars */ -public class SystemBar extends BasicBar implements HasTheme, HasMeasurement { +public class SystemBar extends BasicBar implements HasMeasurement { @JDIAction("Get '{name}' icons") public List icons() { diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/ToolBar.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/ToolBar.java index 3197cc4301..46fbb4baa4 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/ToolBar.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/bars/ToolBar.java @@ -8,6 +8,7 @@ */ public class ToolBar extends BasicBar { + public ToolBarAssert is() { return new ToolBarAssert().set(this); } diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/tables/TableCheckbox.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/tables/TableCheckbox.java index a09f840508..e5b50dc40d 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/tables/TableCheckbox.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/tables/TableCheckbox.java @@ -3,6 +3,7 @@ import com.epam.jdi.light.common.JDIAction; import com.epam.jdi.light.vuetify.elements.common.VueCheckbox; +// @todo #5421 Check if this checkbox is a part of vue public class TableCheckbox extends VueCheckbox { @Override diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/timelines/TimeLine.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/timelines/TimeLine.java index 6476211c51..862aabae7e 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/timelines/TimeLine.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/elements/complex/timelines/TimeLine.java @@ -8,6 +8,7 @@ import com.epam.jdi.light.elements.interfaces.base.ICoreElement; import com.epam.jdi.light.vuetify.annotations.JDITimeLine; import com.epam.jdi.light.vuetify.asserts.timelines.TimeLineAssert; +import com.epam.jdi.light.vuetify.interfaces.HasTheme; import com.epam.jdi.light.vuetify.interfaces.IsDense; import java.lang.reflect.Field; @@ -22,7 +23,8 @@ * To see an example of Timeline web element please visit * https://v2.vuetifyjs.com/en/components/timelines/ */ -public class TimeLine extends UIListBase implements ISetup, IsDense { +public class TimeLine extends UIListBase + implements ISetup, IsDense, HasTheme { private static final String ALIGN_TOP_CLASS = "v-timeline--align-top"; private static final String REVERSE_CLASS = "v-timeline--reverse"; diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/HasTheme.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/HasTheme.java index ba22a10d9b..5589104a8b 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/HasTheme.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/HasTheme.java @@ -17,4 +17,14 @@ public interface HasTheme extends ICoreElement { default String theme() { return core().classLike("theme--"); } + + @JDIAction("Get if '{name}' has dark theme") + default boolean isDarkTheme() { + return core().hasClass("theme--dark"); + } + + @JDIAction("Get if '{name}' has light theme") + default boolean isLightTheme() { + return core().hasClass("theme--light"); + } } diff --git a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/asserts/ThemeAssert.java b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/asserts/ThemeAssert.java index c94db37aa7..df2cc446a6 100644 --- a/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/asserts/ThemeAssert.java +++ b/jdi-light-vuetify/src/main/java/com/epam/jdi/light/vuetify/interfaces/asserts/ThemeAssert.java @@ -3,6 +3,7 @@ import com.epam.jdi.light.common.JDIAction; import com.epam.jdi.light.vuetify.interfaces.HasTheme; import com.epam.jdi.light.asserts.generic.IBaseAssert; +import org.hamcrest.Matcher; import org.hamcrest.Matchers; import static com.epam.jdi.light.asserts.core.SoftAssert.jdiAssert; @@ -22,4 +23,9 @@ default A darkTheme() { jdiAssert(element().theme(), Matchers.is(THEME_DARK.getValue()), "Element has light theme"); return (A) this; } + + default A theme(Matcher matcher) { + jdiAssert(element().theme(), matcher); + return (A) this; + } }