Repository: provectus/kafka-ui
Issue: [e2e] review tests to use more object details while creating and updating
Labels: scope/QA
scope/AQA

we have a lot of missed details (in Topic for example) that we can set while creating and assert than
need to review and add as much details as possible and make assertions after creation not only for new object in the list

Issue comments:

Pull request review comments:
use var type pls, 'Locator' in this case -> connectorHeaderLocator
why does it called tabElementLocator? rename to connectorNameLocator for example
it's not a locator, you already defined it as SelenideElement. seems it's schemaTypeDdl?
schemaHeaderLocator
seems here we need to return boolean to check is element by defined locator visible. and also update assertion in regarding test
seems here we need to return boolean to check is element by defined locator visible. and also update assertion in regarding test
where do we use this method?
I have concerns about two different strings with the same value -> //li[@value='%s']
extra spaces
we can leave one of them, call it ddlElementLocator and use in both methods
cleanUpPolicyLocator and partitionsLocator are SelenideElements
topicHeaderLocator
no reason to use SoftAssertions to check elements in different places
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
I've asked you to rename tabElementLocator -> connectorNameLocator
why did you create another one element?
where do we use this method?
really?
where do we use this method?
incomplete, because u find element using its name as locator, then u get in back and compare?
incomplete, because u find element using its name as locator, then u get in back and compare?
incomplete, because u find element using its name as locator, then u get in back and compare?
incomplete, because u find element using its name as locator, then u get in back and compare?
Removed.
Removed.
Renamed and removed.
Removed.
Fixed.
Have done.
Changed to boolean assert.
Changed to boolean assert.
Changed to boolean assert.
Changed to boolean assert.
why do we need to apply String.valueOf() to string?
why do we need to apply String.valueOf() to string?
here we need to wait until connectorDetails screen loaded
here we check elements on the same page. why we can't use isSchemaHeaderVisible() check inside SoftAssertions?
here we check elements on the same page. why we can't use isSchemaHeaderVisible() check inside SoftAssertions?
here we check elements on the same page. why we can't use isSchemaHeaderVisible() check inside SoftAssertions?
here we check elements on the same page. why we can't use isSchemaHeaderVisible() check inside SoftAssertions?
btw, there's no var %s in locator, method is incorrect
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.
are u sure in your approach?
Assertions? inside SoftAssertions? is it Ok??
Assertions? inside SoftAssertions? is it Ok??
Assertions? inside SoftAssertions? is it Ok??
Assertions? inside SoftAssertions? is it Ok??
Fixed.
Fixed.
Fixed.
Fixed.
Fixed.

Patch that resolved the issue:
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Schema.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Schema.java
index 8097c2e7d72..a9c7dca75bf 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Schema.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Schema.java
@@ -14,19 +14,19 @@ public class Schema {
     private SchemaType type;
 
     public static Schema createSchemaAvro(){
-        return new Schema().setName(randomAlphabetic(10))
+        return new Schema().setName("schema_avro-" + randomAlphabetic(5))
                 .setType(SchemaType.AVRO)
                 .setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_value.json");
     }
 
     public static Schema createSchemaJson(){
-        return new Schema().setName(randomAlphabetic(10))
+        return new Schema().setName("schema_json-" + randomAlphabetic(5))
                 .setType(SchemaType.JSON)
                 .setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_Json_Value.json");
     }
 
     public static Schema createSchemaProtobuf(){
-        return new Schema().setName(randomAlphabetic(10))
+        return new Schema().setName("schema_protobuf-" + randomAlphabetic(5))
                 .setType(SchemaType.PROTOBUF)
                 .setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_protobuf_value.txt");
     }
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Topic.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Topic.java
index 18763e37191..d9a306a4f57 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Topic.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/models/Topic.java
@@ -1,10 +1,14 @@
 package com.provectus.kafka.ui.models;
 
+import com.provectus.kafka.ui.pages.topic.TopicCreateEditForm;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 @Data
 @Accessors(chain = true)
 public class Topic {
-    private String name, cleanupPolicyValue, timeToRetainData, maxSizeOnDisk, maxMessageBytes, messageKey, messageContent ;
-}
+    private String name, timeToRetainData, maxMessageBytes, messageKey, messageContent,
+            partitions, customParameter;
+    private TopicCreateEditForm.CleanupPolicyValue cleanupPolicyValue;
+    private TopicCreateEditForm.MaxSizeOnDisk maxSizeOnDisk;
+}
\ No newline at end of file
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java
index 0f6f4c22609..565bbd24e5c 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/NaviSideBar.java
@@ -11,6 +11,7 @@
 
 import static com.codeborne.selenide.Selenide.$x;
 import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
