Quellcode durchsuchen

Issue#2437 (#2626)

* [e2e] refactoring of assertions cross tests #2437

* [e2e] refactoring of assertions cross tests #2437

* [e2e] refactoring of assertions cross tests #2437

* [e2e] refactoring of assertions cross tests #2437

* [e2e] refactoring of assertions cross tests #2437

* [e2e]Fix refactoring of assertions cross tests #2437

* [e2e]Fix refactoring of assertions cross tests #2437

* [e2e]Fix refactoring of assertions cross tests #2437
Arthur vor 2 Jahren
Ursprung
Commit
6e8ce77fd3

+ 20 - 0
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/extensions/WebUtils.java

@@ -0,0 +1,20 @@
+package com.provectus.kafka.ui.extensions;
+
+import com.codeborne.selenide.Condition;
+import com.codeborne.selenide.SelenideElement;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class WebUtils {
+
+    public static boolean isVisible(SelenideElement element) {
+        boolean isVisible = false;
+        try {
+            element.shouldBe(Condition.visible);
+            isVisible = true;
+        } catch (Throwable e) {
+            log.debug("Element {} is not visible", element.getSearchCriteria());
+        }
+        return isVisible;
+    }
+}

+ 0 - 13
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/MainPage.java

@@ -5,7 +5,6 @@ import com.codeborne.selenide.Selenide;
 import com.codeborne.selenide.SelenideElement;
 import com.provectus.kafka.ui.extensions.WaitUtils;
 import com.provectus.kafka.ui.helpers.TestConfiguration;
-import com.provectus.kafka.ui.pages.topic.TopicsList;
 import io.qameta.allure.Step;
 import lombok.experimental.ExtensionMethod;
 import org.openqa.selenium.By;
@@ -31,16 +30,6 @@ public class MainPage {
         return this;
     }
 
-    @Step
-    public void topicIsVisible(String topicName) {
-        new TopicsList().isTopicVisible(topicName);
-    }
-    @Step
-    public void topicIsNotVisible(String topicName){
-        new TopicsList().isTopicNotVisible(topicName);
-    }
-
-
     public enum SideMenuOptions {
         BROKERS("Brokers"),
         TOPICS("Topics"),
@@ -54,8 +43,6 @@ public class MainPage {
         }
     }
 
-
-
     @Step
     public MainPage goToSideMenu(String clusterName, SideMenuOptions option) {
         SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible);

+ 5 - 12
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/ConnectorsList.java

