Ver código fonte

[e2e] TopicTests.redirectToConsumerFromTopicProfile : Redirect to consumer from topic profile (#2823)

* redirectToConsumerFromTopic init test created

* test execution clarification

* fix

* test brushing up

* test brushing up

* test brushing up

* test brushing up

* test brushing up

* test brushing up
Anton Mnykh 2 anos atrás
pai
commit
77f789fa6c

+ 32 - 0
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/consumer/ConsumersDetails.java

@@ -0,0 +1,32 @@
+package com.provectus.kafka.ui.pages.consumer;
+
+import com.codeborne.selenide.Condition;
+import com.codeborne.selenide.SelenideElement;
+import io.qameta.allure.Step;
+
+import static com.codeborne.selenide.Selenide.$x;
+import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
+
+public class ConsumersDetails {
+
+    protected SelenideElement loadingSpinner = $x("//*[contains(text(),'Loading')]");
+    protected SelenideElement topicGrid = $x("//table");
+    protected String consumerIdHeaderLocator = "//h1[contains(text(),'%s')]";
+    protected String topicElementLocator = "//tbody//td//a[text()='%s']";
+    @Step
+    public ConsumersDetails waitUntilScreenReady() {
+        loadingSpinner.shouldBe(Condition.disappear);
+        topicGrid.shouldBe(Condition.visible);
+        return this;
+    }
+    @Step
+    public boolean isRedirectedConsumerTitleVisible(String consumerGroupId) {
+        return isVisible($x(String.format(consumerIdHeaderLocator, consumerGroupId)));
+    }
+    @Step
+    public boolean isTopicInConsumersDetailsVisible(String topicName) {
+        topicGrid.shouldBe(Condition.visible);
+        return isVisible($x(String.format(topicElementLocator, topicName)));
+    }
+
+}

+ 11 - 0
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/consumer/ConsumersList.java

@@ -0,0 +1,11 @@
+package com.provectus.kafka.ui.pages.consumer;
+
+import com.codeborne.selenide.SelenideElement;
+import com.provectus.kafka.ui.utilities.WaitUtils;
+import lombok.experimental.ExtensionMethod;
+
+import static com.codeborne.selenide.Selenide.$x;
+public class ConsumersList {
+
+    protected SelenideElement consumerListHeader = $x("//h1[text()='Consumers']");
+}

+ 7 - 0
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java

@@ -26,6 +26,7 @@ public class TopicDetails {
     protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
     protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
     protected SelenideElement produceMessageBtn = $x("//div//button[text()='Produce Message']");
     protected SelenideElement produceMessageBtn = $x("//div//button[text()='Produce Message']");
     protected SelenideElement contentMessageTab = $x("//html//div[@id='root']/div/main//table//p");
     protected SelenideElement contentMessageTab = $x("//html//div[@id='root']/div/main//table//p");
+    protected String consumerIdLocator = "//a[@title='%s']";
 
 
     @Step
     @Step
     public TopicDetails waitUntilScreenReady() {
     public TopicDetails waitUntilScreenReady() {
@@ -74,6 +75,12 @@ public class TopicDetails {
         return this;
         return this;
     }
     }
 
 
+    @Step
+    public TopicDetails openConsumerGroup(String consumerId) {
+        $x(String.format(consumerIdLocator, consumerId)).click();
+        return this;
+    }
+
     @Step
     @Step
     public boolean isKeyMessageVisible(String keyMessage) {
     public boolean isKeyMessageVisible(String keyMessage) {
         return keyMessage.equals($("td[title]").getText());
         return keyMessage.equals($("td[title]").getText());

+ 4 - 0
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/base/Facade.java

@@ -5,6 +5,8 @@ import com.provectus.kafka.ui.pages.NaviSideBar;
 import com.provectus.kafka.ui.pages.connector.ConnectorCreateForm;
 import com.provectus.kafka.ui.pages.connector.ConnectorCreateForm;
 import com.provectus.kafka.ui.pages.connector.ConnectorDetails;
 import com.provectus.kafka.ui.pages.connector.ConnectorDetails;
 import com.provectus.kafka.ui.pages.connector.KafkaConnectList;
 import com.provectus.kafka.ui.pages.connector.KafkaConnectList;
+import com.provectus.kafka.ui.pages.consumer.ConsumersDetails;
+import com.provectus.kafka.ui.pages.consumer.ConsumersList;
 import com.provectus.kafka.ui.pages.schema.SchemaCreateForm;
 import com.provectus.kafka.ui.pages.schema.SchemaCreateForm;
 import com.provectus.kafka.ui.pages.schema.SchemaDetails;
 import com.provectus.kafka.ui.pages.schema.SchemaDetails;
 import com.provectus.kafka.ui.pages.schema.SchemaRegistryList;
 import com.provectus.kafka.ui.pages.schema.SchemaRegistryList;
@@ -25,5 +27,7 @@ public abstract class Facade {
     protected TopicCreateEditForm topicCreateEditForm = new TopicCreateEditForm();
     protected TopicCreateEditForm topicCreateEditForm = new TopicCreateEditForm();
     protected TopicsList topicsList = new TopicsList();
     protected TopicsList topicsList = new TopicsList();
     protected TopicDetails topicDetails = new TopicDetails();
     protected TopicDetails topicDetails = new TopicDetails();
+    protected ConsumersDetails consumersDetails = new ConsumersDetails();
+    protected ConsumersList consumersList = new ConsumersList();
     protected NaviSideBar naviSideBar = new NaviSideBar();
     protected NaviSideBar naviSideBar = new NaviSideBar();
 }
 }

+ 31 - 3
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/tests/TopicTests.java

@@ -15,14 +15,15 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
 import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
 import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
-import static com.provectus.kafka.ui.pages.topic.TopicDetails.DotPartitionIdMenu.CLEAR_MESSAGES;
 import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
 import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
 import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
 import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
+import static org.assertj.core.api.Assertions.assertThat;
 
 
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TopicTests extends BaseTest {
 public class TopicTests extends BaseTest {
     private static final long SUITE_ID = 2;
     private static final long SUITE_ID = 2;
     private static final String SUITE_TITLE = "Topics";
     private static final String SUITE_TITLE = "Topics";
+
     private static final Topic TOPIC_FOR_UPDATE = new Topic()
     private static final Topic TOPIC_FOR_UPDATE = new Topic()
             .setName("topic-to-update")
             .setName("topic-to-update")
             .setCleanupPolicyValue("Compact")
             .setCleanupPolicyValue("Compact")
@@ -186,11 +187,38 @@ public class TopicTests extends BaseTest {
         topicDetails
         topicDetails
                 .waitUntilScreenReady();
                 .waitUntilScreenReady();
         String messageAmount = topicDetails.MessageCountAmount();
         String messageAmount = topicDetails.MessageCountAmount();
-        Assertions.assertEquals(messageAmount,topicDetails.MessageCountAmount());
+        assertThat(messageAmount)
+                .withFailMessage("message amount not equals").isEqualTo(topicDetails.MessageCountAmount());
         topicDetails
         topicDetails
                 .openDotPartitionIdMenu()
                 .openDotPartitionIdMenu()
                 .clickClearMessagesBtn();
                 .clickClearMessagesBtn();
-//        Assertions.assertEquals(Integer.toString(Integer.valueOf(messageAmount)-1),topicDetails.MessageCountAmount());
+//        assertThat(Integer.toString(Integer.valueOf(messageAmount)-1))
+//                .withFailMessage("message amount not decrease by one").isEqualTo(topicDetails.MessageCountAmount());
+    }
+
+    @DisplayName("Redirect to consumer from topic profile")
+    @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
+    @AutomationStatus(status = Status.AUTOMATED)
+    @CaseId(20)
+    @Test
+    void redirectToConsumerFromTopic() {
+        String topicName = "source-activities";
+        String consumerGroupId = "connect-sink_postgres_activities";
+        naviSideBar
+                .openSideMenu(TOPICS);
+        topicsList
+                .waitUntilScreenReady()
+                .openTopic(topicName);
+        topicDetails
+                .waitUntilScreenReady()
+                .openTopicMenu(TopicDetails.TopicMenu.CONSUMERS)
+                .openConsumerGroup(consumerGroupId);
+        consumersDetails
+                .waitUntilScreenReady();
+        assertThat(consumersDetails.isRedirectedConsumerTitleVisible(consumerGroupId))
+                .withFailMessage("isRedirectedConsumerTitleVisible").isTrue();
+        assertThat(consumersDetails.isTopicInConsumersDetailsVisible(topicName))
+                .withFailMessage("isTopicInConsumersDetailsVisible").isTrue();
     }
     }
 
 
     @AfterAll
     @AfterAll