浏览代码

Create navigation thru the app using web driver (#2701)

* [e2e] create navigation thru the app using web driver #2642

* [e2e]Fix create navigation thru the app using web driver #2642

* [e2e]Fix create navigation thru the app using web driver #2642

* [e2e]Fix2 create navigation thru the app using web driver #2642

* [e2e]Fix3 create navigation thru the app using web driver #2642

* [e2e]Fix4 create navigation thru the app using web driver #2642

* [e2e]Fix5 create navigation thru the app using web driver #2642

* [e2e]Fix6 create navigation thru the app using web driver #2642

* [e2e]Fix7 create navigation thru the app using web driver #2642

Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
Arthur 2 年之前
父节点
当前提交
67eea972f7

+ 28 - 31
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/MainPage.java → kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java

@@ -1,58 +1,55 @@
 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 {
+public class NaviSideBar {
 
-    private static final String path = "/";
+    @Step
+    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 goTo() {
-        Selenide.open(Source.BASE_WEB_URL + path);
+    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();
+        }
+        clusterElement
+                .parent()
+                .$x(String.format(".//ul/li[contains(.,'%s')]", option.value))
+                .click();
         return this;
     }
 
     @Step
-    public MainPage waitUntilScreenReady() {
-        $(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
-        $("input[name=switchRoundedDefault]").parent().$("span").shouldBe(Condition.visible);
+    public NaviSideBar openSideMenu(SideMenuOption option) {
+        openSideMenu(CLUSTER_NAME, option);
         return this;
     }
 
-    public enum SideMenuOptions {
+
+    public enum SideMenuOption {
         BROKERS("Brokers"),
         TOPICS("Topics"),
         CONSUMERS("Consumers"),
-        SCHEMA_REGISTRY("Schema Registry");
+        SCHEMA_REGISTRY("Schema Registry"),
+        KAFKA_CONNECT("Kafka Connect"),
+        KSQL_DB("KSQL DB");
 
         final String value;
 
-        SideMenuOptions(String value) {
+        SideMenuOption(String value) {
             this.value = value;
         }
     }
-
-    @Step
-    public MainPage goToSideMenu(String clusterName, SideMenuOptions option) {
-        SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible);
-        if (clusterElement.parent().$$x(".//ul").size() == 0) {
-            clusterElement.click();
-        }
-        clusterElement
-                .parent()
-                .$x(String.format(".//ul/li[contains(.,'%s')]", option.value))
-                .click();
-        return this;
-    }
-}
+}

+ 0 - 10
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);

+ 7 - 0
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);

+ 7 - 0
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);

+ 1 - 1
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();
     }
 }

+ 7 - 11
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;
 

+ 2 - 22
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;
-    }
-
 }

+ 1 - 0
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";
 }

+ 0 - 2
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");
     }
 }

+ 8 - 4
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();
   }
 }

+ 2 - 2
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();
 }

+ 15 - 0
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");
+    }
 }

+ 28 - 10
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);
     }

+ 75 - 33
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();
+        schemaCreateForm
+                .waitUntilScreenReady();
         Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
-        schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
+        schemaCreateForm
+                .selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
                 .setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
-                .clickSubmit()
+                .clickSubmit();
+        schemaDetails
                 .waitUntilScreenReady();
-        Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaDetails().getCompatibility(), "getCompatibility()");
+        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);
     }

+ 49 - 23
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();
+        naviSideBar
+                .openSideMenu(TOPICS);
+        topicsList
                 .waitUntilScreenReady();
-        mainPage.goTo()
-                .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
-        Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
+        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()
+                .openTopic(TOPIC_FOR_UPDATE.getName());
+        topicDetails
                 .waitUntilScreenReady()
-                .openEditSettings()
+                .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()
-                .waitUntilScreenReady();
-        topicsList.goTo(CLUSTER_NAME)
+                .sendData();
+        topicDetails
                 .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();