@@ -9,7 +9,9 @@ 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.extensions.WebUtils.isVisible;
 
 @ExtensionMethod(WaitUtils.class)
 public class ConnectorsList {
@@ -34,27 +36,18 @@ public class ConnectorsList {
         return new ConnectorCreateView();
     }
 
-
     @Step
     public ConnectorsList openConnector(String connectorName) {
         $(By.linkText(connectorName)).click();
         return this;
     }
 
-
     @Step
-    public ConnectorsList isNotVisible(String connectorName) {
+    public boolean isConnectorVisible(String connectorName) {
         $(By.xpath("//table")).shouldBe(Condition.visible);
-        $x("//tbody//td[1]//a[text()='" + connectorName + "']").shouldBe(Condition.not(Condition.visible));
-        return this;
+        return isVisible($x("//tbody//td[1]//a[text()='" + connectorName + "']"));
     }
 
-    @Step("Verify that connector {connectorName} is visible in the list")
-    public ConnectorsList connectorIsVisibleInList(String connectorName, String topicName) {
-        $x("//table//a[@href='/ui/clusters/local/connects/first/connectors/" + connectorName + "']").shouldBe(Condition.visible);
-        $$(By.linkText(topicName));
-        return this;
-    }
     @Step
     public ConnectorsList connectorIsUpdatedInList(String connectorName, String topicName) {
         $(By.xpath(String.format("//a[text() = '%s']", connectorName))).shouldBe(Condition.visible);

+ 7 - 11
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaRegistryList.java

@@ -7,15 +7,18 @@ import io.qameta.allure.Step;
 import org.openqa.selenium.By;
 
 import static com.codeborne.selenide.Selenide.*;
+import static com.provectus.kafka.ui.extensions.WebUtils.isVisible;
 
 public class SchemaRegistryList {
 
     private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]"));
+
     @Step
     public SchemaCreateView clickCreateSchema() {
         BrowserUtils.javaExecutorClick(schemaButton);
         return new SchemaCreateView();
     }
+
     @Step
     public SchemaView openSchema(String schemaName) {
         $(By.xpath("//*[contains(text(),'" + schemaName + "')]")).click();
@@ -23,17 +26,10 @@ public class SchemaRegistryList {
     }
 
     @Step
-    public SchemaRegistryList isNotVisible(String schemaName) {
-        $x(String.format("//*[contains(text(),'%s')]", schemaName)).shouldNotBe(Condition.visible);
-        return this;
-    }
-
-    @Step
-    public SchemaRegistryList isSchemaVisible(String schemaName) {
-        $$("tbody td>a")
-                .find(Condition.exactText(schemaName))
-                .shouldBe(Condition.visible);
-        return this;
+    public boolean isSchemaVisible(String schemaName) {
+        $(By.xpath("//table")).shouldBe(Condition.visible);
+        return isVisible($x("//tbody//td//a[text()='" + schemaName + "']"));
     }
 }
 
+

+ 2 - 5
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaView.java

@@ -2,13 +2,11 @@ package com.provectus.kafka.ui.pages.schema;
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.SelenideElement;
-import com.provectus.kafka.ui.api.model.CompatibilityLevel;
 import com.provectus.kafka.ui.utils.BrowserUtils;
 import io.qameta.allure.Step;
 import org.openqa.selenium.By;
 
 import static com.codeborne.selenide.Selenide.*;
-
 public class SchemaView {
 
     protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first();
@@ -20,9 +18,8 @@ public class SchemaView {
     }
 
     @Step
-    public SchemaView isCompatibility(CompatibilityLevel.CompatibilityEnum compatibility){
-        $x("//div//p[.='" + compatibility.getValue() + "']").shouldBe(Condition.visible);
-        return this;
+    public String getCompatibility() {
+        return $x("//h4[contains(text(),'Compatibility')]/../p").getText();
     }
 
     @Step

+ 15 - 13
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicCreateEditSettingsView.java

@@ -140,21 +140,23 @@ public class TopicCreateEditSettingsView {
         return this;
     }
     @Step
-    public TopicCreateEditSettingsView maxSizeOnDiskIs(String size) {
-        String retentionBytes = new KafkaUISelectElement("retentionBytes")
-                .getCurrentValue();
-        assertThat(retentionBytes)
-                .as("Max size on disk in GB should be " + size)
-                .isEqualTo(size);
-        return this;
+    public String getCleanupPolicy() {
+        return new KafkaUISelectElement("cleanupPolicy").getCurrentValue();
     }
+
     @Step
-    public TopicCreateEditSettingsView maxMessageBytesIs(String bytes) {
-        String value = maxMessageBytes.getValue();
-        assertThat(value)
-                .as("Maximum message size in bytes should be " + bytes)
-                .isEqualTo(bytes);
-        return this;
+    public String getTimeToRetain() {
+        return timeToRetain.getValue();
+    }
+
+    @Step
+    public String getMaxSizeOnDisk() {
+        return new KafkaUISelectElement("retentionBytes").getCurrentValue();
+    }
+
+    @Step
+    public String getMaxMessageBytes() {
+        return maxMessageBytes.getValue();
     }
 
 

+ 1 - 1
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicView.java

@@ -33,7 +33,7 @@ public class TopicView {
     @Step
     public TopicCreateEditSettingsView openEditSettings() {
         BrowserUtils.javaExecutorClick(dotMenuBtn);
-        $x("//a[text()= '" + DotMenuHeaderItems.EDIT_SETTINGS.getValue() + "']").click();
+        $x("//li[@role][text()='Edit settings']").click();
         return new TopicCreateEditSettingsView();
     }
 

+ 4 - 6
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java

@@ -11,6 +11,7 @@ import lombok.experimental.ExtensionMethod;
 import org.openqa.selenium.By;
 
 import static com.codeborne.selenide.Selenide.*;
+import static com.provectus.kafka.ui.extensions.WebUtils.isVisible;
 
 @ExtensionMethod(WaitUtils.class)
 public class TopicsList {
@@ -37,12 +38,9 @@ public class TopicsList {
     }
 
     @Step
-    public TopicsList isTopicVisible(String topicName) {
-        $$("tbody td>a")
-                .shouldBe(CollectionCondition.sizeGreaterThan(4))
-                .find(Condition.exactText(topicName))
-                .shouldBe(Condition.visible);
-        return this;
+    public boolean isTopicVisible(String topicName) {
+        $(By.xpath("//table")).shouldBe(Condition.visible);
+        return isVisible($x("//tbody//td//a[text()='" + topicName + "']"));
     }
 
     @Step

+ 7 - 10
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/ConnectorsTests.java

@@ -8,10 +8,7 @@ import com.provectus.kafka.ui.utils.qaseIO.Status;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
 import io.qase.api.annotation.CaseId;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -69,8 +66,8 @@ public class ConnectorsTests extends BaseTest {
                 .waitUntilScreenReady()
                 .setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
         pages.openConnectorsList(CLUSTER_NAME)
-                .waitUntilScreenReady()
-                .connectorIsVisibleInList(connectorForCreate.getName(), TOPIC_FOR_CREATE.getName());
+                .waitUntilScreenReady();
+        Assertions.assertTrue(pages.connectorsList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()");
         CONNECTOR_LIST.add(connectorForCreate);
     }
 
@@ -86,8 +83,8 @@ public class ConnectorsTests extends BaseTest {
         pages.connectorsView.connectorIsVisibleOnOverview();
         pages.connectorsView.openEditConfig()
                 .updConnectorConfig(CONNECTOR_FOR_UPDATE.getConfig());
-        pages.openConnectorsList(CLUSTER_NAME)
-                .connectorIsVisibleInList(CONNECTOR_FOR_UPDATE.getName(), TOPIC_FOR_UPDATE.getName());
+        pages.openConnectorsList(CLUSTER_NAME);
+        Assertions.assertTrue(pages.connectorsList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()");
     }
 
     @DisplayName("should delete connector")
@@ -100,8 +97,8 @@ public class ConnectorsTests extends BaseTest {
                 .waitUntilScreenReady()
                 .openConnector(CONNECTOR_FOR_DELETE.getName());
         pages.connectorsView.clickDeleteButton();
-        pages.openConnectorsList(CLUSTER_NAME)
-                .isNotVisible(CONNECTOR_FOR_DELETE.getName());
+        pages.openConnectorsList(CLUSTER_NAME);
+        Assertions.assertFalse(pages.connectorsList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()),"isConnectorVisible()");
         CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
     }
 

+ 12 - 11
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/SchemasTests.java

@@ -6,6 +6,7 @@ import com.provectus.kafka.ui.helpers.Helpers;
 import com.provectus.kafka.ui.models.Schema;
 import com.provectus.kafka.ui.pages.MainPage;
 import com.provectus.kafka.ui.pages.schema.SchemaEditView;
+import com.provectus.kafka.ui.pages.schema.SchemaView;
 import com.provectus.kafka.ui.utils.qaseIO.Status;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
@@ -53,7 +54,7 @@ public class SchemasTests extends BaseTest {
                 .waitUntilScreenReady();
         pages.mainPage
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
-        pages.schemaRegistry.isSchemaVisible(schemaAvro.getName());
+        Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaAvro);
     }
 
@@ -74,8 +75,8 @@ public class SchemasTests extends BaseTest {
         new SchemaEditView().selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
                 .setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
                 .clickSubmit()
-                .waitUntilScreenReady()
-                .isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE);
+                .waitUntilScreenReady();
+        Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaView().getCompatibility(), "getCompatibility()");
     }
 
     @DisplayName("should delete AVRO schema")
@@ -89,8 +90,8 @@ public class SchemasTests extends BaseTest {
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
         pages.schemaRegistry.openSchema(AVRO_API.getName())
                 .waitUntilScreenReady()
-                .removeSchema()
-                .isNotVisible(AVRO_API.getName());
+                .removeSchema();
+        Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.remove(AVRO_API);
     }
 
@@ -112,7 +113,7 @@ public class SchemasTests extends BaseTest {
                 .waitUntilScreenReady();
         pages.mainPage
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
-        pages.schemaRegistry.isSchemaVisible(schemaJson.getName());
+        Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaJson);
     }
 
@@ -127,8 +128,8 @@ public class SchemasTests extends BaseTest {
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
         pages.schemaRegistry.openSchema(JSON_API.getName())
                 .waitUntilScreenReady()
-                .removeSchema()
-                .isNotVisible(JSON_API.getName());
+                .removeSchema();
+        Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.remove(JSON_API);
     }
 
@@ -150,7 +151,7 @@ public class SchemasTests extends BaseTest {
                 .waitUntilScreenReady();
         pages.mainPage
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
-        pages.schemaRegistry.isSchemaVisible(schemaProtobuf.getName());
+        Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
         SCHEMA_LIST.add(schemaProtobuf);
     }
 
@@ -165,8 +166,8 @@ public class SchemasTests extends BaseTest {
                 .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
         pages.schemaRegistry.openSchema(PROTOBUF_API.getName())
                 .waitUntilScreenReady()
-                .removeSchema()
-                .isNotVisible(PROTOBUF_API.getName());
+                .removeSchema();
+        Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
         SCHEMA_LIST.remove(PROTOBUF_API);
     }
 

+ 21 - 17
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java

@@ -4,12 +4,13 @@ import com.provectus.kafka.ui.base.BaseTest;
 import com.provectus.kafka.ui.helpers.Helpers;
 import com.provectus.kafka.ui.models.Topic;
 import com.provectus.kafka.ui.pages.MainPage;
+import com.provectus.kafka.ui.pages.topic.TopicCreateEditSettingsView;
 import com.provectus.kafka.ui.pages.topic.TopicView;
 import com.provectus.kafka.ui.utils.qaseIO.Status;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
 import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
-import io.qameta.allure.Issue;
 import io.qase.api.annotation.CaseId;
+import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.*;
 
 import java.util.ArrayList;
@@ -51,14 +52,13 @@ public class TopicTests extends BaseTest {
                 .sendData()
                 .waitUntilScreenReady();
         pages.open()
-                .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS)
-                .topicIsVisible(topicToCreate.getName());
+                .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
+        Assertions.assertTrue(pages.topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
         TOPIC_LIST.add(topicToCreate);
     }
 
-    @Disabled("Due to issue https://github.com/provectus/kafka-ui/issues/1500 ignore this test")
+    @Disabled("https://github.com/provectus/kafka-ui/issues/2625")
     @DisplayName("should update a topic")
-    @Issue("1500")
     @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
     @AutomationStatus(status = Status.AUTOMATED)
     @CaseId(197)
@@ -66,7 +66,7 @@ public class TopicTests extends BaseTest {
     public void updateTopic() {
         pages.openTopicsList(CLUSTER_NAME)
                 .waitUntilScreenReady();
-        pages.openTopicView(CLUSTER_NAME, TOPIC_FOR_UPDATE.getName())
+        pages.topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
                 .waitUntilScreenReady()
                 .openEditSettings()
                 .selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
@@ -78,13 +78,15 @@ public class TopicTests extends BaseTest {
                 .waitUntilScreenReady();
         pages.openTopicsList(CLUSTER_NAME)
                 .waitUntilScreenReady();
-        pages.openTopicView(CLUSTER_NAME, TOPIC_FOR_UPDATE.getName())
-                .openEditSettings()
-                // Assertions
-                .cleanupPolicyIs(TOPIC_FOR_UPDATE.getCompactPolicyValue())
-                .timeToRetainIs(TOPIC_FOR_UPDATE.getTimeToRetainData())
-                .maxSizeOnDiskIs(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
-                .maxMessageBytesIs(TOPIC_FOR_UPDATE.getMaxMessageBytes());
+        pages.topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
+                .waitUntilScreenReady()
+                .openEditSettings();
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(new TopicCreateEditSettingsView().getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue());
+        softly.assertThat(new TopicCreateEditSettingsView().getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
+        softly.assertThat(new TopicCreateEditSettingsView().getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk());
+        softly.assertThat(new TopicCreateEditSettingsView().getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
+        softly.assertAll();
     }
 
     @DisplayName("should delete topic")
@@ -99,8 +101,8 @@ public class TopicTests extends BaseTest {
                 .waitUntilScreenReady()
                 .deleteTopic();
         pages.openTopicsList(CLUSTER_NAME)
-                .waitUntilScreenReady()
-                .isTopicNotVisible(TOPIC_FOR_DELETE.getName());
+                .waitUntilScreenReady();
+        Assertions.assertFalse(pages.topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()),"isTopicVisible");
         TOPIC_LIST.remove(TOPIC_FOR_DELETE);
     }
 
@@ -119,8 +121,10 @@ public class TopicTests extends BaseTest {
                 .setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
                 .setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
                 .submitProduceMessage();
-        Assertions.assertTrue(pages.topicView.isKeyMessageVisible(TOPIC_FOR_UPDATE.getMessageKey()));
-        Assertions.assertTrue(pages.topicView.isContentMessageVisible(TOPIC_FOR_UPDATE.getMessageContent().trim()));
+        SoftAssertions softly = new SoftAssertions();
+        softly.assertThat(pages.topicView.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
+        softly.assertThat(pages.topicView.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
+        softly.assertAll();
     }
 
     @AfterAll