diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/MainPage.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java similarity index 50% rename from kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/MainPage.java rename to kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java index ba93f0535c..3079661712 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/MainPage.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java @@ -1,50 +1,25 @@ package com.provectus.kafka.ui.pages; import com.codeborne.selenide.Condition; -import com.codeborne.selenide.Selenide; import com.codeborne.selenide.SelenideElement; -import com.provectus.kafka.ui.utilities.WaitUtils; -import com.provectus.kafka.ui.settings.Source; import io.qameta.allure.Step; -import lombok.experimental.ExtensionMethod; -import org.openqa.selenium.By; -import static com.codeborne.selenide.Selenide.$; +import java.time.Duration; + import static com.codeborne.selenide.Selenide.$x; +import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME; -@ExtensionMethod({WaitUtils.class}) -public class MainPage { - - private static final String path = "/"; +public class NaviSideBar { @Step - public MainPage goTo() { - Selenide.open(Source.BASE_WEB_URL + path); + public NaviSideBar waitUntilScreenReady() { + $x("//*[contains(text(),'Loading')]").shouldBe(Condition.disappear, Duration.ofSeconds(30)); + $x("//a[@title='Dashboard']").shouldBe(Condition.visible, Duration.ofSeconds(30)); return this; } @Step - public MainPage waitUntilScreenReady() { - $(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear); - $("input[name=switchRoundedDefault]").parent().$("span").shouldBe(Condition.visible); - return this; - } - - public enum SideMenuOptions { - BROKERS("Brokers"), - TOPICS("Topics"), - CONSUMERS("Consumers"), - SCHEMA_REGISTRY("Schema Registry"); - - final String value; - - SideMenuOptions(String value) { - this.value = value; - } - } - - @Step - public MainPage goToSideMenu(String clusterName, SideMenuOptions option) { + public NaviSideBar openSideMenu(String clusterName, SideMenuOption option) { SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible); if (clusterElement.parent().$$x(".//ul").size() == 0) { clusterElement.click(); @@ -55,4 +30,26 @@ public class MainPage { .click(); return this; } -} + + @Step + public NaviSideBar openSideMenu(SideMenuOption option) { + openSideMenu(CLUSTER_NAME, option); + return this; + } + + + public enum SideMenuOption { + BROKERS("Brokers"), + TOPICS("Topics"), + CONSUMERS("Consumers"), + SCHEMA_REGISTRY("Schema Registry"), + KAFKA_CONNECT("Kafka Connect"), + KSQL_DB("KSQL DB"); + + final String value; + + SideMenuOption(String value) { + this.value = value; + } + } +} \ No newline at end of file diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/KafkaConnectList.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/KafkaConnectList.java index 70993072df..b5986c7919 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/KafkaConnectList.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/KafkaConnectList.java @@ -1,8 +1,6 @@ package com.provectus.kafka.ui.pages.connector; import com.codeborne.selenide.Condition; -import com.codeborne.selenide.Selenide; -import com.provectus.kafka.ui.settings.Source; import com.provectus.kafka.ui.utilities.WaitUtils; import io.qameta.allure.Step; import lombok.experimental.ExtensionMethod; @@ -16,14 +14,6 @@ import static com.provectus.kafka.ui.utilities.WebUtils.isVisible; @ExtensionMethod(WaitUtils.class) public class KafkaConnectList { - private static final String path = "/ui/clusters/%s/connectors"; - - @Step("Open URL to {cluster}") - public KafkaConnectList goTo(String cluster) { - Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster)); - return this; - } - @Step public KafkaConnectList waitUntilScreenReady() { $(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible); diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaCreateForm.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaCreateForm.java index fec5db8b2e..0f223ada78 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaCreateForm.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaCreateForm.java @@ -1,5 +1,6 @@ package com.provectus.kafka.ui.pages.schema; +import com.codeborne.selenide.Condition; import com.codeborne.selenide.Selenide; import com.codeborne.selenide.SelenideElement; import com.provectus.kafka.ui.api.model.CompatibilityLevel; @@ -20,6 +21,12 @@ public class SchemaCreateForm { protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]"); protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']"); + @Step + public SchemaCreateForm waitUntilScreenReady() { + $x("//h1['Edit']").shouldBe(Condition.visible); + return this; + } + @Step public SchemaCreateForm setSubjectName(String name) { subjectName.setValue(name); diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaRegistryList.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaRegistryList.java index eb378be3db..d37981d304 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaRegistryList.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaRegistryList.java @@ -14,6 +14,13 @@ public class SchemaRegistryList { private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]")); + @Step + public SchemaRegistryList waitUntilScreenReady(){ + $x("//*[contains(text(),'Loading')]").shouldBe(Condition.disappear); + $x("//button[contains(text(),'Create Schema')]").shouldBe(Condition.visible); + return this; + } + @Step public SchemaCreateForm clickCreateSchema() { clickByJavaScript(schemaButton); diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/ProduceMessagePanel.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/ProduceMessagePanel.java index d6ecebcd7a..62d619a539 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/ProduceMessagePanel.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/ProduceMessagePanel.java @@ -43,6 +43,6 @@ public class ProduceMessagePanel { submitBtn.shouldBe(Condition.enabled).click(); submitBtn.shouldBe(Condition.disappear); refresh(); - return new TopicDetails().waitUntilScreenReady(); + return new TopicDetails(); } } diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java index e0400bea37..123c3d76ee 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java @@ -1,9 +1,7 @@ package com.provectus.kafka.ui.pages.topic; import com.codeborne.selenide.Condition; -import com.codeborne.selenide.Selenide; import com.codeborne.selenide.SelenideElement; -import com.provectus.kafka.ui.settings.Source; import com.provectus.kafka.ui.utilities.WaitUtils; import io.qameta.allure.Step; import lombok.experimental.ExtensionMethod; @@ -15,15 +13,8 @@ import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; @ExtensionMethod({WaitUtils.class}) public class TopicDetails { - private static final String URL_PATH = "/ui/clusters/%s/topics/%s"; protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first(); - @Step - public TopicDetails goTo(String cluster, String topic) { - Selenide.open(Source.BASE_WEB_URL + String.format(URL_PATH, cluster, topic)); - return this; - } - @Step public TopicDetails waitUntilScreenReady() { $(By.linkText("Overview")).shouldBe(Condition.visible); @@ -70,7 +61,9 @@ public class TopicDetails { } private enum DotMenuHeaderItems { - EDIT_SETTINGS("Edit settings"), CLEAR_MESSAGES("Clear messages"), REMOVE_TOPIC("Remove topic"); + EDIT_SETTINGS("Edit settings"), + CLEAR_MESSAGES("Clear messages"), + REMOVE_TOPIC("Remove topic"); private final String value; @@ -89,7 +82,10 @@ public class TopicDetails { } public enum TopicMenu { - OVERVIEW("Overview"), MESSAGES("Messages"), CONSUMERS("Consumers"), SETTINGS("Settings"); + OVERVIEW("Overview"), + MESSAGES("Messages"), + CONSUMERS("Consumers"), + SETTINGS("Settings"); private final String value; diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java index 3412e0d5da..0097bdb91a 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java @@ -1,29 +1,19 @@ package com.provectus.kafka.ui.pages.topic; -import com.codeborne.selenide.CollectionCondition; import com.codeborne.selenide.Condition; -import com.codeborne.selenide.Selenide; -import com.provectus.kafka.ui.settings.Source; import com.provectus.kafka.ui.utilities.WaitUtils; import io.qameta.allure.Step; import lombok.experimental.ExtensionMethod; import org.openqa.selenium.By; -import static com.codeborne.selenide.Selenide.*; +import static com.codeborne.selenide.Selenide.$; +import static com.codeborne.selenide.Selenide.$x; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.isVisible; @ExtensionMethod(WaitUtils.class) public class TopicsList { - private static final String path = "/ui/clusters/%s/all-topics"; - - @Step - public TopicsList goTo(String cluster) { - Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster)); - return this; - } - @Step public TopicsList waitUntilScreenReady() { $(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear); @@ -48,14 +38,4 @@ public class TopicsList { $(By.linkText(topicName)).click(); return new TopicDetails(); } - - @Step - public TopicsList isTopicNotVisible(String topicName) { - $$x("//table/tbody/tr/td[2]") - .shouldBe(CollectionCondition.sizeGreaterThan(0)) - .find(Condition.exactText(topicName)) - .shouldBe(Condition.not(Condition.visible)); - return this; - } - } diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/settings/Source.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/settings/Source.java index f1c780214c..0cbd7ae7c3 100644 --- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/settings/Source.java +++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/settings/Source.java @@ -4,4 +4,5 @@ public abstract class Source { public static String BASE_API_URL = System.getProperty("BASE_URL", "http://localhost:8080"); public static String BASE_WEB_URL = System.getProperty("BASE_DOCKER_URL", "http://host.testcontainers.internal:8080"); + public static final String CLUSTER_NAME = "local"; } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/SmokeTests.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/SmokeTests.java index c9c560c3ed..e876d3a634 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/SmokeTests.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/SmokeTests.java @@ -14,8 +14,6 @@ public class SmokeTests extends BaseTest { @CaseId(198) @DisplayName("main page should load") void mainPageLoads() { - mainPage.goTo() - .waitUntilScreenReady(); compareScreenshots("main"); } } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/BaseTest.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/BaseTest.java index a864a36eb2..a3086fd715 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/BaseTest.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/BaseTest.java @@ -1,5 +1,7 @@ package com.provectus.kafka.ui.base; +import com.codeborne.selenide.Condition; +import com.codeborne.selenide.Selenide; import com.codeborne.selenide.WebDriverRunner; import com.provectus.kafka.ui.utilities.qaseIoUtils.DisplayNameGenerator; import com.provectus.kafka.ui.utilities.qaseIoUtils.TestCaseGenerator; @@ -22,9 +24,10 @@ import org.testcontainers.utility.DockerImageName; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.time.Duration; -import static com.provectus.kafka.ui.base.Setup.clearReports; -import static com.provectus.kafka.ui.base.Setup.setup; +import static com.provectus.kafka.ui.base.Setup.*; +import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL; @Slf4j @DisplayNameGeneration(DisplayNameGenerator.class) @@ -32,8 +35,6 @@ public class BaseTest extends Facade { private static final String SELENIUM_IMAGE_NAME = "selenium/standalone-chrome:103.0"; private static final String SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0"; - protected static final String CLUSTER_NAME = "local"; - private final Screenshooter screenshooter = new Screenshooter(); protected static BrowserWebDriverContainer webDriverContainer = null; @@ -55,6 +56,8 @@ public class BaseTest extends Facade { RemoteWebDriver remoteWebDriver = webDriverContainer.getWebDriver(); WebDriverRunner.setWebDriver(remoteWebDriver); remoteWebDriver.manage().window().setSize(new Dimension(1440, 1024)); + Selenide.open(BASE_WEB_URL); + naviSideBar.waitUntilScreenReady(); } @BeforeAll @@ -118,5 +121,6 @@ public class BaseTest extends Facade { Allure.addAttachment("Screenshot", new ByteArrayInputStream( ((TakesScreenshot) webDriverContainer.getWebDriver()).getScreenshotAs(OutputType.BYTES))); + browserClear(); } } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Facade.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Facade.java index 46e17e0b96..8d3aea55d4 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Facade.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Facade.java @@ -1,7 +1,7 @@ package com.provectus.kafka.ui.base; import com.provectus.kafka.ui.helpers.ApiHelper; -import com.provectus.kafka.ui.pages.MainPage; +import com.provectus.kafka.ui.pages.NaviSideBar; import com.provectus.kafka.ui.pages.connector.ConnectorCreateForm; import com.provectus.kafka.ui.pages.connector.ConnectorDetails; import com.provectus.kafka.ui.pages.connector.KafkaConnectList; @@ -14,7 +14,6 @@ import com.provectus.kafka.ui.pages.topic.TopicDetails; import com.provectus.kafka.ui.pages.topic.TopicsList; public abstract class Facade { - protected MainPage mainPage = new MainPage(); protected ApiHelper apiHelper = new ApiHelper(); protected ConnectorCreateForm connectorCreateForm = new ConnectorCreateForm(); protected KafkaConnectList kafkaConnectList = new KafkaConnectList(); @@ -26,4 +25,5 @@ public abstract class Facade { protected TopicCreateEditForm topicCreateEditForm = new TopicCreateEditForm(); protected TopicsList topicsList = new TopicsList(); protected TopicDetails topicDetails = new TopicDetails(); + protected NaviSideBar naviSideBar = new NaviSideBar(); } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Setup.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Setup.java index 954acb37ba..2f64699eb2 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Setup.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Setup.java @@ -2,13 +2,19 @@ package com.provectus.kafka.ui.base; import com.codeborne.selenide.Configuration; import com.codeborne.selenide.logevents.SelenideLogger; +import io.qameta.allure.Step; import io.qameta.allure.selenide.AllureSelenide; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import java.io.File; import java.util.Arrays; +import static com.codeborne.selenide.Selenide.*; +import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL; + @Slf4j public abstract class Setup { @@ -38,4 +44,13 @@ public abstract class Setup { } } } + + @Step + public static void browserClear() { + log.debug("browserClear"); + clearBrowserLocalStorage(); + clearBrowserCookies(); + refresh(); + log.debug("=> DONE"); + } } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/ConnectorsTests.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/ConnectorsTests.java index 4cc0c783e4..bc69eeee6f 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/ConnectorsTests.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/ConnectorsTests.java @@ -12,6 +12,8 @@ import org.junit.jupiter.api.*; import java.util.ArrayList; import java.util.List; +import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.KAFKA_CONNECT; +import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME; import static com.provectus.kafka.ui.utilities.FileUtils.getResourceAsString; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -60,14 +62,19 @@ public class ConnectorsTests extends BaseTest { Connector connectorForCreate = new Connector() .setName("sink_postgres_activities_e2e_checks") .setConfig(getResourceAsString("config_for_create_connector.json")); - kafkaConnectList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList .waitUntilScreenReady() - .clickCreateConnectorButton() + .clickCreateConnectorButton(); + connectorCreateForm .waitUntilScreenReady() .setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig()); - kafkaConnectList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList .waitUntilScreenReady(); - Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()"); + Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()), "isConnectorVisible()"); CONNECTOR_LIST.add(connectorForCreate); } @@ -77,14 +84,20 @@ public class ConnectorsTests extends BaseTest { @CaseId(196) @Test public void updateConnector() { - kafkaConnectList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList .waitUntilScreenReady() .openConnector(CONNECTOR_FOR_UPDATE.getName()); - connectorDetails.waitUntilScreenReady() + connectorDetails + .waitUntilScreenReady() .openConfigTab() .setConfig(CONNECTOR_FOR_UPDATE.getConfig()); - kafkaConnectList.goTo(CLUSTER_NAME); - Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()"); + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList + .waitUntilScreenReady(); + Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()), "isConnectorVisible()"); } @DisplayName("should delete connector") @@ -93,7 +106,9 @@ public class ConnectorsTests extends BaseTest { @CaseId(195) @Test public void deleteConnector() { - kafkaConnectList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList .waitUntilScreenReady() .openConnector(CONNECTOR_FOR_DELETE.getName()); connectorDetails @@ -101,7 +116,10 @@ public class ConnectorsTests extends BaseTest { .openDotMenu() .clickDeleteButton() .clickConfirmButton(); - kafkaConnectList.goTo(CLUSTER_NAME); + naviSideBar + .openSideMenu(KAFKA_CONNECT); + kafkaConnectList + .waitUntilScreenReady(); Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()"); CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE); } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/SchemasTests.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/SchemasTests.java index b8139024e7..8fa81c98b1 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/SchemasTests.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/SchemasTests.java @@ -3,8 +3,6 @@ package com.provectus.kafka.ui.tests; import com.provectus.kafka.ui.api.model.CompatibilityLevel; import com.provectus.kafka.ui.base.BaseTest; import com.provectus.kafka.ui.models.Schema; -import com.provectus.kafka.ui.pages.MainPage; -import com.provectus.kafka.ui.pages.schema.SchemaDetails; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite; import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status; @@ -15,6 +13,8 @@ import org.junit.jupiter.api.*; import java.util.ArrayList; import java.util.List; +import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.SCHEMA_REGISTRY; +import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME; import static com.provectus.kafka.ui.utilities.FileUtils.fileToString; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -42,16 +42,22 @@ public class SchemasTests extends BaseTest { @Order(1) void createSchemaAvro() { Schema schemaAvro = Schema.createSchemaAvro(); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.clickCreateSchema() + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .clickCreateSchema(); + schemaCreateForm .setSubjectName(schemaAvro.getName()) .setSchemaField(fileToString(schemaAvro.getValuePath())) .selectSchemaTypeFromDropdown(schemaAvro.getType()) - .clickSubmit() + .clickSubmit(); + schemaDetails + .waitUntilScreenReady(); + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList .waitUntilScreenReady(); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()"); SCHEMA_LIST.add(schemaAvro); } @@ -64,17 +70,24 @@ public class SchemasTests extends BaseTest { @Order(2) void updateSchemaAvro() { AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json"); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.openSchema(AVRO_API.getName()) + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .openSchema(AVRO_API.getName()); + schemaDetails .waitUntilScreenReady() .openEditSchema(); - Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()"); - schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE) - .setNewSchemaValue(fileToString(AVRO_API.getValuePath())) - .clickSubmit() + schemaCreateForm .waitUntilScreenReady(); - Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaDetails().getCompatibility(), "getCompatibility()"); + Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()"); + schemaCreateForm + .selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE) + .setNewSchemaValue(fileToString(AVRO_API.getValuePath())) + .clickSubmit(); + schemaDetails + .waitUntilScreenReady(); + Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), schemaDetails.getCompatibility(), "getCompatibility()"); } @DisplayName("should delete AVRO schema") @@ -84,11 +97,16 @@ public class SchemasTests extends BaseTest { @Test @Order(3) void deleteSchemaAvro() { - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.openSchema(AVRO_API.getName()) + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .openSchema(AVRO_API.getName()); + schemaDetails .waitUntilScreenReady() .removeSchema(); + schemaRegistryList + .waitUntilScreenReady(); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()"); SCHEMA_LIST.remove(AVRO_API); } @@ -101,15 +119,22 @@ public class SchemasTests extends BaseTest { @Order(4) void createSchemaJson() { Schema schemaJson = Schema.createSchemaJson(); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.clickCreateSchema() + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .clickCreateSchema(); + schemaCreateForm .setSubjectName(schemaJson.getName()) .setSchemaField(fileToString(schemaJson.getValuePath())) .selectSchemaTypeFromDropdown(schemaJson.getType()) - .clickSubmit() + .clickSubmit(); + schemaDetails + .waitUntilScreenReady(); + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList .waitUntilScreenReady(); - mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()"); SCHEMA_LIST.add(schemaJson); } @@ -121,11 +146,16 @@ public class SchemasTests extends BaseTest { @Test @Order(5) void deleteSchemaJson() { - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.openSchema(JSON_API.getName()) + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .openSchema(JSON_API.getName()); + schemaDetails .waitUntilScreenReady() .removeSchema(); + schemaRegistryList + .waitUntilScreenReady(); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()"); SCHEMA_LIST.remove(JSON_API); } @@ -138,15 +168,22 @@ public class SchemasTests extends BaseTest { @Order(6) void createSchemaProtobuf() { Schema schemaProtobuf = Schema.createSchemaProtobuf(); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.clickCreateSchema() + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .clickCreateSchema(); + schemaCreateForm .setSubjectName(schemaProtobuf.getName()) .setSchemaField(fileToString(schemaProtobuf.getValuePath())) .selectSchemaTypeFromDropdown(schemaProtobuf.getType()) - .clickSubmit() + .clickSubmit(); + schemaDetails + .waitUntilScreenReady(); + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList .waitUntilScreenReady(); - mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()"); SCHEMA_LIST.add(schemaProtobuf); } @@ -158,11 +195,16 @@ public class SchemasTests extends BaseTest { @Test @Order(7) void deleteSchemaProtobuf() { - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); - schemaRegistryList.openSchema(PROTOBUF_API.getName()) + naviSideBar + .openSideMenu(SCHEMA_REGISTRY); + schemaRegistryList + .waitUntilScreenReady() + .openSchema(PROTOBUF_API.getName()); + schemaDetails .waitUntilScreenReady() .removeSchema(); + schemaRegistryList + .waitUntilScreenReady(); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()"); SCHEMA_LIST.remove(PROTOBUF_API); } diff --git a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java index 03628ecbfd..378190c630 100644 --- a/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java +++ b/kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java @@ -2,7 +2,6 @@ package com.provectus.kafka.ui.tests; import com.provectus.kafka.ui.base.BaseTest; import com.provectus.kafka.ui.models.Topic; -import com.provectus.kafka.ui.pages.MainPage; import com.provectus.kafka.ui.pages.topic.TopicDetails; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite; @@ -14,6 +13,8 @@ import org.junit.jupiter.api.*; import java.util.ArrayList; import java.util.List; +import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS; +import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME; import static com.provectus.kafka.ui.utilities.FileUtils.fileToString; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -44,15 +45,21 @@ public class TopicTests extends BaseTest { @Test public void createTopic() { Topic topicToCreate = new Topic().setName("new-topic"); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS); - topicsList.pressCreateNewTopic() + naviSideBar + .openSideMenu(TOPICS); + topicsList + .waitUntilScreenReady() + .pressCreateNewTopic(); + topicCreateEditForm .setTopicName(topicToCreate.getName()) - .sendData() + .sendData(); + topicDetails .waitUntilScreenReady(); - mainPage.goTo() - .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS); - Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible"); + naviSideBar + .openSideMenu(TOPICS); + topicsList + .waitUntilScreenReady(); + Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()), "isTopicVisible"); TOPIC_LIST.add(topicToCreate); } @@ -63,21 +70,29 @@ public class TopicTests extends BaseTest { @CaseId(197) @Test public void updateTopic() { - topicsList.goTo(CLUSTER_NAME) - .waitUntilScreenReady(); - topicsList.openTopic(TOPIC_FOR_UPDATE.getName()) + naviSideBar + .openSideMenu(TOPICS); + topicsList .waitUntilScreenReady() - .openEditSettings() + .openTopic(TOPIC_FOR_UPDATE.getName()); + topicDetails + .waitUntilScreenReady() + .openEditSettings(); + topicCreateEditForm .selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue()) .setMinInsyncReplicas(10) .setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData()) .setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk()) .setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes()) - .sendData() + .sendData(); + topicDetails .waitUntilScreenReady(); - topicsList.goTo(CLUSTER_NAME) - .waitUntilScreenReady(); - topicsList.openTopic(TOPIC_FOR_UPDATE.getName()) + naviSideBar + .openSideMenu(TOPICS); + topicsList + .waitUntilScreenReady() + .openTopic(TOPIC_FOR_UPDATE.getName()); + topicDetails .waitUntilScreenReady() .openEditSettings(); SoftAssertions softly = new SoftAssertions(); @@ -94,14 +109,19 @@ public class TopicTests extends BaseTest { @CaseId(207) @Test public void deleteTopic() { - topicsList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(TOPICS); + topicsList .waitUntilScreenReady() - .openTopic(TOPIC_FOR_DELETE.getName()) + .openTopic(TOPIC_FOR_DELETE.getName()); + topicDetails .waitUntilScreenReady() .deleteTopic(); - topicsList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(TOPICS); + topicsList .waitUntilScreenReady(); - Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()),"isTopicVisible"); + Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()), "isTopicVisible"); TOPIC_LIST.remove(TOPIC_FOR_DELETE); } @@ -111,15 +131,21 @@ public class TopicTests extends BaseTest { @CaseId(222) @Test void produceMessage() { - topicsList.goTo(CLUSTER_NAME) + naviSideBar + .openSideMenu(TOPICS); + topicsList .waitUntilScreenReady() - .openTopic(TOPIC_FOR_UPDATE.getName()) + .openTopic(TOPIC_FOR_UPDATE.getName()); + topicDetails .waitUntilScreenReady() .openTopicMenu(TopicDetails.TopicMenu.MESSAGES) - .clickOnButton("Produce Message") + .clickOnButton("Produce Message"); + produceMessagePanel .setContentFiled(TOPIC_FOR_UPDATE.getMessageContent()) .setKeyField(TOPIC_FOR_UPDATE.getMessageKey()) .submitProduceMessage(); + topicDetails + .waitUntilScreenReady(); SoftAssertions softly = new SoftAssertions(); softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue(); softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();