Browse Source

[e2e]Checking filter saving within Messages/Topic profile/Saved Filters (#3003)

* [e2e]Checking filter saving within Messages/Topic profile/Saved Filters

* resolve conversation

* resolve conversation

* resolve conversation

* resolve conversation

* resolve conversation

* resolve conversation

(cherry picked from commit a503c29472bbfc8f4c57680fd71ba7bfb007d6f9)
Alexandr Nezboretskiy 2 năm trước cách đây
mục cha
commit
141111ae92

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

@@ -23,7 +23,7 @@ public class TopicDetails extends BasePage {
   protected SelenideElement overviewTab = $x("//a[contains(text(),'Overview')]");
   protected SelenideElement overviewTab = $x("//a[contains(text(),'Overview')]");
   protected SelenideElement messagesTab = $x("//a[contains(text(),'Messages')]");
   protected SelenideElement messagesTab = $x("//a[contains(text(),'Messages')]");
   protected SelenideElement addFiltersBtn = $x("//button[text()='Add Filters']");
   protected SelenideElement addFiltersBtn = $x("//button[text()='Add Filters']");
-  protected SelenideElement savedFiltersField = $x("//div[text()='Saved Filters']");
+  protected SelenideElement savedFiltersLink = $x("//div[text()='Saved Filters']");
   protected SelenideElement addFilterCodeModalTitle = $x("//label[text()='Filter code']");
   protected SelenideElement addFilterCodeModalTitle = $x("//label[text()='Filter code']");
   protected SelenideElement addFilterCodeInput = $x("//div[@id='ace-editor']//textarea");
   protected SelenideElement addFilterCodeInput = $x("//div[@id='ace-editor']//textarea");
   protected SelenideElement saveThisFilterCheckBoxAddFilterMdl = $x("//input[@name='saveFilter']");
   protected SelenideElement saveThisFilterCheckBoxAddFilterMdl = $x("//input[@name='saveFilter']");
@@ -37,10 +37,12 @@ public class TopicDetails extends BasePage {
   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 SelenideElement cleanUpPolicyField = $x("//div[contains(text(),'Clean Up Policy')]/../span/*");
   protected SelenideElement cleanUpPolicyField = $x("//div[contains(text(),'Clean Up Policy')]/../span/*");
   protected SelenideElement partitionsField = $x("//div[contains(text(),'Partitions')]/../span");
   protected SelenideElement partitionsField = $x("//div[contains(text(),'Partitions')]/../span");
+  protected SelenideElement backToCreateFiltersLink = $x("//div[text()='Back To create filters']");
   protected ElementsCollection messageGridItems = $$x("//tbody//tr");
   protected ElementsCollection messageGridItems = $$x("//tbody//tr");
+  protected String savedFilterNameLocator = "//div[@role='savedFilter']/div[contains(text(),'%s')]";
   protected String consumerIdLocator = "//a[@title='%s']";
   protected String consumerIdLocator = "//a[@title='%s']";
   protected String topicHeaderLocator = "//h1[contains(text(),'%s')]";
   protected String topicHeaderLocator = "//h1[contains(text(),'%s')]";
-  protected String filterNameLocator = "//*[@data-testid='activeSmartFilter']";
+  protected String activeFilterNameLocator = "//div[@data-testid='activeSmartFilter'][contains(text(),'%s')]";
 
 
   @Step
   @Step
   public TopicDetails waitUntilScreenReady() {
   public TopicDetails waitUntilScreenReady() {
@@ -120,15 +122,20 @@ public class TopicDetails extends BasePage {
   }
   }
 
 
   @Step
   @Step
-  public TopicDetails waitUntilAddFiltersMdlVisible() {
-    addFilterCodeModalTitle.shouldBe(Condition.visible);
+  public TopicDetails openSavedFiltersListMdl(){
+    savedFiltersLink.shouldBe(Condition.enabled).click();
+    backToCreateFiltersLink.shouldBe(Condition.visible);
     return this;
     return this;
   }
   }
 
 
   @Step
   @Step
-  public TopicDetails clickAddFilterBtnAddFilterMdl() {
-    addFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
-    addFilterCodeModalTitle.shouldBe(Condition.hidden);
+  public boolean isFilterVisibleAtSavedFiltersMdl(String filterName){
+    return isVisible($x(String.format(savedFilterNameLocator,filterName)));
+  }
+
+  @Step
+  public TopicDetails waitUntilAddFiltersMdlVisible() {
+    addFilterCodeModalTitle.shouldBe(Condition.visible);
     return this;
     return this;
   }
   }
 
 
@@ -138,23 +145,46 @@ public class TopicDetails extends BasePage {
     return this;
     return this;
   }
   }
 
 
+  @Step
+  public TopicDetails selectSaveThisFilterCheckboxMdl(boolean select){
+    selectElement(saveThisFilterCheckBoxAddFilterMdl, select);
+    return this;
+  }
+
   @Step
   @Step
   public boolean isSaveThisFilterCheckBoxSelected() {
   public boolean isSaveThisFilterCheckBoxSelected() {
     return isSelected(saveThisFilterCheckBoxAddFilterMdl);
     return isSelected(saveThisFilterCheckBoxAddFilterMdl);
   }
   }
 
 
+  @Step
+  public TopicDetails setDisplayNameFldAddFilterMdl(String displayName) {
+    displayNameInputAddFilterMdl.shouldBe(Condition.enabled).sendKeys(displayName);
+    return this;
+  }
+
+  @Step
+  public TopicDetails clickAddFilterBtnAndCloseMdl(boolean closeModal) {
+    addFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
+    if(closeModal){
+      addFilterCodeModalTitle.shouldBe(Condition.hidden);}
+    else{
+      addFilterCodeModalTitle.shouldBe(Condition.visible);
+    }
+    return this;
+  }
+
   @Step
   @Step
   public boolean isAddFilterBtnAddFilterMdlEnabled() {
   public boolean isAddFilterBtnAddFilterMdlEnabled() {
     return isEnabled(addFilterBtnAddFilterMdl);
     return isEnabled(addFilterBtnAddFilterMdl);
   }
   }
 
 
   @Step
   @Step
-  public String getFilterName() {
-    return $x(filterNameLocator).getText();
+  public boolean isActiveFilterVisible(String activeFilterName) {
+    return isVisible($x(String.format(activeFilterNameLocator, activeFilterName)));
   }
   }
 
 
   public List<SelenideElement> getAllAddFilterModalVisibleElements() {
   public List<SelenideElement> getAllAddFilterModalVisibleElements() {
-    return Arrays.asList(savedFiltersField, displayNameInputAddFilterMdl, addFilterBtnAddFilterMdl, cancelBtnAddFilterMdl);
+    return Arrays.asList(savedFiltersLink, displayNameInputAddFilterMdl, addFilterBtnAddFilterMdl, cancelBtnAddFilterMdl);
   }
   }
 
 
   public List<SelenideElement> getAllAddFilterModalEnabledElements() {
   public List<SelenideElement> getAllAddFilterModalEnabledElements() {

+ 44 - 14
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/suite/topics/TopicsTests.java

@@ -1,6 +1,7 @@
 package com.provectus.kafka.ui.suite.topics;
 package com.provectus.kafka.ui.suite.topics;
 
 
 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.TopicMenu.MESSAGES;
 import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.COMPACT;
 import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.COMPACT;
 import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.DELETE;
 import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.DELETE;
 import static com.provectus.kafka.ui.pages.topic.enums.CustomParameterType.COMPRESSION_TYPE;
 import static com.provectus.kafka.ui.pages.topic.enums.CustomParameterType.COMPRESSION_TYPE;
@@ -8,8 +9,9 @@ import static com.provectus.kafka.ui.pages.topic.enums.MaxSizeOnDisk.SIZE_20_GB;
 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.apache.commons.lang.RandomStringUtils.randomAlphabetic;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
-import static org.apache.commons.lang3.RandomUtils.nextInt;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.Condition;
 import com.provectus.kafka.ui.base.BaseTest;
 import com.provectus.kafka.ui.base.BaseTest;
@@ -111,20 +113,18 @@ public class TopicsTests extends BaseTest {
   @Test
   @Test
   @Order(2)
   @Order(2)
   void checkAvailableOperations() {
   void checkAvailableOperations() {
-    String processingTopic = "my_ksql_1ksql_processing_log";
-    String confluentTopic = "_confluent-ksql-my_ksql_1_command_topic";
     naviSideBar
     naviSideBar
         .openSideMenu(TOPICS);
         .openSideMenu(TOPICS);
     topicsList
     topicsList
         .waitUntilScreenReady()
         .waitUntilScreenReady()
-        .getTopicItem(processingTopic)
+        .getTopicItem("my_ksql_1ksql_processing_log")
         .selectItem(true);
         .selectItem(true);
     topicsList
     topicsList
         .getActionButtons()
         .getActionButtons()
         .forEach(element -> assertThat(element.is(Condition.enabled))
         .forEach(element -> assertThat(element.is(Condition.enabled))
             .as(element.getSearchCriteria() + " isEnabled()").isTrue());
             .as(element.getSearchCriteria() + " isEnabled()").isTrue());
     topicsList
     topicsList
-        .getTopicItem(confluentTopic)
+        .getTopicItem("_confluent-ksql-my_ksql_1_command_topic")
         .selectItem(true);
         .selectItem(true);
     Assertions.assertFalse(topicsList.isCopySelectedTopicBtnEnabled(), "isCopySelectedTopicBtnEnabled()");
     Assertions.assertFalse(topicsList.isCopySelectedTopicBtnEnabled(), "isCopySelectedTopicBtnEnabled()");
   }
   }
@@ -309,15 +309,15 @@ public class TopicsTests extends BaseTest {
   @Test
   @Test
   @Order(9)
   @Order(9)
   void addingNewFilterWithinTopic() {
   void addingNewFilterWithinTopic() {
-    String topicName = "_schemas";
-    String filterName = "123ABC";
+    String filterName = randomAlphanumeric(5);
     naviSideBar
     naviSideBar
         .openSideMenu(TOPICS);
         .openSideMenu(TOPICS);
     topicsList
     topicsList
         .waitUntilScreenReady()
         .waitUntilScreenReady()
-        .openTopic(topicName);
+        .openTopic("_schemas");
     topicDetails
     topicDetails
-        .openDetailsTab(TopicDetails.TopicMenu.MESSAGES)
+        .waitUntilScreenReady()
+        .openDetailsTab(MESSAGES)
         .clickMessagesAddFiltersBtn()
         .clickMessagesAddFiltersBtn()
         .waitUntilAddFiltersMdlVisible();
         .waitUntilAddFiltersMdlVisible();
     SoftAssertions softly = new SoftAssertions();
     SoftAssertions softly = new SoftAssertions();
@@ -335,11 +335,41 @@ public class TopicsTests extends BaseTest {
     softly.assertAll();
     softly.assertAll();
     topicDetails
     topicDetails
         .setFilterCodeFieldAddFilterMdl(filterName);
         .setFilterCodeFieldAddFilterMdl(filterName);
-    assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isMessagesAddFilterTabAddFilterBtnEnabled()")
+    assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isAddFilterBtnAddFilterMdlEnabled()")
+        .isTrue();
+    topicDetails.clickAddFilterBtnAndCloseMdl(true);
+    assertThat(topicDetails.isActiveFilterVisible(filterName)).as("isActiveFilterVisible()")
         .isTrue();
         .isTrue();
-    topicDetails.clickAddFilterBtnAddFilterMdl();
-    assertThat(topicDetails.getFilterName()).as("isFilterNameVisible(filterName)")
-        .isEqualTo(filterName);
+  }
+
+  @DisplayName("Checking filter saving within Messages/Topic profile/Saved Filters")
+  @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
+  @AutomationStatus(status = Status.AUTOMATED)
+  @CaseId(13)
+  @Test
+  @Order(10)
+  void checkFilterSavingWithinSavedFilters() {
+    String displayName = randomAlphanumeric(5);
+    naviSideBar
+        .openSideMenu(TOPICS);
+    topicsList
+        .waitUntilScreenReady()
+        .openTopic("my_ksql_1ksql_processing_log");
+    topicDetails
+        .waitUntilScreenReady()
+        .openDetailsTab(MESSAGES)
+        .clickMessagesAddFiltersBtn()
+        .waitUntilAddFiltersMdlVisible()
+        .setFilterCodeFieldAddFilterMdl(randomAlphanumeric(4))
+        .selectSaveThisFilterCheckboxMdl(true)
+        .setDisplayNameFldAddFilterMdl(displayName);
+    assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isAddFilterBtnAddFilterMdlEnabled()")
+        .isTrue();
+    topicDetails
+        .clickAddFilterBtnAndCloseMdl(false)
+        .openSavedFiltersListMdl();
+    assertThat(topicDetails.isFilterVisibleAtSavedFiltersMdl(displayName))
+        .as("isFilterVisibleAtSavedFiltersMdl()").isTrue();
   }
   }
 
 
   @DisplayName("Checking 'Show Internal Topics' toggle functionality within 'All Topics' page")
   @DisplayName("Checking 'Show Internal Topics' toggle functionality within 'All Topics' page")
@@ -347,7 +377,7 @@ public class TopicsTests extends BaseTest {
   @AutomationStatus(status = Status.AUTOMATED)
   @AutomationStatus(status = Status.AUTOMATED)
   @CaseId(11)
   @CaseId(11)
   @Test
   @Test
-  @Order(10)
+  @Order(11)
   void checkShowInternalTopicsButtonFunctionality(){
   void checkShowInternalTopicsButtonFunctionality(){
     naviSideBar
     naviSideBar
         .openSideMenu(TOPICS);
         .openSideMenu(TOPICS);