Pārlūkot izejas kodu

upd navigateToKsqlDbAndExecuteRequest

VladSenyuta 2 gadi atpakaļ
vecāks
revīzija
36cd490c36

+ 36 - 5
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/ksqldb/KsqlDbList.java

@@ -1,8 +1,8 @@
 package com.provectus.kafka.ui.pages.ksqldb;
 package com.provectus.kafka.ui.pages.ksqldb;
 
 
+import static com.codeborne.selenide.Condition.visible;
 import static com.codeborne.selenide.Selenide.$;
 import static com.codeborne.selenide.Selenide.$;
 import static com.codeborne.selenide.Selenide.$x;
 import static com.codeborne.selenide.Selenide.$x;
-import static com.provectus.kafka.ui.pages.panels.enums.MenuItem.KSQL_DB;
 
 
 import com.codeborne.selenide.CollectionCondition;
 import com.codeborne.selenide.CollectionCondition;
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.Condition;
@@ -10,12 +10,13 @@ import com.codeborne.selenide.SelenideElement;
 import com.provectus.kafka.ui.pages.BasePage;
 import com.provectus.kafka.ui.pages.BasePage;
 import com.provectus.kafka.ui.pages.ksqldb.enums.KsqlMenuTabs;
 import com.provectus.kafka.ui.pages.ksqldb.enums.KsqlMenuTabs;
 import io.qameta.allure.Step;
 import io.qameta.allure.Step;
