Create navigation thru the app using web driver (#2701)
* [e2e] create navigation thru the app using web driver #2642 * [e2e]Fix create navigation thru the app using web driver #2642 * [e2e]Fix create navigation thru the app using web driver #2642 * [e2e]Fix2 create navigation thru the app using web driver #2642 * [e2e]Fix3 create navigation thru the app using web driver #2642 * [e2e]Fix4 create navigation thru the app using web driver #2642 * [e2e]Fix5 create navigation thru the app using web driver #2642 * [e2e]Fix6 create navigation thru the app using web driver #2642 * [e2e]Fix7 create navigation thru the app using web driver #2642 Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
This commit is contained in:
parent
6dff8f105e
commit
67eea972f7
15 changed files with 235 additions and 154 deletions
|
@ -1,50 +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.codeborne.selenide.Selenide;
|
|
||||||
import com.codeborne.selenide.SelenideElement;
|
import com.codeborne.selenide.SelenideElement;
|
||||||
import com.provectus.kafka.ui.utilities.WaitUtils;
|
|
||||||
import com.provectus.kafka.ui.settings.Source;
|
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import lombok.experimental.ExtensionMethod;
|
|
||||||
import org.openqa.selenium.By;
|
|
||||||
|
|
||||||
import static com.codeborne.selenide.Selenide.$;
|
import java.time.Duration;
|
||||||
|
|
||||||
import static com.codeborne.selenide.Selenide.$x;
|
import static com.codeborne.selenide.Selenide.$x;
|
||||||
|
import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||||
|
|
||||||
@ExtensionMethod({WaitUtils.class})
|
public class NaviSideBar {
|
||||||
public class MainPage {
|
|
||||||
|
|
||||||
private static final String path = "/";
|
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public MainPage goTo() {
|
public NaviSideBar waitUntilScreenReady() {
|
||||||
Selenide.open(Source.BASE_WEB_URL + path);
|
$x("//*[contains(text(),'Loading')]").shouldBe(Condition.disappear, Duration.ofSeconds(30));
|
||||||
|
$x("//a[@title='Dashboard']").shouldBe(Condition.visible, Duration.ofSeconds(30));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public MainPage waitUntilScreenReady() {
|
public NaviSideBar openSideMenu(String clusterName, SideMenuOption option) {
|
||||||
$(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
|
|
||||||
$("input[name=switchRoundedDefault]").parent().$("span").shouldBe(Condition.visible);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum SideMenuOptions {
|
|
||||||
BROKERS("Brokers"),
|
|
||||||
TOPICS("Topics"),
|
|
||||||
CONSUMERS("Consumers"),
|
|
||||||
SCHEMA_REGISTRY("Schema Registry");
|
|
||||||
|
|
||||||
final String value;
|
|
||||||
|
|
||||||
SideMenuOptions(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Step
|
|
||||||
public MainPage goToSideMenu(String clusterName, SideMenuOptions option) {
|
|
||||||
SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible);
|
SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible);
|
||||||
if (clusterElement.parent().$$x(".//ul").size() == 0) {
|
if (clusterElement.parent().$$x(".//ul").size() == 0) {
|
||||||
clusterElement.click();
|
clusterElement.click();
|
||||||
|
@ -55,4 +30,26 @@ public class MainPage {
|
||||||
.click();
|
.click();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Step
|
||||||
|
public NaviSideBar openSideMenu(SideMenuOption option) {
|
||||||
|
openSideMenu(CLUSTER_NAME, option);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public enum SideMenuOption {
|
||||||
|
BROKERS("Brokers"),
|
||||||
|
TOPICS("Topics"),
|
||||||
|
CONSUMERS("Consumers"),
|
||||||
|
SCHEMA_REGISTRY("Schema Registry"),
|
||||||
|
KAFKA_CONNECT("Kafka Connect"),
|
||||||
|
KSQL_DB("KSQL DB");
|
||||||
|
|
||||||
|
final String value;
|
||||||
|
|
||||||
|
SideMenuOption(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
package com.provectus.kafka.ui.pages.connector;
|
package com.provectus.kafka.ui.pages.connector;
|
||||||
|
|
||||||
import com.codeborne.selenide.Condition;
|
import com.codeborne.selenide.Condition;
|
||||||
import com.codeborne.selenide.Selenide;
|
|
||||||
import com.provectus.kafka.ui.settings.Source;
|
|
||||||
import com.provectus.kafka.ui.utilities.WaitUtils;
|
import com.provectus.kafka.ui.utilities.WaitUtils;
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import lombok.experimental.ExtensionMethod;
|
import lombok.experimental.ExtensionMethod;
|
||||||
|
@ -16,14 +14,6 @@ import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
|
||||||
@ExtensionMethod(WaitUtils.class)
|
@ExtensionMethod(WaitUtils.class)
|
||||||
public class KafkaConnectList {
|
public class KafkaConnectList {
|
||||||
|
|
||||||
private static final String path = "/ui/clusters/%s/connectors";
|
|
||||||
|
|
||||||
@Step("Open URL to {cluster}")
|
|
||||||
public KafkaConnectList goTo(String cluster) {
|
|
||||||
Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public KafkaConnectList waitUntilScreenReady() {
|
public KafkaConnectList waitUntilScreenReady() {
|
||||||
$(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible);
|
$(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.provectus.kafka.ui.pages.schema;
|
package com.provectus.kafka.ui.pages.schema;
|
||||||
|
|
||||||
|
import com.codeborne.selenide.Condition;
|
||||||
import com.codeborne.selenide.Selenide;
|
import com.codeborne.selenide.Selenide;
|
||||||
import com.codeborne.selenide.SelenideElement;
|
import com.codeborne.selenide.SelenideElement;
|
||||||
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
||||||
|
@ -20,6 +21,12 @@ public class SchemaCreateForm {
|
||||||
protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]");
|
protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]");
|
||||||
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
|
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
|
||||||
|
|
||||||
|
@Step
|
||||||
|
public SchemaCreateForm waitUntilScreenReady() {
|
||||||
|
$x("//h1['Edit']").shouldBe(Condition.visible);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public SchemaCreateForm setSubjectName(String name) {
|
public SchemaCreateForm setSubjectName(String name) {
|
||||||
subjectName.setValue(name);
|
subjectName.setValue(name);
|
||||||
|
|
|
@ -14,6 +14,13 @@ public class SchemaRegistryList {
|
||||||
|
|
||||||
private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]"));
|
private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]"));
|
||||||
|
|
||||||
|
@Step
|
||||||
|
public SchemaRegistryList waitUntilScreenReady(){
|
||||||
|
$x("//*[contains(text(),'Loading')]").shouldBe(Condition.disappear);
|
||||||
|
$x("//button[contains(text(),'Create Schema')]").shouldBe(Condition.visible);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public SchemaCreateForm clickCreateSchema() {
|
public SchemaCreateForm clickCreateSchema() {
|
||||||
clickByJavaScript(schemaButton);
|
clickByJavaScript(schemaButton);
|
||||||
|
|
|
@ -43,6 +43,6 @@ public class ProduceMessagePanel {
|
||||||
submitBtn.shouldBe(Condition.enabled).click();
|
submitBtn.shouldBe(Condition.enabled).click();
|
||||||
submitBtn.shouldBe(Condition.disappear);
|
submitBtn.shouldBe(Condition.disappear);
|
||||||
refresh();
|
refresh();
|
||||||
return new TopicDetails().waitUntilScreenReady();
|
return new TopicDetails();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package com.provectus.kafka.ui.pages.topic;
|
package com.provectus.kafka.ui.pages.topic;
|
||||||
|
|
||||||
import com.codeborne.selenide.Condition;
|
import com.codeborne.selenide.Condition;
|
||||||
import com.codeborne.selenide.Selenide;
|
|
||||||
import com.codeborne.selenide.SelenideElement;
|
import com.codeborne.selenide.SelenideElement;
|
||||||
import com.provectus.kafka.ui.settings.Source;
|
|
||||||
import com.provectus.kafka.ui.utilities.WaitUtils;
|
import com.provectus.kafka.ui.utilities.WaitUtils;
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import lombok.experimental.ExtensionMethod;
|
import lombok.experimental.ExtensionMethod;
|
||||||
|
@ -15,15 +13,8 @@ import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
|
||||||
@ExtensionMethod({WaitUtils.class})
|
@ExtensionMethod({WaitUtils.class})
|
||||||
public class TopicDetails {
|
public class TopicDetails {
|
||||||
|
|
||||||
private static final String URL_PATH = "/ui/clusters/%s/topics/%s";
|
|
||||||
protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first();
|
protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first();
|
||||||
|
|
||||||
@Step
|
|
||||||
public TopicDetails goTo(String cluster, String topic) {
|
|
||||||
Selenide.open(Source.BASE_WEB_URL + String.format(URL_PATH, cluster, topic));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public TopicDetails waitUntilScreenReady() {
|
public TopicDetails waitUntilScreenReady() {
|
||||||
$(By.linkText("Overview")).shouldBe(Condition.visible);
|
$(By.linkText("Overview")).shouldBe(Condition.visible);
|
||||||
|
@ -70,7 +61,9 @@ public class TopicDetails {
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum DotMenuHeaderItems {
|
private enum DotMenuHeaderItems {
|
||||||
EDIT_SETTINGS("Edit settings"), CLEAR_MESSAGES("Clear messages"), REMOVE_TOPIC("Remove topic");
|
EDIT_SETTINGS("Edit settings"),
|
||||||
|
CLEAR_MESSAGES("Clear messages"),
|
||||||
|
REMOVE_TOPIC("Remove topic");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
|
@ -89,7 +82,10 @@ public class TopicDetails {
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TopicMenu {
|
public enum TopicMenu {
|
||||||
OVERVIEW("Overview"), MESSAGES("Messages"), CONSUMERS("Consumers"), SETTINGS("Settings");
|
OVERVIEW("Overview"),
|
||||||
|
MESSAGES("Messages"),
|
||||||
|
CONSUMERS("Consumers"),
|
||||||
|
SETTINGS("Settings");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,19 @@
|
||||||
package com.provectus.kafka.ui.pages.topic;
|
package com.provectus.kafka.ui.pages.topic;
|
||||||
|
|
||||||
import com.codeborne.selenide.CollectionCondition;
|
|
||||||
import com.codeborne.selenide.Condition;
|
import com.codeborne.selenide.Condition;
|
||||||
import com.codeborne.selenide.Selenide;
|
|
||||||
import com.provectus.kafka.ui.settings.Source;
|
|
||||||
import com.provectus.kafka.ui.utilities.WaitUtils;
|
import com.provectus.kafka.ui.utilities.WaitUtils;
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import lombok.experimental.ExtensionMethod;
|
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.codeborne.selenide.Selenide.$x;
|
||||||
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
|
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
|
||||||
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
|
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
|
||||||
|
|
||||||
@ExtensionMethod(WaitUtils.class)
|
@ExtensionMethod(WaitUtils.class)
|
||||||
public class TopicsList {
|
public class TopicsList {
|
||||||
|
|
||||||
private static final String path = "/ui/clusters/%s/all-topics";
|
|
||||||
|
|
||||||
@Step
|
|
||||||
public TopicsList goTo(String cluster) {
|
|
||||||
Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public TopicsList waitUntilScreenReady() {
|
public TopicsList waitUntilScreenReady() {
|
||||||
$(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
|
$(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
|
||||||
|
@ -48,14 +38,4 @@ public class TopicsList {
|
||||||
$(By.linkText(topicName)).click();
|
$(By.linkText(topicName)).click();
|
||||||
return new TopicDetails();
|
return new TopicDetails();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Step
|
|
||||||
public TopicsList isTopicNotVisible(String topicName) {
|
|
||||||
$$x("//table/tbody/tr/td[2]")
|
|
||||||
.shouldBe(CollectionCondition.sizeGreaterThan(0))
|
|
||||||
.find(Condition.exactText(topicName))
|
|
||||||
.shouldBe(Condition.not(Condition.visible));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,4 +4,5 @@ public abstract class Source {
|
||||||
|
|
||||||
public static String BASE_API_URL = System.getProperty("BASE_URL", "http://localhost:8080");
|
public static String BASE_API_URL = System.getProperty("BASE_URL", "http://localhost:8080");
|
||||||
public static String BASE_WEB_URL = System.getProperty("BASE_DOCKER_URL", "http://host.testcontainers.internal:8080");
|
public static String BASE_WEB_URL = System.getProperty("BASE_DOCKER_URL", "http://host.testcontainers.internal:8080");
|
||||||
|
public static final String CLUSTER_NAME = "local";
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,6 @@ public class SmokeTests extends BaseTest {
|
||||||
@CaseId(198)
|
@CaseId(198)
|
||||||
@DisplayName("main page should load")
|
@DisplayName("main page should load")
|
||||||
void mainPageLoads() {
|
void mainPageLoads() {
|
||||||
mainPage.goTo()
|
|
||||||
.waitUntilScreenReady();
|
|
||||||
compareScreenshots("main");
|
compareScreenshots("main");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.provectus.kafka.ui.base;
|
package com.provectus.kafka.ui.base;
|
||||||
|
|
||||||
|
import com.codeborne.selenide.Condition;
|
||||||
|
import com.codeborne.selenide.Selenide;
|
||||||
import com.codeborne.selenide.WebDriverRunner;
|
import com.codeborne.selenide.WebDriverRunner;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.DisplayNameGenerator;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.DisplayNameGenerator;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.TestCaseGenerator;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.TestCaseGenerator;
|
||||||
|
@ -22,9 +24,10 @@ import org.testcontainers.utility.DockerImageName;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.time.Duration;
|
||||||
|
|
||||||
import static com.provectus.kafka.ui.base.Setup.clearReports;
|
import static com.provectus.kafka.ui.base.Setup.*;
|
||||||
import static com.provectus.kafka.ui.base.Setup.setup;
|
import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@DisplayNameGeneration(DisplayNameGenerator.class)
|
@DisplayNameGeneration(DisplayNameGenerator.class)
|
||||||
|
@ -32,8 +35,6 @@ public class BaseTest extends Facade {
|
||||||
|
|
||||||
private static final String SELENIUM_IMAGE_NAME = "selenium/standalone-chrome:103.0";
|
private static final String SELENIUM_IMAGE_NAME = "selenium/standalone-chrome:103.0";
|
||||||
private static final String SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0";
|
private static final String SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0";
|
||||||
protected static final String CLUSTER_NAME = "local";
|
|
||||||
|
|
||||||
private final Screenshooter screenshooter = new Screenshooter();
|
private final Screenshooter screenshooter = new Screenshooter();
|
||||||
|
|
||||||
protected static BrowserWebDriverContainer<?> webDriverContainer = null;
|
protected static BrowserWebDriverContainer<?> webDriverContainer = null;
|
||||||
|
@ -55,6 +56,8 @@ public class BaseTest extends Facade {
|
||||||
RemoteWebDriver remoteWebDriver = webDriverContainer.getWebDriver();
|
RemoteWebDriver remoteWebDriver = webDriverContainer.getWebDriver();
|
||||||
WebDriverRunner.setWebDriver(remoteWebDriver);
|
WebDriverRunner.setWebDriver(remoteWebDriver);
|
||||||
remoteWebDriver.manage().window().setSize(new Dimension(1440, 1024));
|
remoteWebDriver.manage().window().setSize(new Dimension(1440, 1024));
|
||||||
|
Selenide.open(BASE_WEB_URL);
|
||||||
|
naviSideBar.waitUntilScreenReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
|
@ -118,5 +121,6 @@ public class BaseTest extends Facade {
|
||||||
Allure.addAttachment("Screenshot",
|
Allure.addAttachment("Screenshot",
|
||||||
new ByteArrayInputStream(
|
new ByteArrayInputStream(
|
||||||
((TakesScreenshot) webDriverContainer.getWebDriver()).getScreenshotAs(OutputType.BYTES)));
|
((TakesScreenshot) webDriverContainer.getWebDriver()).getScreenshotAs(OutputType.BYTES)));
|
||||||
|
browserClear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.provectus.kafka.ui.base;
|
package com.provectus.kafka.ui.base;
|
||||||
|
|
||||||
import com.provectus.kafka.ui.helpers.ApiHelper;
|
import com.provectus.kafka.ui.helpers.ApiHelper;
|
||||||
import com.provectus.kafka.ui.pages.MainPage;
|
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;
|
||||||
|
@ -14,7 +14,6 @@ import com.provectus.kafka.ui.pages.topic.TopicDetails;
|
||||||
import com.provectus.kafka.ui.pages.topic.TopicsList;
|
import com.provectus.kafka.ui.pages.topic.TopicsList;
|
||||||
|
|
||||||
public abstract class Facade {
|
public abstract class Facade {
|
||||||
protected MainPage mainPage = new MainPage();
|
|
||||||
protected ApiHelper apiHelper = new ApiHelper();
|
protected ApiHelper apiHelper = new ApiHelper();
|
||||||
protected ConnectorCreateForm connectorCreateForm = new ConnectorCreateForm();
|
protected ConnectorCreateForm connectorCreateForm = new ConnectorCreateForm();
|
||||||
protected KafkaConnectList kafkaConnectList = new KafkaConnectList();
|
protected KafkaConnectList kafkaConnectList = new KafkaConnectList();
|
||||||
|
@ -26,4 +25,5 @@ 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 NaviSideBar naviSideBar = new NaviSideBar();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,19 @@ package com.provectus.kafka.ui.base;
|
||||||
|
|
||||||
import com.codeborne.selenide.Configuration;
|
import com.codeborne.selenide.Configuration;
|
||||||
import com.codeborne.selenide.logevents.SelenideLogger;
|
import com.codeborne.selenide.logevents.SelenideLogger;
|
||||||
|
import io.qameta.allure.Step;
|
||||||
import io.qameta.allure.selenide.AllureSelenide;
|
import io.qameta.allure.selenide.AllureSelenide;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import static com.codeborne.selenide.Selenide.*;
|
||||||
|
import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class Setup {
|
public abstract class Setup {
|
||||||
|
|
||||||
|
@ -38,4 +44,13 @@ public abstract class Setup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
public static void browserClear() {
|
||||||
|
log.debug("browserClear");
|
||||||
|
clearBrowserLocalStorage();
|
||||||
|
clearBrowserCookies();
|
||||||
|
refresh();
|
||||||
|
log.debug("=> DONE");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import org.junit.jupiter.api.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.KAFKA_CONNECT;
|
||||||
|
import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||||
import static com.provectus.kafka.ui.utilities.FileUtils.getResourceAsString;
|
import static com.provectus.kafka.ui.utilities.FileUtils.getResourceAsString;
|
||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
|
@ -60,14 +62,19 @@ public class ConnectorsTests extends BaseTest {
|
||||||
Connector connectorForCreate = new Connector()
|
Connector connectorForCreate = new Connector()
|
||||||
.setName("sink_postgres_activities_e2e_checks")
|
.setName("sink_postgres_activities_e2e_checks")
|
||||||
.setConfig(getResourceAsString("config_for_create_connector.json"));
|
.setConfig(getResourceAsString("config_for_create_connector.json"));
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.clickCreateConnectorButton()
|
.clickCreateConnectorButton();
|
||||||
|
connectorCreateForm
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
|
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()");
|
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()), "isConnectorVisible()");
|
||||||
CONNECTOR_LIST.add(connectorForCreate);
|
CONNECTOR_LIST.add(connectorForCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,14 +84,20 @@ public class ConnectorsTests extends BaseTest {
|
||||||
@CaseId(196)
|
@CaseId(196)
|
||||||
@Test
|
@Test
|
||||||
public void updateConnector() {
|
public void updateConnector() {
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openConnector(CONNECTOR_FOR_UPDATE.getName());
|
.openConnector(CONNECTOR_FOR_UPDATE.getName());
|
||||||
connectorDetails.waitUntilScreenReady()
|
connectorDetails
|
||||||
|
.waitUntilScreenReady()
|
||||||
.openConfigTab()
|
.openConfigTab()
|
||||||
.setConfig(CONNECTOR_FOR_UPDATE.getConfig());
|
.setConfig(CONNECTOR_FOR_UPDATE.getConfig());
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME);
|
naviSideBar
|
||||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()");
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()), "isConnectorVisible()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete connector")
|
@DisplayName("should delete connector")
|
||||||
|
@ -93,7 +106,9 @@ public class ConnectorsTests extends BaseTest {
|
||||||
@CaseId(195)
|
@CaseId(195)
|
||||||
@Test
|
@Test
|
||||||
public void deleteConnector() {
|
public void deleteConnector() {
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openConnector(CONNECTOR_FOR_DELETE.getName());
|
.openConnector(CONNECTOR_FOR_DELETE.getName());
|
||||||
connectorDetails
|
connectorDetails
|
||||||
|
@ -101,7 +116,10 @@ public class ConnectorsTests extends BaseTest {
|
||||||
.openDotMenu()
|
.openDotMenu()
|
||||||
.clickDeleteButton()
|
.clickDeleteButton()
|
||||||
.clickConfirmButton();
|
.clickConfirmButton();
|
||||||
kafkaConnectList.goTo(CLUSTER_NAME);
|
naviSideBar
|
||||||
|
.openSideMenu(KAFKA_CONNECT);
|
||||||
|
kafkaConnectList
|
||||||
|
.waitUntilScreenReady();
|
||||||
Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
|
Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
|
||||||
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
|
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,6 @@ package com.provectus.kafka.ui.tests;
|
||||||
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
||||||
import com.provectus.kafka.ui.base.BaseTest;
|
import com.provectus.kafka.ui.base.BaseTest;
|
||||||
import com.provectus.kafka.ui.models.Schema;
|
import com.provectus.kafka.ui.models.Schema;
|
||||||
import com.provectus.kafka.ui.pages.MainPage;
|
|
||||||
import com.provectus.kafka.ui.pages.schema.SchemaDetails;
|
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
|
||||||
|
@ -15,6 +13,8 @@ import org.junit.jupiter.api.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.SCHEMA_REGISTRY;
|
||||||
|
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;
|
||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
|
@ -42,16 +42,22 @@ public class SchemasTests extends BaseTest {
|
||||||
@Order(1)
|
@Order(1)
|
||||||
void createSchemaAvro() {
|
void createSchemaAvro() {
|
||||||
Schema schemaAvro = Schema.createSchemaAvro();
|
Schema schemaAvro = Schema.createSchemaAvro();
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.clickCreateSchema()
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.clickCreateSchema();
|
||||||
|
schemaCreateForm
|
||||||
.setSubjectName(schemaAvro.getName())
|
.setSubjectName(schemaAvro.getName())
|
||||||
.setSchemaField(fileToString(schemaAvro.getValuePath()))
|
.setSchemaField(fileToString(schemaAvro.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(schemaAvro.getType())
|
.selectSchemaTypeFromDropdown(schemaAvro.getType())
|
||||||
.clickSubmit()
|
.clickSubmit();
|
||||||
|
schemaDetails
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
naviSideBar
|
||||||
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
|
schemaRegistryList
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
mainPage.goTo()
|
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
|
||||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
|
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.add(schemaAvro);
|
SCHEMA_LIST.add(schemaAvro);
|
||||||
}
|
}
|
||||||
|
@ -64,17 +70,24 @@ public class SchemasTests extends BaseTest {
|
||||||
@Order(2)
|
@Order(2)
|
||||||
void updateSchemaAvro() {
|
void updateSchemaAvro() {
|
||||||
AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json");
|
AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json");
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.openSchema(AVRO_API.getName())
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openSchema(AVRO_API.getName());
|
||||||
|
schemaDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openEditSchema();
|
.openEditSchema();
|
||||||
Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
schemaCreateForm
|
||||||
schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
|
||||||
.setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
|
|
||||||
.clickSubmit()
|
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaDetails().getCompatibility(), "getCompatibility()");
|
Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
||||||
|
schemaCreateForm
|
||||||
|
.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
||||||
|
.setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
|
||||||
|
.clickSubmit();
|
||||||
|
schemaDetails
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), schemaDetails.getCompatibility(), "getCompatibility()");
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete AVRO schema")
|
@DisplayName("should delete AVRO schema")
|
||||||
|
@ -84,11 +97,16 @@ public class SchemasTests extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
@Order(3)
|
@Order(3)
|
||||||
void deleteSchemaAvro() {
|
void deleteSchemaAvro() {
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.openSchema(AVRO_API.getName())
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openSchema(AVRO_API.getName());
|
||||||
|
schemaDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema();
|
.removeSchema();
|
||||||
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady();
|
||||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
|
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.remove(AVRO_API);
|
SCHEMA_LIST.remove(AVRO_API);
|
||||||
}
|
}
|
||||||
|
@ -101,15 +119,22 @@ public class SchemasTests extends BaseTest {
|
||||||
@Order(4)
|
@Order(4)
|
||||||
void createSchemaJson() {
|
void createSchemaJson() {
|
||||||
Schema schemaJson = Schema.createSchemaJson();
|
Schema schemaJson = Schema.createSchemaJson();
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.clickCreateSchema()
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.clickCreateSchema();
|
||||||
|
schemaCreateForm
|
||||||
.setSubjectName(schemaJson.getName())
|
.setSubjectName(schemaJson.getName())
|
||||||
.setSchemaField(fileToString(schemaJson.getValuePath()))
|
.setSchemaField(fileToString(schemaJson.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(schemaJson.getType())
|
.selectSchemaTypeFromDropdown(schemaJson.getType())
|
||||||
.clickSubmit()
|
.clickSubmit();
|
||||||
|
schemaDetails
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
naviSideBar
|
||||||
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
|
schemaRegistryList
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
|
||||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
|
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.add(schemaJson);
|
SCHEMA_LIST.add(schemaJson);
|
||||||
}
|
}
|
||||||
|
@ -121,11 +146,16 @@ public class SchemasTests extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
@Order(5)
|
@Order(5)
|
||||||
void deleteSchemaJson() {
|
void deleteSchemaJson() {
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.openSchema(JSON_API.getName())
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openSchema(JSON_API.getName());
|
||||||
|
schemaDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema();
|
.removeSchema();
|
||||||
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady();
|
||||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
|
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.remove(JSON_API);
|
SCHEMA_LIST.remove(JSON_API);
|
||||||
}
|
}
|
||||||
|
@ -138,15 +168,22 @@ public class SchemasTests extends BaseTest {
|
||||||
@Order(6)
|
@Order(6)
|
||||||
void createSchemaProtobuf() {
|
void createSchemaProtobuf() {
|
||||||
Schema schemaProtobuf = Schema.createSchemaProtobuf();
|
Schema schemaProtobuf = Schema.createSchemaProtobuf();
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.clickCreateSchema()
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.clickCreateSchema();
|
||||||
|
schemaCreateForm
|
||||||
.setSubjectName(schemaProtobuf.getName())
|
.setSubjectName(schemaProtobuf.getName())
|
||||||
.setSchemaField(fileToString(schemaProtobuf.getValuePath()))
|
.setSchemaField(fileToString(schemaProtobuf.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(schemaProtobuf.getType())
|
.selectSchemaTypeFromDropdown(schemaProtobuf.getType())
|
||||||
.clickSubmit()
|
.clickSubmit();
|
||||||
|
schemaDetails
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
naviSideBar
|
||||||
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
|
schemaRegistryList
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
|
||||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
|
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.add(schemaProtobuf);
|
SCHEMA_LIST.add(schemaProtobuf);
|
||||||
}
|
}
|
||||||
|
@ -158,11 +195,16 @@ public class SchemasTests extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
@Order(7)
|
@Order(7)
|
||||||
void deleteSchemaProtobuf() {
|
void deleteSchemaProtobuf() {
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.openSideMenu(SCHEMA_REGISTRY);
|
||||||
schemaRegistryList.openSchema(PROTOBUF_API.getName())
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openSchema(PROTOBUF_API.getName());
|
||||||
|
schemaDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema();
|
.removeSchema();
|
||||||
|
schemaRegistryList
|
||||||
|
.waitUntilScreenReady();
|
||||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
|
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
|
||||||
SCHEMA_LIST.remove(PROTOBUF_API);
|
SCHEMA_LIST.remove(PROTOBUF_API);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.provectus.kafka.ui.tests;
|
||||||
|
|
||||||
import com.provectus.kafka.ui.base.BaseTest;
|
import com.provectus.kafka.ui.base.BaseTest;
|
||||||
import com.provectus.kafka.ui.models.Topic;
|
import com.provectus.kafka.ui.models.Topic;
|
||||||
import com.provectus.kafka.ui.pages.MainPage;
|
|
||||||
import com.provectus.kafka.ui.pages.topic.TopicDetails;
|
import com.provectus.kafka.ui.pages.topic.TopicDetails;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
|
||||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
|
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
|
||||||
|
@ -14,6 +13,8 @@ import org.junit.jupiter.api.*;
|
||||||
import java.util.ArrayList;
|
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.settings.Source.CLUSTER_NAME;
|
||||||
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
|
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
|
||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
|
@ -44,15 +45,21 @@ public class TopicTests extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
public void createTopic() {
|
public void createTopic() {
|
||||||
Topic topicToCreate = new Topic().setName("new-topic");
|
Topic topicToCreate = new Topic().setName("new-topic");
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
.openSideMenu(TOPICS);
|
||||||
topicsList.pressCreateNewTopic()
|
topicsList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.pressCreateNewTopic();
|
||||||
|
topicCreateEditForm
|
||||||
.setTopicName(topicToCreate.getName())
|
.setTopicName(topicToCreate.getName())
|
||||||
.sendData()
|
.sendData();
|
||||||
|
topicDetails
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
mainPage.goTo()
|
naviSideBar
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
.openSideMenu(TOPICS);
|
||||||
Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
|
topicsList
|
||||||
|
.waitUntilScreenReady();
|
||||||
|
Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()), "isTopicVisible");
|
||||||
TOPIC_LIST.add(topicToCreate);
|
TOPIC_LIST.add(topicToCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,21 +70,29 @@ public class TopicTests extends BaseTest {
|
||||||
@CaseId(197)
|
@CaseId(197)
|
||||||
@Test
|
@Test
|
||||||
public void updateTopic() {
|
public void updateTopic() {
|
||||||
topicsList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
.waitUntilScreenReady();
|
.openSideMenu(TOPICS);
|
||||||
topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
|
topicsList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openEditSettings()
|
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||||
|
topicDetails
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openEditSettings();
|
||||||
|
topicCreateEditForm
|
||||||
.selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
|
.selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
|
||||||
.setMinInsyncReplicas(10)
|
.setMinInsyncReplicas(10)
|
||||||
.setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
.setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
||||||
.setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
.setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
||||||
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
|
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
|
||||||
.sendData()
|
.sendData();
|
||||||
|
topicDetails
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
topicsList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
.waitUntilScreenReady();
|
.openSideMenu(TOPICS);
|
||||||
topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
|
topicsList
|
||||||
|
.waitUntilScreenReady()
|
||||||
|
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||||
|
topicDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openEditSettings();
|
.openEditSettings();
|
||||||
SoftAssertions softly = new SoftAssertions();
|
SoftAssertions softly = new SoftAssertions();
|
||||||
|
@ -94,14 +109,19 @@ public class TopicTests extends BaseTest {
|
||||||
@CaseId(207)
|
@CaseId(207)
|
||||||
@Test
|
@Test
|
||||||
public void deleteTopic() {
|
public void deleteTopic() {
|
||||||
topicsList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(TOPICS);
|
||||||
|
topicsList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopic(TOPIC_FOR_DELETE.getName())
|
.openTopic(TOPIC_FOR_DELETE.getName());
|
||||||
|
topicDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.deleteTopic();
|
.deleteTopic();
|
||||||
topicsList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(TOPICS);
|
||||||
|
topicsList
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()),"isTopicVisible");
|
Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()), "isTopicVisible");
|
||||||
TOPIC_LIST.remove(TOPIC_FOR_DELETE);
|
TOPIC_LIST.remove(TOPIC_FOR_DELETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,15 +131,21 @@ public class TopicTests extends BaseTest {
|
||||||
@CaseId(222)
|
@CaseId(222)
|
||||||
@Test
|
@Test
|
||||||
void produceMessage() {
|
void produceMessage() {
|
||||||
topicsList.goTo(CLUSTER_NAME)
|
naviSideBar
|
||||||
|
.openSideMenu(TOPICS);
|
||||||
|
topicsList
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopic(TOPIC_FOR_UPDATE.getName())
|
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||||
|
topicDetails
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopicMenu(TopicDetails.TopicMenu.MESSAGES)
|
.openTopicMenu(TopicDetails.TopicMenu.MESSAGES)
|
||||||
.clickOnButton("Produce Message")
|
.clickOnButton("Produce Message");
|
||||||
|
produceMessagePanel
|
||||||
.setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
|
.setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
|
||||||
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
|
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
|
||||||
.submitProduceMessage();
|
.submitProduceMessage();
|
||||||
|
topicDetails
|
||||||
|
.waitUntilScreenReady();
|
||||||
SoftAssertions softly = new SoftAssertions();
|
SoftAssertions softly = new SoftAssertions();
|
||||||
softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
|
softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
|
||||||
softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
|
softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
|
||||||
|
|
Loading…
Add table
Reference in a new issue