+import static com.provectus.kafka.ui.utilities.WebUtils.clickByActions;
 
 public class NaviSideBar {
 
@@ -22,7 +23,7 @@ public class NaviSideBar {
     private SelenideElement expandCluster(String clusterName) {
         SelenideElement clusterElement = $x(String.format(clusterElementLocator, clusterName)).shouldBe(Condition.visible);
         if (clusterElement.parent().$$x(".//ul").size() == 0) {
-            clusterElement.click();
+            clickByActions(clusterElement);
         }
         return clusterElement;
     }
@@ -36,10 +37,8 @@ public NaviSideBar waitUntilScreenReady() {
 
     @Step
     public NaviSideBar openSideMenu(String clusterName, SideMenuOption option) {
-        expandCluster(clusterName)
-                .parent()
-                .$x(String.format(sideMenuOptionElementLocator, option.value))
-                .click();
+        clickByActions(expandCluster(clusterName).parent()
+                .$x(String.format(sideMenuOptionElementLocator, option.value)));
         return this;
     }
 
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorCreateForm.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorCreateForm.java
index 5c007137465..26cab86f63b 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorCreateForm.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorCreateForm.java
@@ -5,6 +5,7 @@
 import io.qameta.allure.Step;
 
 import static com.codeborne.selenide.Selenide.$x;
+import static com.codeborne.selenide.Selenide.refresh;
 import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
 
 public class ConnectorCreateForm {
@@ -23,13 +24,18 @@ public ConnectorCreateForm waitUntilScreenReady() {
     }
 
     @Step
-    public ConnectorCreateForm setConnectorConfig(String connectName, String configJson) {
+    public ConnectorCreateForm setConnectorDetails(String connectName, String configJson) {
         nameField.shouldBe(Condition.enabled).setValue(connectName);
         configField.shouldBe(Condition.enabled).click();
         contentTextArea.setValue(configJson);
         nameField.shouldBe(Condition.enabled).click();
-        clickByJavaScript(submitBtn);
-        loadingSpinner.shouldBe(Condition.disappear);
         return this;
     }
-}
\ No newline at end of file
+
+    @Step
+    public ConnectorCreateForm clickSubmitButton() {
+      clickByJavaScript(submitBtn);
+      loadingSpinner.shouldBe(Condition.disappear);
+      return this;
+    }
+}
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorDetails.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorDetails.java
index c099c60563d..e5e6b4cbd3c 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorDetails.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorDetails.java
@@ -1,35 +1,36 @@
 package com.provectus.kafka.ui.pages.connector;
 
+import static com.codeborne.selenide.Selenide.$x;
+import static com.provectus.kafka.ui.utilities.WebUtils.clearByKeyboard;
+import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
+import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
+
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.SelenideElement;
 import io.qameta.allure.Step;
-
+import java.time.Duration;
 import java.util.Arrays;
 
-import static com.codeborne.selenide.Selenide.$x;
-import static com.provectus.kafka.ui.utilities.WebUtils.clearByKeyboard;
-import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
-
 public class ConnectorDetails {
 
-    protected SelenideElement loadingSpinner = $x("//*[contains(text(),'Loading')]");
-    protected SelenideElement dotMenuBtn = $x("//button[@aria-label='Dropdown Toggle']");
-    protected SelenideElement deleteBtn = $x("//li/div[contains(text(),'Delete')]");
-    protected SelenideElement confirmBtnMdl = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
-    protected SelenideElement submitBtn = $x("//button[@type='submit']");
-    protected SelenideElement contentTextArea = $x("//textarea[@class='ace_text-input']");
-    protected SelenideElement taskTab = $x("//a[contains(text(),'Tasks')]");
-    protected SelenideElement configTab = $x("//a[contains(text(),'Config')]");
-    protected SelenideElement configField = $x("//div[@id='config']");
-    protected SelenideElement successAlertMessage = $x("//div[contains(text(),'Config successfully updated')]");
+  protected SelenideElement loadingSpinner = $x("//*[contains(text(),'Loading')]");
+  protected SelenideElement dotMenuBtn = $x("//button[@aria-label='Dropdown Toggle']");
+  protected SelenideElement deleteBtn = $x("//li/div[contains(text(),'Delete')]");
+  protected SelenideElement confirmBtnMdl = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
+  protected SelenideElement submitBtn = $x("//button[@type='submit']");
+  protected SelenideElement contentTextArea = $x("//textarea[@class='ace_text-input']");
+  protected SelenideElement taskTab = $x("//a[contains(text(),'Tasks')]");
+  protected SelenideElement configTab = $x("//a[contains(text(),'Config')]");
+  protected SelenideElement configField = $x("//div[@id='config']");
+  protected SelenideElement successAlertMessage = $x("//div[contains(text(),'Config successfully updated')]");
+  protected String connectorHeaderLocator = "//h1[contains(text(),'%s')]";
 
-
-    @Step
-    public ConnectorDetails waitUntilScreenReady() {
-        loadingSpinner.shouldBe(Condition.disappear);
-        Arrays.asList(taskTab,configTab).forEach(elementsMenu -> elementsMenu.shouldBe(Condition.visible));
-        return this;
-    }
+  @Step
+  public ConnectorDetails waitUntilScreenReady() {
+    loadingSpinner.shouldBe(Condition.disappear);
+    dotMenuBtn.shouldBe(Condition.visible);
+    return this;
+  }
 
     @Step
     public ConnectorDetails openConfigTab() {
@@ -43,11 +44,16 @@ public ConnectorDetails setConfig(String configJson) {
         clearByKeyboard(contentTextArea);
         contentTextArea.setValue(configJson);
         configField.shouldBe(Condition.enabled).click();
-        clickByJavaScript(submitBtn);
-        successAlertMessage.shouldBe(Condition.visible);
         return this;
     }
 
+    @Step
+    public ConnectorDetails clickSubmitButton() {
+      clickByJavaScript(submitBtn);
+      successAlertMessage.shouldBe(Condition.visible);
+      return this;
+    }
+
     @Step
     public ConnectorDetails openDotMenu() {
         clickByJavaScript(dotMenuBtn);
@@ -74,4 +80,9 @@ public ConnectorDetails deleteConnector() {
         clickConfirmBtn();
         return this;
     }
-}
\ No newline at end of file
+
+    @Step
+    public boolean isConnectorHeaderVisible(String connectorName) {
+        return isVisible($x(String.format(connectorHeaderLocator,connectorName)));
+    }
+}
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 36a905d2d91..16104ac1ca8 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
@@ -15,16 +15,15 @@
 public class KafkaConnectList {
 
     protected SelenideElement loadingSpinner = $x("//*[contains(text(),'Loading')]");
-    protected SelenideElement pageTitle = $x("//h1[text()='Connectors']");
     protected SelenideElement createConnectorBtn = $x("//button[contains(text(),'Create Connector')]");
     protected SelenideElement connectorsGrid = $x("//table");
-    protected String tabElementLocator = "//td[contains(text(),'%s')]";
+    protected String connectorNameLocator = "//td[contains(text(),'%s')]";
 
     @Step
     public KafkaConnectList waitUntilScreenReady() {
-        loadingSpinner.shouldBe(Condition.disappear);
-        pageTitle.shouldBe(Condition.visible);
-        return this;
+      loadingSpinner.shouldBe(Condition.disappear);
+      createConnectorBtn.shouldBe(Condition.visible);
+      return this;
     }
 
     @Step
@@ -35,7 +34,7 @@ public KafkaConnectList clickCreateConnectorBtn() {
 
     @Step
     public KafkaConnectList openConnector(String connectorName) {
-        $x(String.format(tabElementLocator,connectorName))
+        $x(String.format(connectorNameLocator, connectorName))
                 .shouldBe(Condition.enabled).click();
         return this;
     }
@@ -43,13 +42,13 @@ public KafkaConnectList openConnector(String connectorName) {
     @Step
     public boolean isConnectorVisible(String connectorName) {
         connectorsGrid.shouldBe(Condition.visible);
-        return isVisible($x(String.format(tabElementLocator,connectorName)));
+        return isVisible($x(String.format(connectorNameLocator,connectorName)));
     }
 
     @Step
     public KafkaConnectList connectorIsUpdatedInList(String connectorName, String topicName) {
-        $x(String.format(tabElementLocator,connectorName)).shouldBe(Condition.visible);
-        By.xpath(String.format(tabElementLocator,topicName)).refreshUntil(Condition.visible);
+        $x(String.format(connectorNameLocator,connectorName)).shouldBe(Condition.visible);
+        By.xpath(String.format(connectorNameLocator,topicName)).refreshUntil(Condition.visible);
         return this;
     }
 }
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaDetails.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaDetails.java
index e3f392514b5..981de748e99 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaDetails.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaDetails.java
@@ -7,6 +7,7 @@
 import static com.codeborne.selenide.Selenide.$$x;
 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;
 
 public class SchemaDetails {
 
@@ -17,6 +18,8 @@ public class SchemaDetails {
     protected SelenideElement editSchemaBtn = $x("//button[contains(text(),'Edit Schema')]");
     protected SelenideElement removeBtn = $x("//*[contains(text(),'Remove')]");
     protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
+    protected SelenideElement schemaTypeDdl = $x("//h4[contains(text(),'Type')]/../p");
+    protected String schemaHeaderLocator = "//h1[contains(text(),'%s')]";
 
     @Step
     public SchemaDetails waitUntilScreenReady() {
@@ -30,6 +33,16 @@ public String getCompatibility() {
         return compatibilityField.getText();
     }
 
+    @Step
+    public boolean isSchemaHeaderVisible(String schemaName) {
+        return isVisible($x(String.format(schemaHeaderLocator,schemaName)));
+    }
+
+    @Step
+    public String getSchemaType() {
+        return schemaTypeDdl.getText();
+    }
+
     @Step
     public SchemaDetails openEditSchema(){
         editSchemaBtn.shouldBe(Condition.visible).click();
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicCreateEditForm.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicCreateEditForm.java
index 8a71ddb6ffb..539520445ed 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicCreateEditForm.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicCreateEditForm.java
@@ -14,12 +14,14 @@ public class TopicCreateEditForm {
 
     protected SelenideElement loadingSpinner = $x("//*[contains(text(),'Loading')]");
     protected SelenideElement timeToRetainField = $x("//input[@id='timeToRetain']");
+    protected SelenideElement partitionsField = $x("//input[@name='partitions']");
     protected SelenideElement nameField = $x("//input[@name='name']");
     protected SelenideElement maxMessageBytesField = $x("//input[@name='maxMessageBytes']");
     protected SelenideElement minInSyncReplicasField = $x("//input[@name='minInSyncReplicas']");
     protected SelenideElement cleanUpPolicyDdl = $x("//ul[@id='topicFormCleanupPolicy']");
+    protected SelenideElement maxSizeOnDiscDdl = $x("//ul[@id='topicFormRetentionBytes']");
     protected SelenideElement createTopicBtn = $x("//button[@type='submit']");
-    protected String cleanUpPolicyTypeLocator = "//li[text()='%s']";
+    protected String ddlElementLocator = "//li[@value='%s']";
 
     @Step
     public TopicCreateEditForm waitUntilScreenReady(){
@@ -53,8 +55,9 @@ public TopicCreateEditForm setTimeToRetainDataInMs(String ms) {
     }
 
     @Step
-    public TopicCreateEditForm setMaxSizeOnDiskInGB(String value) {
-        new KafkaUISelectElement("retentionBytes").selectByVisibleText(value);
+    public TopicCreateEditForm setMaxSizeOnDiskInGB(MaxSizeOnDisk MaxSizeOnDisk) {
+        maxSizeOnDiscDdl.shouldBe(Condition.visible).click();
+        $x(String.format(ddlElementLocator, MaxSizeOnDisk.getOptionValue())).shouldBe(Condition.visible).click();
         return this;
     }
 
@@ -69,6 +72,12 @@ public TopicCreateEditForm setMaxMessageBytes(String bytes) {
         return setMaxMessageBytes(Long.parseLong(bytes));
     }
 
+    @Step
+    public TopicCreateEditForm setPartitions(String partitions){
+        partitionsField.setValue(partitions);
+        return this;
+    }
+
     @Step
     public TopicCreateEditForm setTimeToRetainDataInMsUsingButtons(String value) {
         timeToRetainField
@@ -81,15 +90,9 @@ public TopicCreateEditForm setTimeToRetainDataInMsUsingButtons(String value) {
     }
 
     @Step
-    public TopicCreateEditForm selectCleanupPolicy(CleanupPolicyValue cleanupPolicyValue) {
-        return selectFromDropDownByOptionValue("cleanupPolicy",
-                cleanupPolicyValue.getOptionValue());
-    }
-
-    @Step
-    public TopicCreateEditForm selectCleanupPolicy(String cleanupPolicyOptionValue) {
+    public TopicCreateEditForm selectCleanupPolicy(CleanupPolicyValue cleanupPolicyOptionValue) {
         cleanUpPolicyDdl.shouldBe(Condition.visible).click();
-        $x(String.format(cleanUpPolicyTypeLocator,cleanupPolicyOptionValue)).shouldBe(Condition.visible).click();
+        $x(String.format(ddlElementLocator,cleanupPolicyOptionValue.getOptionValue())).shouldBe(Condition.visible).click();
         return this;
     }
 
@@ -242,6 +245,30 @@ public String getVisibleText() {
         }
     }
 
+    public enum MaxSizeOnDisk {
+        NOT_SET("-1", "Not Set"),
+        SIZE_1_GB("1073741824", "1 GB"),
+        SIZE_10_GB("10737418240", "10 GB"),
+        SIZE_20_GB("21474836480", "20 GB"),
+        SIZE_50_GB("53687091200", "50 GB");
+
+        private final String optionValue;
+        private final String visibleText;
+
+        MaxSizeOnDisk(String optionValue, String visibleText) {
+            this.optionValue = optionValue;
+            this.visibleText = visibleText;
+        }
+
+        public String getOptionValue() {
+            return optionValue;
+        }
+
+        public String getVisibleText() {
+            return visibleText;
+        }
+    }
+
     private TopicCreateEditForm selectFromDropDownByOptionValue(String dropDownElementName,
                                                                 String optionValue) {
         KafkaUISelectElement select = new KafkaUISelectElement(dropDownElementName);
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 73ce320a485..a065169c0ce 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
@@ -11,6 +11,7 @@
 
 import static com.codeborne.selenide.Selenide.*;
 import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
+import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
 
 @ExtensionMethod({WaitUtils.class})
 public class TopicDetails {
@@ -26,7 +27,10 @@ public class TopicDetails {
     protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
     protected SelenideElement produceMessageBtn = $x("//div//button[text()='Produce Message']");
     protected SelenideElement contentMessageTab = $x("//html//div[@id='root']/div/main//table//p");
+    protected SelenideElement cleanUpPolicyField = $x("//div[contains(text(),'Clean Up Policy')]/../span/*");
+    protected SelenideElement partitionsField = $x("//div[contains(text(),'Partitions')]/../span");
     protected String consumerIdLocator = "//a[@title='%s']";
+    protected String topicHeaderLocator = "//h1[contains(text(),'%s')]";
 
     @Step
     public TopicDetails waitUntilScreenReady() {
@@ -54,6 +58,21 @@ public TopicDetails openDotPartitionIdMenu() {
         return this;
     }
 
+    @Step
+    public String getCleanUpPolicy(){
+      return cleanUpPolicyField.getText();
+    }
+
+    @Step
+    public String getPartitions(){
+        return partitionsField.getText();
+    }
+
+    @Step
+    public boolean isTopicHeaderVisible(String topicName) {
+        return isVisible($x(String.format(topicHeaderLocator,topicName)));
+    }
+
     @Step
     public TopicDetails clickClearMessagesBtn() {
         clearMessagesBtn.shouldBe(Condition.visible.because("Clear Messages invisible")).click();
@@ -74,7 +93,6 @@ public TopicDetails clickProduceMessageBtn() {
         clickByJavaScript(produceMessageBtn);
         return this;
     }
-
     @Step
     public TopicDetails openConsumerGroup(String consumerId) {
         $x(String.format(consumerIdLocator, consumerId)).click();
@@ -158,4 +176,4 @@ public String toString() {
             return "TopicMenu{" + "value='" + value + '\'' + '}';
         }
     }
-}
\ No newline at end of file
+}
diff --git a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/utilities/WebUtils.java b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/utilities/WebUtils.java
index 7215cb7b86b..ad93bfbc772 100644
--- a/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/utilities/WebUtils.java
+++ b/kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/utilities/WebUtils.java
@@ -2,14 +2,25 @@
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.SelenideElement;
+import com.codeborne.selenide.WebDriverRunner;
 import lombok.extern.slf4j.Slf4j;
 import org.openqa.selenium.Keys;
+import org.openqa.selenium.interactions.Actions;
 
 import static com.codeborne.selenide.Selenide.executeJavaScript;
 
 @Slf4j
 public class WebUtils {
 
+    public static void clickByActions(SelenideElement element) {
+        log.debug("\nclickByActions: {}", element.getSearchCriteria());
+        element.shouldBe(Condition.enabled);
+        new Actions(WebDriverRunner.getWebDriver())
+                .moveToElement(element)
+                .click(element)
+                .perform();
+    }
+
     public static void clickByJavaScript(SelenideElement element) {
         log.debug("\nclickByJavaScript: {}", element.getSearchCriteria());
         element.shouldBe(Condition.enabled);
@@ -34,4 +45,5 @@ public static boolean isVisible(SelenideElement element) {
         }
         return isVisible;
     }
+
 }
\ No newline at end of file


Test patch:
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 bd06882887f..1203fc9ebcf 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
@@ -15,6 +15,7 @@
 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;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
 
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class ConnectorsTests extends BaseTest {
@@ -26,19 +27,19 @@ public class ConnectorsTests extends BaseTest {
     private static final String MESSAGE_CONTENT = "message_content_create_topic.json";
     private static final String MESSAGE_KEY = " ";
     private static final Topic TOPIC_FOR_CREATE = new Topic()
-            .setName("topic_for_create_connector")
+            .setName("topic_for_create_connector-" + randomAlphabetic(5))
             .setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
     private static final Topic TOPIC_FOR_DELETE = new Topic()
-            .setName("topic_for_delete_connector")
+            .setName("topic_for_delete_connector-" + randomAlphabetic(5))
             .setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
     private static final Topic TOPIC_FOR_UPDATE = new Topic()
-            .setName("topic_for_update_connector")
+            .setName("topic_for_update_connector-" + randomAlphabetic(5))
             .setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
     private static final Connector CONNECTOR_FOR_DELETE = new Connector()
-            .setName("sink_postgres_activities_e2e_checks_for_delete")
+            .setName("sink_postgres_activities_e2e_checks_for_delete-" + randomAlphabetic(5))
             .setConfig(getResourceAsString("delete_connector_config.json"));
     private static final Connector CONNECTOR_FOR_UPDATE = new Connector()
-            .setName("sink_postgres_activities_e2e_checks_for_update")
+            .setName("sink_postgres_activities_e2e_checks_for_update-" + randomAlphabetic(5))
             .setConfig(getResourceAsString("config_for_create_connector_via_api.json"));
 
     @BeforeAll
@@ -60,7 +61,7 @@ public void beforeAll() {
     @Test
     public void createConnector() {
         Connector connectorForCreate = new Connector()
-                .setName("sink_postgres_activities_e2e_checks")
+                .setName("sink_postgres_activities_e2e_checks-" + randomAlphabetic(5))
                 .setConfig(getResourceAsString("config_for_create_connector.json"));
         naviSideBar
                 .openSideMenu(KAFKA_CONNECT);
@@ -69,12 +70,23 @@ public void createConnector() {
                 .clickCreateConnectorBtn();
         connectorCreateForm
                 .waitUntilScreenReady()
-                .setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
+                .setConnectorDetails(connectorForCreate.getName(), connectorForCreate.getConfig())
+                .clickSubmitButton();
+        connectorDetails
+                .waitUntilScreenReady();
+        naviSideBar
+                .openSideMenu(KAFKA_CONNECT);
+        kafkaConnectList
+                .waitUntilScreenReady()
+                .openConnector(connectorForCreate.getName());
+        connectorDetails
+                .waitUntilScreenReady();
+        Assertions.assertTrue(connectorDetails.isConnectorHeaderVisible(connectorForCreate.getName()),"isConnectorTitleVisible()");
         naviSideBar
                 .openSideMenu(KAFKA_CONNECT);
         kafkaConnectList
                 .waitUntilScreenReady();
-        Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()), "isConnectorVisible()");
+        Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
         CONNECTOR_LIST.add(connectorForCreate);
     }
 
@@ -92,7 +104,8 @@ public void updateConnector() {
         connectorDetails
                 .waitUntilScreenReady()
                 .openConfigTab()
-                .setConfig(CONNECTOR_FOR_UPDATE.getConfig());
+                .setConfig(CONNECTOR_FOR_UPDATE.getConfig())
+                .clickSubmitButton();
         naviSideBar
                 .openSideMenu(KAFKA_CONNECT);
         kafkaConnectList
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 e76f28728e1..e0c33e2f3c0 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
@@ -8,6 +8,7 @@
 import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
 import io.qase.api.annotation.CaseId;
 import lombok.SneakyThrows;
+import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.*;
 
 import java.util.ArrayList;
@@ -54,11 +55,16 @@ void createSchemaAvro() {
                 .clickSubmitBtn();
         schemaDetails
                 .waitUntilScreenReady();
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(schemaDetails.isSchemaHeaderVisible(schemaAvro.getName())).as("isSchemaHeaderVisible()").isTrue();
+        softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaAvro.getType().getValue());
+        softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
+        softly.assertAll();
         naviSideBar
                 .openSideMenu(SCHEMA_REGISTRY);
         schemaRegistryList
                 .waitUntilScreenReady();
-        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
+        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaAvro);
     }
 
@@ -131,11 +137,16 @@ void createSchemaJson() {
                 .clickSubmitBtn();
         schemaDetails
                 .waitUntilScreenReady();
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(schemaDetails.isSchemaHeaderVisible(schemaJson.getName())).as("isSchemaHeaderVisible()").isTrue();
+        softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaJson.getType().getValue());
+        softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
+        softly.assertAll();
         naviSideBar
                 .openSideMenu(SCHEMA_REGISTRY);
         schemaRegistryList
                 .waitUntilScreenReady();
-        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
+        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaJson);
     }
 
@@ -180,11 +191,16 @@ void createSchemaProtobuf() {
                 .clickSubmitBtn();
         schemaDetails
                 .waitUntilScreenReady();
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(schemaDetails.isSchemaHeaderVisible(schemaProtobuf.getName())).as("isSchemaHeaderVisible()").isTrue();
+        softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaProtobuf.getType().getValue());
+        softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
+        softly.assertAll();
         naviSideBar
                 .openSideMenu(SCHEMA_REGISTRY);
         schemaRegistryList
                 .waitUntilScreenReady();
-        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
+        Assertions.assertTrue(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaProtobuf);
     }
 
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 33ad3d015a1..97f70c194e3 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
@@ -15,29 +15,36 @@
 import java.util.List;
 
 import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
+import static com.provectus.kafka.ui.pages.topic.TopicCreateEditForm.CleanupPolicyValue.COMPACT;
+import static com.provectus.kafka.ui.pages.topic.TopicCreateEditForm.CleanupPolicyValue.DELETE;
+import static com.provectus.kafka.ui.pages.topic.TopicCreateEditForm.MaxSizeOnDisk.SIZE_20_GB;
 import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
 import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
 import static org.assertj.core.api.Assertions.assertThat;
 
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TopicTests extends BaseTest {
     private static final long SUITE_ID = 2;
     private static final String SUITE_TITLE = "Topics";
-
+    private static final Topic TOPIC_TO_CREATE = new Topic()
+            .setName("new-topic-"+ randomAlphabetic(5))
+            .setPartitions("1")
+            .setCleanupPolicyValue(DELETE);
     private static final Topic TOPIC_FOR_UPDATE = new Topic()
-            .setName("topic-to-update")
-            .setCleanupPolicyValue("Compact")
+            .setName("topic-to-update-" + randomAlphabetic(5))
+            .setCleanupPolicyValue(COMPACT)
             .setTimeToRetainData("604800001")
-            .setMaxSizeOnDisk("20 GB")
+            .setMaxSizeOnDisk(SIZE_20_GB)
             .setMaxMessageBytes("1000020")
             .setMessageKey(fileToString(System.getProperty("user.dir") + "/src/test/resources/producedkey.txt"))
             .setMessageContent(fileToString(System.getProperty("user.dir") + "/src/test/resources/testData.txt"));
     private static final Topic TOPIC_FOR_MESSAGES = new Topic()
-            .setName("topic-with-clean-message-attribute")
+            .setName("topic-with-clean-message-attribute-" + randomAlphabetic(5))
             .setMessageKey(fileToString(System.getProperty("user.dir") + "/src/test/resources/producedkey.txt"))
             .setMessageContent(fileToString(System.getProperty("user.dir") + "/src/test/resources/testData.txt"));
 
-    private static final Topic TOPIC_FOR_DELETE = new Topic().setName("topic-to-delete");
+    private static final Topic TOPIC_FOR_DELETE = new Topic().setName("topic-to-delete-" + randomAlphabetic(5));
     private static final List<Topic> TOPIC_LIST = new ArrayList<>();
 
     @BeforeAll
@@ -52,7 +59,6 @@ public void beforeAll() {
     @CaseId(199)
     @Test
     public void createTopic() {
-        Topic topicToCreate = new Topic().setName("new-topic");
         naviSideBar
                 .openSideMenu(TOPICS);
         topicsList
@@ -60,16 +66,28 @@ public void createTopic() {
                 .clickAddTopicBtn();
         topicCreateEditForm
                 .waitUntilScreenReady()
-                .setTopicName(topicToCreate.getName())
+                .setTopicName(TOPIC_TO_CREATE.getName())
+                .setPartitions(TOPIC_TO_CREATE.getPartitions())
+                .selectCleanupPolicy(TOPIC_TO_CREATE.getCleanupPolicyValue())
                 .clickCreateTopicBtn();
         topicDetails
                 .waitUntilScreenReady();
+        naviSideBar
+                .openSideMenu(TOPICS);
+        topicsList
+                .waitUntilScreenReady()
+                .openTopic(TOPIC_TO_CREATE.getName());
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(topicDetails.isTopicHeaderVisible(TOPIC_TO_CREATE.getName())).as("isTopicHeaderVisible()").isTrue();
+        softly.assertThat(topicDetails.getCleanUpPolicy()).as("getCleanUpPolicy()").isEqualTo(TOPIC_TO_CREATE.getCleanupPolicyValue().toString());
+        softly.assertThat(topicDetails.getPartitions()).as("getPartitions()").isEqualTo(TOPIC_TO_CREATE.getPartitions());
+        softly.assertAll();
         naviSideBar
                 .openSideMenu(TOPICS);
         topicsList
                 .waitUntilScreenReady();
-        Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()), "isTopicVisible");
-        TOPIC_LIST.add(topicToCreate);
+        Assertions.assertTrue(topicsList.isTopicVisible(TOPIC_TO_CREATE.getName()), "isTopicVisible");
+        TOPIC_LIST.add(TOPIC_TO_CREATE);
     }
 
     @Disabled("https://github.com/provectus/kafka-ui/issues/2625")
@@ -89,7 +107,7 @@ public void updateTopic() {
                 .openEditSettings();
         topicCreateEditForm
                 .waitUntilScreenReady()
-                .selectCleanupPolicy(TOPIC_FOR_UPDATE.getCleanupPolicyValue())
+                .selectCleanupPolicy((TOPIC_FOR_UPDATE.getCleanupPolicyValue()))
                 .setMinInsyncReplicas(10)
                 .setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
                 .setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
@@ -106,10 +124,10 @@ public void updateTopic() {
                 .waitUntilScreenReady()
                 .openEditSettings();
         SoftAssertions softly = new SoftAssertions();
-        softly.assertThat(topicCreateEditForm.getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCleanupPolicyValue());
-        softly.assertThat(topicCreateEditForm.getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
-        softly.assertThat(topicCreateEditForm.getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk());
-        softly.assertThat(topicCreateEditForm.getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
+        softly.assertThat(topicCreateEditForm.getCleanupPolicy()).as("getCleanupPolicy()").isEqualTo(TOPIC_FOR_UPDATE.getCleanupPolicyValue().getVisibleText());
+        softly.assertThat(topicCreateEditForm.getTimeToRetain()).as("getTimeToRetain()").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
+        softly.assertThat(topicCreateEditForm.getMaxSizeOnDisk()).as("getMaxSizeOnDisk()").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk().getVisibleText());
+        softly.assertThat(topicCreateEditForm.getMaxMessageBytes()).as("getMaxMessageBytes()").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
         softly.assertAll();
     }
 
@@ -134,7 +152,7 @@ public void deleteTopic() {
         Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()), "isTopicVisible");
         TOPIC_LIST.remove(TOPIC_FOR_DELETE);
     }
-    
+
     @DisplayName("produce message")
     @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
     @AutomationStatus(status = Status.AUTOMATED)