[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
This commit is contained in:
Anton Mnykh 2022-11-01 11:27:04 +02:00 committed by GitHub
parent 99e50f8814
commit 77f789fa6c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 85 additions and 3 deletions

View file

@ -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)));
}
}

View file

@ -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']");
}

View file

@ -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());

View file

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

View file

@ -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