+import java.time.Duration;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import org.openqa.selenium.By;
 import org.openqa.selenium.By;
 
 
 public class KsqlDbList extends BasePage {
 public class KsqlDbList extends BasePage {
-
   protected SelenideElement executeKsqlBtn = $x("//button[text()='Execute KSQL Request']");
   protected SelenideElement executeKsqlBtn = $x("//button[text()='Execute KSQL Request']");
   protected SelenideElement tablesTab = $x("//nav[@role='navigation']/a[text()='Tables']");
   protected SelenideElement tablesTab = $x("//nav[@role='navigation']/a[text()='Tables']");
   protected SelenideElement streamsTab = $x("//nav[@role='navigation']/a[text()='Streams']");
   protected SelenideElement streamsTab = $x("//nav[@role='navigation']/a[text()='Streams']");
@@ -23,7 +24,7 @@ public class KsqlDbList extends BasePage {
   @Step
   @Step
   public KsqlDbList waitUntilScreenReady() {
   public KsqlDbList waitUntilScreenReady() {
     waitUntilSpinnerDisappear();
     waitUntilSpinnerDisappear();
-    getPageTitleFromHeader(KSQL_DB).shouldBe(Condition.visible);
+    Arrays.asList(tablesTab, streamsTab).forEach(tab -> tab.shouldBe(Condition.visible));
     return this;
     return this;
   }
   }
 
 
@@ -76,9 +77,24 @@ public class KsqlDbList extends BasePage {
       this.element = element;
       this.element = element;
     }
     }
 
 
+    private SelenideElement getNameElm() {
+      return element.$x("./td[1]");
+    }
+
     @Step
     @Step
     public String getTableName() {
     public String getTableName() {
-      return element.$x("./td[1]").getText().trim();
+      return getNameElm().getText().trim();
+    }
+
+    @Step
+    public boolean isVisible() {
+      boolean isVisible = false;
+      try {
+        getNameElm().shouldBe(visible, Duration.ofMillis(500));
+        isVisible = true;
+      } catch (Throwable ignored) {
+      }
+      return isVisible;
     }
     }
 
 
     @Step
     @Step
@@ -110,9 +126,24 @@ public class KsqlDbList extends BasePage {
       this.element = element;
       this.element = element;
     }
     }
 
 
+    private SelenideElement getNameElm() {
+      return element.$x("./td[1]");
+    }
+
     @Step
     @Step
     public String getStreamName() {
     public String getStreamName() {
-      return element.$x("./td[1]").getText().trim();
+      return getNameElm().getText().trim();
+    }
+
+    @Step
+    public boolean isVisible() {
+      boolean isVisible = false;
+      try {
+        getNameElm().shouldBe(visible, Duration.ofMillis(500));
+        isVisible = true;
+      } catch (Throwable ignored) {
+      }
+      return isVisible;
     }
     }
 
 
     @Step
     @Step

+ 18 - 8
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/ksqldb/KsqlQueryForm.java

@@ -15,6 +15,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
 public class KsqlQueryForm extends BasePage {
 public class KsqlQueryForm extends BasePage {
+  protected SelenideElement pageTitle = $x("//h1[text()='Query']");
   protected SelenideElement clearBtn = $x("//div/button[text()='Clear']");
   protected SelenideElement clearBtn = $x("//div/button[text()='Clear']");
   protected SelenideElement executeBtn = $x("//div/button[text()='Execute']");
   protected SelenideElement executeBtn = $x("//div/button[text()='Execute']");
   protected SelenideElement stopQueryBtn = $x("//div/button[text()='Stop query']");
   protected SelenideElement stopQueryBtn = $x("//div/button[text()='Stop query']");
@@ -29,7 +30,7 @@ public class KsqlQueryForm extends BasePage {
   @Step
   @Step
   public KsqlQueryForm waitUntilScreenReady() {
   public KsqlQueryForm waitUntilScreenReady() {
     waitUntilSpinnerDisappear();
     waitUntilSpinnerDisappear();
-    executeBtn.shouldBe(Condition.visible);
+    pageTitle.shouldBe(Condition.visible);
     return this;
     return this;
   }
   }
 
 
@@ -40,9 +41,14 @@ public class KsqlQueryForm extends BasePage {
   }
   }
 
 
   @Step
   @Step
-  public KsqlQueryForm clickExecuteBtn() {
+  public String getEnteredQuery() {
+    return queryAreaValue.getText().trim();
+  }
+
+  @Step
+  public KsqlQueryForm clickExecuteBtn(String query) {
     clickByActions(executeBtn);
     clickByActions(executeBtn);
-    if (queryAreaValue.getText().contains("EMIT CHANGES;")) {
+    if (query.contains("EMIT CHANGES")) {
       loadingSpinner.shouldBe(Condition.visible);
       loadingSpinner.shouldBe(Condition.visible);
     } else {
     } else {
       waitUntilSpinnerDisappear();
       waitUntilSpinnerDisappear();
@@ -66,19 +72,19 @@ public class KsqlQueryForm extends BasePage {
 
 
   @Step
   @Step
   public KsqlQueryForm clickAddStreamProperty() {
   public KsqlQueryForm clickAddStreamProperty() {
-    clickByJavaScript(addStreamPropertyBtn);
+    clickByActions(addStreamPropertyBtn);
     return this;
     return this;
   }
   }
 
 
   @Step
   @Step
   public KsqlQueryForm setQuery(String query) {
   public KsqlQueryForm setQuery(String query) {
     queryAreaValue.shouldBe(Condition.visible).click();
     queryAreaValue.shouldBe(Condition.visible).click();
-    queryArea.setValue(query);
+    sendKeysByActions(queryArea, query);
     return this;
     return this;
   }
   }
 
 
   @Step
   @Step
-  public KsqlQueryForm.KsqlResponseGridItem getTableByName(String name) {
+  public KsqlQueryForm.KsqlResponseGridItem getItemByName(String name) {
     return initItems().stream()
     return initItems().stream()
         .filter(e -> e.getName().equalsIgnoreCase(name))
         .filter(e -> e.getName().equalsIgnoreCase(name))
         .findFirst().orElseThrow();
         .findFirst().orElseThrow();
@@ -114,16 +120,20 @@ public class KsqlQueryForm extends BasePage {
       return element.$x("./td[1]").getText().trim();
       return element.$x("./td[1]").getText().trim();
     }
     }
 
 
+    private SelenideElement getNameElm() {
+      return element.$x("./td[2]");
+    }
+
     @Step
     @Step
     public String getName() {
     public String getName() {
-      return element.$x("./td[2]").scrollTo().getText().trim();
+      return getNameElm().scrollTo().getText().trim();
     }
     }
 
 
     @Step
     @Step
     public boolean isVisible() {
     public boolean isVisible() {
       boolean isVisible = false;
       boolean isVisible = false;
       try {
       try {
-        element.$x("./td[2]").shouldBe(visible, Duration.ofMillis(500));
+        getNameElm().shouldBe(visible, Duration.ofMillis(500));
         isVisible = true;
         isVisible = true;
       } catch (Throwable ignored) {
       } catch (Throwable ignored) {
       }
       }

+ 1 - 2
kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/utilities/WebUtils.java

@@ -95,7 +95,7 @@ public class WebUtils {
     return isSelected;
     return isSelected;
   }
   }
 
 
-  public static boolean selectElement(SelenideElement element, boolean select) {
+  public static void selectElement(SelenideElement element, boolean select) {
     if (select) {
     if (select) {
       if (!element.isSelected()) {
       if (!element.isSelected()) {
         clickByJavaScript(element);
         clickByJavaScript(element);
@@ -105,6 +105,5 @@ public class WebUtils {
         clickByJavaScript(element);
         clickByJavaScript(element);
       }
       }
     }
     }
-    return true;
   }
   }
 }
 }

+ 49 - 41
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/smokesuite/ksqldb/KsqlDbTest.java

@@ -1,79 +1,87 @@
-package com.provectus.kafka.ui.smokesuite.ksqldb;
+package com.provectus.kafka.ui.smokesuite.ksqlDb;
 
 
+import static com.provectus.kafka.ui.pages.ksqldb.enums.KsqlMenuTabs.STREAMS;
 import static com.provectus.kafka.ui.pages.ksqldb.enums.KsqlQueryConfig.SHOW_TABLES;
 import static com.provectus.kafka.ui.pages.ksqldb.enums.KsqlQueryConfig.SHOW_TABLES;
+import static com.provectus.kafka.ui.pages.panels.enums.MenuItem.KSQL_DB;
 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
 
 
 import com.provectus.kafka.ui.BaseTest;
 import com.provectus.kafka.ui.BaseTest;
 import com.provectus.kafka.ui.pages.ksqldb.models.Stream;
 import com.provectus.kafka.ui.pages.ksqldb.models.Stream;
 import com.provectus.kafka.ui.pages.ksqldb.models.Table;
 import com.provectus.kafka.ui.pages.ksqldb.models.Table;
+import io.qameta.allure.Step;
 import io.qase.api.annotation.QaseId;
 import io.qase.api.annotation.QaseId;
-import java.util.ArrayList;
-import java.util.List;
-import org.testng.annotations.AfterClass;
+import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 import org.testng.annotations.Test;
 import org.testng.asserts.SoftAssert;
 import org.testng.asserts.SoftAssert;
 
 
 public class KsqlDbTest extends BaseTest {
 public class KsqlDbTest extends BaseTest {
 
 
-  private static final Stream STREAM_FOR_CHECK_TABLES = new Stream()
-      .setName("STREAM_FOR_CHECK_TABLES_" + randomAlphabetic(4).toUpperCase())
-      .setTopicName("TOPIC_FOR_STREAM_" + randomAlphabetic(4).toUpperCase());
+  private static final Stream DEFAULT_STREAM = new Stream()
+      .setName("DEFAULT_STREAM_" + randomAlphabetic(4).toUpperCase())
+      .setTopicName("DEFAULT_TOPIC_" + randomAlphabetic(4).toUpperCase());
   private static final Table FIRST_TABLE = new Table()
   private static final Table FIRST_TABLE = new Table()
-      .setName("FIRST_TABLE" + randomAlphabetic(4).toUpperCase())
-      .setStreamName(STREAM_FOR_CHECK_TABLES.getName());
+      .setName("FIRST_TABLE_" + randomAlphabetic(4).toUpperCase())
+      .setStreamName(DEFAULT_STREAM.getName());
   private static final Table SECOND_TABLE = new Table()
   private static final Table SECOND_TABLE = new Table()
-      .setName("SECOND_TABLE" + randomAlphabetic(4).toUpperCase())
-      .setStreamName(STREAM_FOR_CHECK_TABLES.getName());
-  private static final List<String> TOPIC_NAMES_LIST = new ArrayList<>();
+      .setName("SECOND_TABLE_" + randomAlphabetic(4).toUpperCase())
+      .setStreamName(DEFAULT_STREAM.getName());
 
 
   @BeforeClass(alwaysRun = true)
   @BeforeClass(alwaysRun = true)
   public void beforeClass() {
   public void beforeClass() {
     apiService
     apiService
-        .createStream(STREAM_FOR_CHECK_TABLES)
+        .createStream(DEFAULT_STREAM)
         .createTables(FIRST_TABLE, SECOND_TABLE);
         .createTables(FIRST_TABLE, SECOND_TABLE);
-    TOPIC_NAMES_LIST.addAll(List.of(STREAM_FOR_CHECK_TABLES.getTopicName(),
-        FIRST_TABLE.getName(), SECOND_TABLE.getName()));
   }
   }
 
 
-  @QaseId(41)
+  @QaseId(284)
   @Test(priority = 1)
   @Test(priority = 1)
-  public void checkShowTablesRequestExecution() {
-    navigateToKsqlDb();
+  public void streamsAndTablesVisibilityCheck() {
+    naviSideBar
+        .openSideMenu(KSQL_DB);
     ksqlDbList
     ksqlDbList
-        .clickExecuteKsqlRequestBtn();
-    ksqlQueryForm
-        .waitUntilScreenReady()
-        .setQuery(SHOW_TABLES.getQuery())
-        .clickExecuteBtn();
+        .waitUntilScreenReady();
     SoftAssert softly = new SoftAssert();
     SoftAssert softly = new SoftAssert();
-    softly.assertTrue(ksqlQueryForm.areResultsVisible(), "areResultsVisible()");
-    softly.assertTrue(ksqlQueryForm.getTableByName(FIRST_TABLE.getName()).isVisible(), "getTableName()");
-    softly.assertTrue(ksqlQueryForm.getTableByName(SECOND_TABLE.getName()).isVisible(), "getTableName()");
+    softly.assertTrue(ksqlDbList.getTableByName(FIRST_TABLE.getName()).isVisible(), "getTableByName()");
+    softly.assertTrue(ksqlDbList.getTableByName(SECOND_TABLE.getName()).isVisible(), "getTableByName()");
     softly.assertAll();
     softly.assertAll();
+    ksqlDbList
+        .openDetailsTab(STREAMS)
+        .waitUntilScreenReady();
+    Assert.assertTrue(ksqlDbList.getStreamByName(DEFAULT_STREAM.getName()).isVisible(), "getStreamByName()");
   }
   }
 
 
-  @QaseId(86)
+  @QaseId(276)
   @Test(priority = 2)
   @Test(priority = 2)
-  public void clearResultsForExecutedRequest() {
-    navigateToKsqlDb();
-    ksqlDbList
-        .clickExecuteKsqlRequestBtn();
+  public void clearEnteredQueryCheck() {
+    navigateToKsqlDbAndExecuteRequest(SHOW_TABLES.getQuery());
+    Assert.assertFalse(ksqlQueryForm.getEnteredQuery().isEmpty(), "getEnteredQuery()");
     ksqlQueryForm
     ksqlQueryForm
-        .waitUntilScreenReady()
-        .setQuery(SHOW_TABLES.getQuery())
-        .clickExecuteBtn();
+        .clickClearBtn();
+    Assert.assertTrue(ksqlQueryForm.getEnteredQuery().isEmpty(), "getEnteredQuery()");
+  }
+
+  @QaseId(41)
+  @Test(priority = 3)
+  public void checkShowTablesRequestExecution() {
+    navigateToKsqlDbAndExecuteRequest(SHOW_TABLES.getQuery());
     SoftAssert softly = new SoftAssert();
     SoftAssert softly = new SoftAssert();
     softly.assertTrue(ksqlQueryForm.areResultsVisible(), "areResultsVisible()");
     softly.assertTrue(ksqlQueryForm.areResultsVisible(), "areResultsVisible()");
-    softly.assertAll();
-    ksqlQueryForm
-        .clickClearResultsBtn();
-    softly.assertFalse(ksqlQueryForm.areResultsVisible(), "areResultsVisible()");
+    softly.assertTrue(ksqlQueryForm.getItemByName(FIRST_TABLE.getName()).isVisible(), "getItemByName()");
+    softly.assertTrue(ksqlQueryForm.getItemByName(SECOND_TABLE.getName()).isVisible(), "getItemByName()");
     softly.assertAll();
     softly.assertAll();
   }
   }
 
 
-  @AfterClass(alwaysRun = true)
-  public void afterClass() {
-    TOPIC_NAMES_LIST.forEach(topicName -> apiService.deleteTopic(topicName));
+  @Step
+  private void navigateToKsqlDbAndExecuteRequest(String query) {
+    naviSideBar
+        .openSideMenu(KSQL_DB);
+    ksqlDbList
+        .waitUntilScreenReady()
+        .clickExecuteKsqlRequestBtn();
+    ksqlQueryForm
+        .waitUntilScreenReady()
+        .setQuery(query)
+        .clickExecuteBtn(query);
   }
   }
 }
 }