Browse Source

#626 refactoring topic tests

marat 3 năm trước cách đây
mục cha
commit
7f3dfc553c

+ 4 - 4
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/helpers/WaitUtils.java → kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/extensions/WaitUtils.java

@@ -1,4 +1,4 @@
-package com.provectus.kafka.ui.helpers;
+package com.provectus.kafka.ui.extensions;
 
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.SelenideElement;
 import com.codeborne.selenide.SelenideElement;
@@ -9,14 +9,14 @@ import static com.codeborne.selenide.Selenide.*;
 import static com.codeborne.selenide.Selenide.$;
 import static com.codeborne.selenide.Selenide.$;
 
 
 public class WaitUtils {
 public class WaitUtils {
-    public static void refreshUntil(By by) {
+    public static void refreshUntil(By by, Condition condition) {
         int i = 0;
         int i = 0;
         do {
         do {
             refresh();
             refresh();
             i++;
             i++;
             sleep(2000);
             sleep(2000);
-        } while (getElements(by).size() < 1 && i != 20);
-        $(by).shouldBe(Condition.visible);
+        } while ($$(by).size() < 1 && i != 20);
+        $(by).shouldBe(condition);
     }
     }
 
 
     public static void waitForSelectedValue(SelenideElement element, String selectedValue) {
     public static void waitForSelectedValue(SelenideElement element, String selectedValue) {

+ 13 - 6
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/pages/MainPage.java

@@ -1,19 +1,26 @@
 package com.provectus.kafka.ui.pages;
 package com.provectus.kafka.ui.pages;
 
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.Condition;
+import com.codeborne.selenide.Selenide;
+import com.provectus.kafka.ui.base.TestConfiguration;
+import com.provectus.kafka.ui.extensions.WaitUtils;
 import io.qameta.allure.Step;
 import io.qameta.allure.Step;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
+import lombok.experimental.ExtensionMethod;
 import org.openqa.selenium.By;
 import org.openqa.selenium.By;
 
 
 import static com.codeborne.selenide.Selenide.*;
 import static com.codeborne.selenide.Selenide.*;
-import static com.provectus.kafka.ui.helpers.WaitUtils.refreshUntil;
 
 
+@ExtensionMethod({WaitUtils.class})
 public class MainPage {
 public class MainPage {
 
 
-  private static final long TIMEOUT = 25000;
-
-  protected static final String path = "";
+  private static final String path = "";
 
 
+  @Step
+  public MainPage goTo(){
+    Selenide.open(TestConfiguration.BASE_URL+path);
+    return this;
+  }
   @Step
   @Step
   public MainPage isOnPage() {
   public MainPage isOnPage() {
     $(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
     $(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
@@ -22,8 +29,8 @@ public class MainPage {
   }
   }
 
 
   @SneakyThrows
   @SneakyThrows
-  public void isTopic(String topicName) {
-    refreshUntil(By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']".formatted(topicName)));
+  public void topicIsVisible(String topicName) {
+    By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']".formatted(topicName)).refreshUntil(Condition.visible);
   }
   }
 
 
   public enum SideMenuOptions {
   public enum SideMenuOptions {

+ 3 - 11
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/pages/Pages.java

@@ -1,8 +1,5 @@
 package com.provectus.kafka.ui.pages;
 package com.provectus.kafka.ui.pages;
 
 
-import com.codeborne.selenide.Selenide;
-import com.provectus.kafka.ui.base.TestConfiguration;
-
 public class Pages {
 public class Pages {
 
 
     public static Pages INSTANCE = new Pages();
     public static Pages INSTANCE = new Pages();
@@ -11,25 +8,20 @@ public class Pages {
     public TopicsList topicsList = new TopicsList();
     public TopicsList topicsList = new TopicsList();
     public TopicView topicView = new TopicView();
     public TopicView topicView = new TopicView();
 
 
-    private Pages goTo(String path) {
-        Selenide.open(TestConfiguration.BASE_URL+path);
-        return this;
-    }
-
     public MainPage open() {
     public MainPage open() {
        return openMainPage();
        return openMainPage();
     }
     }
 
 
     public MainPage openMainPage() {
     public MainPage openMainPage() {
-        return goTo(MainPage.path).mainPage;
+        return mainPage.goTo();
     }
     }
 
 
     public TopicsList openTopicsList(String clusterName) {
     public TopicsList openTopicsList(String clusterName) {
-        return goTo(TopicsList.path.formatted(clusterName)).topicsList;
+        return topicsList.goTo(clusterName);
     }
     }
 
 
     public TopicView openTopicView(String clusterName, String topicName) {
     public TopicView openTopicView(String clusterName, String topicName) {
-        return goTo(TopicView.path.formatted(clusterName, topicName)).topicView;
+        return topicView.goTo(clusterName, topicName);
     }
     }
 
 
 }
 }

+ 28 - 13
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/pages/TopicView.java

@@ -1,19 +1,30 @@
 package com.provectus.kafka.ui.pages;
 package com.provectus.kafka.ui.pages;
 
 
+import com.codeborne.selenide.Selenide;
 import com.codeborne.selenide.SelenideElement;
 import com.codeborne.selenide.SelenideElement;
+import com.provectus.kafka.ui.base.TestConfiguration;
+import com.provectus.kafka.ui.extensions.WaitUtils;
+import io.qameta.allure.Step;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
+import lombok.experimental.ExtensionMethod;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Assertions;
 import org.openqa.selenium.By;
 import org.openqa.selenium.By;
 
 
 import static com.codeborne.selenide.Selenide.*;
 import static com.codeborne.selenide.Selenide.*;
 
 
+@ExtensionMethod({WaitUtils.class})
 public class TopicView {
 public class TopicView {
-    static final String path = "ui/clusters/%s/topics/%s";
-    private SelenideElement cleanupPolicy = $(By.name("cleanupPolicy"));
-    private SelenideElement timeToRetain = $(By.id("timeToRetain"));
-    private SelenideElement maxSizeOnDisk = $(By.name("retentionBytes"));
-    private SelenideElement maxMessageBytes = $(By.name("maxMessageBytes"));
+    private static final String path = "ui/clusters/%s/topics/%s";
+    private final SelenideElement cleanupPolicy = $(By.name("cleanupPolicy"));
+    private final SelenideElement timeToRetain = $(By.id("timeToRetain"));
+    private final SelenideElement maxSizeOnDisk = $(By.name("retentionBytes"));
+    private final SelenideElement maxMessageBytes = $(By.name("maxMessageBytes"));
 
 
+    @Step
+    public TopicView goTo(String cluster,String topic){
+        Selenide.open(TestConfiguration.BASE_URL+path.formatted(cluster,topic));
+        return this;
+    }
     @SneakyThrows
     @SneakyThrows
     public TopicView openEditSettings() {
     public TopicView openEditSettings() {
         $(By.xpath("//a[@class=\"button\" and text()='Edit settings']")).click();
         $(By.xpath("//a[@class=\"button\" and text()='Edit settings']")).click();
@@ -59,19 +70,23 @@ public class TopicView {
         $(By.xpath("//input[@type='submit']")).click();
         $(By.xpath("//input[@type='submit']")).click();
     }
     }
 
 
-    public SelenideElement getCleanupPolicy() {
-        return cleanupPolicy;
+    public TopicView cleanupPolicyIs(String value) {
+        cleanupPolicy.waitForSelectedValue(value);
+        return this;
     }
     }
 
 
-    public SelenideElement getTimeToRetain() {
-        return timeToRetain;
+    public TopicView timeToRetainIs(String time) {
+        Assertions.assertEquals(time, timeToRetain.getValue());
+        return this;
     }
     }
 
 
-    public SelenideElement getMaxSizeOnDisk() {
-        return maxSizeOnDisk;
+    public TopicView maxSizeOnDiskIs(String size) {
+        Assertions.assertEquals(size, maxSizeOnDisk.getSelectedText());
+        return this;
     }
     }
 
 
-    public SelenideElement getMaxMessageBytes() {
-        return maxMessageBytes;
+    public TopicView maxMessageBytesIs(String bytes) {
+        Assertions.assertEquals(bytes, maxMessageBytes.getValue());
+        return this;
     }
     }
 }
 }

+ 15 - 6
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/pages/TopicsList.java

@@ -1,16 +1,25 @@
 package com.provectus.kafka.ui.pages;
 package com.provectus.kafka.ui.pages;
 
 
 import com.codeborne.selenide.Condition;
 import com.codeborne.selenide.Condition;
-import com.provectus.kafka.ui.helpers.WaitUtils;
+import com.codeborne.selenide.Selenide;
+import com.provectus.kafka.ui.base.TestConfiguration;
+import com.provectus.kafka.ui.extensions.WaitUtils;
 import io.qameta.allure.Step;
 import io.qameta.allure.Step;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
+import lombok.experimental.ExtensionMethod;
 import org.openqa.selenium.By;
 import org.openqa.selenium.By;
 
 
 import static com.codeborne.selenide.Selenide.$;
 import static com.codeborne.selenide.Selenide.$;
-import static com.provectus.kafka.ui.helpers.WaitUtils.refreshUntil;
 
 
+@ExtensionMethod(WaitUtils.class)
 public class TopicsList {
 public class TopicsList {
-    public static final String path = "ui/clusters/%s/topics";
+    private static final String path = "ui/clusters/%s/topics";
+
+    @Step
+    public TopicsList goTo(String cluster) {
+        Selenide.open(TestConfiguration.BASE_URL+path.formatted(cluster));
+        return this;
+    }
 
 
     @Step
     @Step
     public TopicsList isOnPage() {
     public TopicsList isOnPage() {
@@ -21,8 +30,8 @@ public class TopicsList {
 
 
     @SneakyThrows
     @SneakyThrows
     public TopicsList openTopic(String topicName) {
     public TopicsList openTopic(String topicName) {
-        WaitUtils.refreshUntil(By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']"
-                .formatted(topicName)));
+        By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']"
+                .formatted(topicName)).refreshUntil(Condition.visible);
         $(By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']".formatted(topicName)))
         $(By.xpath("//div[contains(@class,'section')]//table//a[text()='%s']".formatted(topicName)))
                 .click();
                 .click();
         return this;
         return this;
@@ -30,7 +39,7 @@ public class TopicsList {
 
 
     @SneakyThrows
     @SneakyThrows
     public TopicsList isDeleted(String topicName) {
     public TopicsList isDeleted(String topicName) {
-        refreshUntil(By.xpath("//div[contains(@class,'section')]//table"));
+        By.xpath("//div[contains(@class,'section')]//table").refreshUntil(Condition.visible);
         $(By.xpath("//a[text()='%s']".formatted(topicName))).shouldNotBe(Condition.visible);
         $(By.xpath("//a[text()='%s']".formatted(topicName))).shouldNotBe(Condition.visible);
         return this;
         return this;
     }
     }

+ 9 - 13
kafka-ui-e2e-checks/src/test/java/com/provectus/kafka/ui/topics/TopicTests.java

@@ -3,16 +3,13 @@ package com.provectus.kafka.ui.topics;
 import com.codeborne.selenide.Selenide;
 import com.codeborne.selenide.Selenide;
 import com.provectus.kafka.ui.base.BaseTest;
 import com.provectus.kafka.ui.base.BaseTest;
 import com.provectus.kafka.ui.helpers.Helpers;
 import com.provectus.kafka.ui.helpers.Helpers;
-import com.provectus.kafka.ui.helpers.WaitUtils;
 import com.provectus.kafka.ui.pages.MainPage;
 import com.provectus.kafka.ui.pages.MainPage;
-import com.provectus.kafka.ui.pages.TopicView;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Test;
 
 
 
 
-
 public class TopicTests extends BaseTest {
 public class TopicTests extends BaseTest {
 
 
     public static final String NEW_TOPIC = "new-topic";
     public static final String NEW_TOPIC = "new-topic";
@@ -47,7 +44,7 @@ public class TopicTests extends BaseTest {
             pages.open()
             pages.open()
                     .isOnPage()
                     .isOnPage()
                     .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.TOPICS)
                     .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.TOPICS)
-                    .isTopic(NEW_TOPIC);
+                    .topicIsVisible(NEW_TOPIC);
         } finally {
         } finally {
             helpers.apiHelper.deleteTopic(SECOND_LOCAL, NEW_TOPIC);
             helpers.apiHelper.deleteTopic(SECOND_LOCAL, NEW_TOPIC);
         }
         }
@@ -68,21 +65,20 @@ public class TopicTests extends BaseTest {
                 .changeMaxMessageBytes(UPDATED_MAX_MESSAGE_BYTES)
                 .changeMaxMessageBytes(UPDATED_MAX_MESSAGE_BYTES)
                 .submitSettingChanges();
                 .submitSettingChanges();
         Selenide.refresh();
         Selenide.refresh();
-        TopicView topicView = pages.openTopicView(SECOND_LOCAL, UPDATE_TOPIC)
-                .openEditSettings();
-
-        WaitUtils.waitForSelectedValue(topicView.getCleanupPolicy(), COMPACT_POLICY_VALUE);
-
-        Assertions.assertEquals(UPDATED_TIME_TO_RETAIN_VALUE, topicView.getTimeToRetain().getValue());
-        Assertions.assertEquals(UPDATED_MAX_SIZE_ON_DISK, topicView.getMaxSizeOnDisk().getSelectedText());
-        Assertions.assertEquals(UPDATED_MAX_MESSAGE_BYTES, topicView.getMaxMessageBytes().getValue());
+        pages.openTopicView(SECOND_LOCAL, UPDATE_TOPIC)
+                .openEditSettings()
+        // Assertions
+                .cleanupPolicyIs(COMPACT_POLICY_VALUE)
+                .timeToRetainIs(UPDATED_TIME_TO_RETAIN_VALUE)
+                .maxSizeOnDiskIs(UPDATED_MAX_SIZE_ON_DISK)
+                .maxMessageBytesIs(UPDATED_MAX_MESSAGE_BYTES);
     }
     }
 
 
     @SneakyThrows
     @SneakyThrows
     @DisplayName("should delete topic")
     @DisplayName("should delete topic")
     @Test
     @Test
     @Disabled
     @Disabled
-    void deleteTopic(){
+    void deleteTopic() {
 
 
         pages.openTopicsList(SECOND_LOCAL)
         pages.openTopicsList(SECOND_LOCAL)
                 .isOnPage()
                 .isOnPage()