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;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
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 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.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||
|
||||
@ExtensionMethod({WaitUtils.class})
|
||||
public class MainPage {
|
||||
|
||||
private static final String path = "/";
|
||||
public class NaviSideBar {
|
||||
|
||||
@Step
|
||||
public MainPage goTo() {
|
||||
Selenide.open(Source.BASE_WEB_URL + path);
|
||||
public NaviSideBar waitUntilScreenReady() {
|
||||
$x("//*[contains(text(),'Loading')]").shouldBe(Condition.disappear, Duration.ofSeconds(30));
|
||||
$x("//a[@title='Dashboard']").shouldBe(Condition.visible, Duration.ofSeconds(30));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public MainPage waitUntilScreenReady() {
|
||||
$(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) {
|
||||
public NaviSideBar openSideMenu(String clusterName, SideMenuOption option) {
|
||||
SelenideElement clusterElement = $x(String.format("//aside/ul/li[contains(.,'%s')]", clusterName)).shouldBe(Condition.visible);
|
||||
if (clusterElement.parent().$$x(".//ul").size() == 0) {
|
||||
clusterElement.click();
|
||||
|
@ -55,4 +30,26 @@ public class MainPage {
|
|||
.click();
|
||||
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;
|
||||
|
||||
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 io.qameta.allure.Step;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
|
@ -16,14 +14,6 @@ import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
|
|||
@ExtensionMethod(WaitUtils.class)
|
||||
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
|
||||
public KafkaConnectList waitUntilScreenReady() {
|
||||
$(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.provectus.kafka.ui.pages.schema;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
||||
|
@ -20,6 +21,12 @@ public class SchemaCreateForm {
|
|||
protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]");
|
||||
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
|
||||
|
||||
@Step
|
||||
public SchemaCreateForm waitUntilScreenReady() {
|
||||
$x("//h1['Edit']").shouldBe(Condition.visible);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public SchemaCreateForm setSubjectName(String name) {
|
||||
subjectName.setValue(name);
|
||||
|
|
|
@ -14,6 +14,13 @@ public class SchemaRegistryList {
|
|||
|
||||
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
|
||||
public SchemaCreateForm clickCreateSchema() {
|
||||
clickByJavaScript(schemaButton);
|
||||
|
|
|
@ -43,6 +43,6 @@ public class ProduceMessagePanel {
|
|||
submitBtn.shouldBe(Condition.enabled).click();
|
||||
submitBtn.shouldBe(Condition.disappear);
|
||||
refresh();
|
||||
return new TopicDetails().waitUntilScreenReady();
|
||||
return new TopicDetails();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package com.provectus.kafka.ui.pages.topic;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.settings.Source;
|
||||
import com.provectus.kafka.ui.utilities.WaitUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
|
@ -15,15 +13,8 @@ import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
|
|||
@ExtensionMethod({WaitUtils.class})
|
||||
public class TopicDetails {
|
||||
|
||||
private static final String URL_PATH = "/ui/clusters/%s/topics/%s";
|
||||
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
|
||||
public TopicDetails waitUntilScreenReady() {
|
||||
$(By.linkText("Overview")).shouldBe(Condition.visible);
|
||||
|
@ -70,7 +61,9 @@ public class TopicDetails {
|
|||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -89,7 +82,10 @@ public class TopicDetails {
|
|||
}
|
||||
|
||||
public enum TopicMenu {
|
||||
OVERVIEW("Overview"), MESSAGES("Messages"), CONSUMERS("Consumers"), SETTINGS("Settings");
|
||||
OVERVIEW("Overview"),
|
||||
MESSAGES("Messages"),
|
||||
CONSUMERS("Consumers"),
|
||||
SETTINGS("Settings");
|
||||
|
||||
private final String value;
|
||||
|
||||
|
|
|
@ -1,29 +1,19 @@
|
|||
package com.provectus.kafka.ui.pages.topic;
|
||||
|
||||
import com.codeborne.selenide.CollectionCondition;
|
||||
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 io.qameta.allure.Step;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
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.isVisible;
|
||||
|
||||
@ExtensionMethod(WaitUtils.class)
|
||||
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
|
||||
public TopicsList waitUntilScreenReady() {
|
||||
$(By.xpath("//*[contains(text(),'Loading')]")).shouldBe(Condition.disappear);
|
||||
|
@ -48,14 +38,4 @@ public class TopicsList {
|
|||
$(By.linkText(topicName)).click();
|
||||
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_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)
|
||||
@DisplayName("main page should load")
|
||||
void mainPageLoads() {
|
||||
mainPage.goTo()
|
||||
.waitUntilScreenReady();
|
||||
compareScreenshots("main");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.provectus.kafka.ui.base;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.WebDriverRunner;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.DisplayNameGenerator;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.TestCaseGenerator;
|
||||
|
@ -22,9 +24,10 @@ import org.testcontainers.utility.DockerImageName;
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
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.setup;
|
||||
import static com.provectus.kafka.ui.base.Setup.*;
|
||||
import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL;
|
||||
|
||||
@Slf4j
|
||||
@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 SELENIARM_STANDALONE_CHROMIUM = "seleniarm/standalone-chromium:103.0";
|
||||
protected static final String CLUSTER_NAME = "local";
|
||||
|
||||
private final Screenshooter screenshooter = new Screenshooter();
|
||||
|
||||
protected static BrowserWebDriverContainer<?> webDriverContainer = null;
|
||||
|
@ -55,6 +56,8 @@ public class BaseTest extends Facade {
|
|||
RemoteWebDriver remoteWebDriver = webDriverContainer.getWebDriver();
|
||||
WebDriverRunner.setWebDriver(remoteWebDriver);
|
||||
remoteWebDriver.manage().window().setSize(new Dimension(1440, 1024));
|
||||
Selenide.open(BASE_WEB_URL);
|
||||
naviSideBar.waitUntilScreenReady();
|
||||
}
|
||||
|
||||
@BeforeAll
|
||||
|
@ -118,5 +121,6 @@ public class BaseTest extends Facade {
|
|||
Allure.addAttachment("Screenshot",
|
||||
new ByteArrayInputStream(
|
||||
((TakesScreenshot) webDriverContainer.getWebDriver()).getScreenshotAs(OutputType.BYTES)));
|
||||
browserClear();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.provectus.kafka.ui.base;
|
||||
|
||||
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.ConnectorDetails;
|
||||
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;
|
||||
|
||||
public abstract class Facade {
|
||||
protected MainPage mainPage = new MainPage();
|
||||
protected ApiHelper apiHelper = new ApiHelper();
|
||||
protected ConnectorCreateForm connectorCreateForm = new ConnectorCreateForm();
|
||||
protected KafkaConnectList kafkaConnectList = new KafkaConnectList();
|
||||
|
@ -26,4 +25,5 @@ public abstract class Facade {
|
|||
protected TopicCreateEditForm topicCreateEditForm = new TopicCreateEditForm();
|
||||
protected TopicsList topicsList = new TopicsList();
|
||||
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.logevents.SelenideLogger;
|
||||
import io.qameta.allure.Step;
|
||||
import io.qameta.allure.selenide.AllureSelenide;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.*;
|
||||
import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL;
|
||||
|
||||
@Slf4j
|
||||
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.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;
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
|
@ -60,14 +62,19 @@ public class ConnectorsTests extends BaseTest {
|
|||
Connector connectorForCreate = new Connector()
|
||||
.setName("sink_postgres_activities_e2e_checks")
|
||||
.setConfig(getResourceAsString("config_for_create_connector.json"));
|
||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateConnectorButton()
|
||||
.clickCreateConnectorButton();
|
||||
connectorCreateForm
|
||||
.waitUntilScreenReady()
|
||||
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
|
||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()");
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()), "isConnectorVisible()");
|
||||
CONNECTOR_LIST.add(connectorForCreate);
|
||||
}
|
||||
|
||||
|
@ -77,14 +84,20 @@ public class ConnectorsTests extends BaseTest {
|
|||
@CaseId(196)
|
||||
@Test
|
||||
public void updateConnector() {
|
||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.openConnector(CONNECTOR_FOR_UPDATE.getName());
|
||||
connectorDetails.waitUntilScreenReady()
|
||||
connectorDetails
|
||||
.waitUntilScreenReady()
|
||||
.openConfigTab()
|
||||
.setConfig(CONNECTOR_FOR_UPDATE.getConfig());
|
||||
kafkaConnectList.goTo(CLUSTER_NAME);
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()");
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()), "isConnectorVisible()");
|
||||
}
|
||||
|
||||
@DisplayName("should delete connector")
|
||||
|
@ -93,7 +106,9 @@ public class ConnectorsTests extends BaseTest {
|
|||
@CaseId(195)
|
||||
@Test
|
||||
public void deleteConnector() {
|
||||
kafkaConnectList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.openConnector(CONNECTOR_FOR_DELETE.getName());
|
||||
connectorDetails
|
||||
|
@ -101,7 +116,10 @@ public class ConnectorsTests extends BaseTest {
|
|||
.openDotMenu()
|
||||
.clickDeleteButton()
|
||||
.clickConfirmButton();
|
||||
kafkaConnectList.goTo(CLUSTER_NAME);
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
|
||||
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.base.BaseTest;
|
||||
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.Suite;
|
||||
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.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;
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
|
@ -42,16 +42,22 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(1)
|
||||
void createSchemaAvro() {
|
||||
Schema schemaAvro = Schema.createSchemaAvro();
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.clickCreateSchema()
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaAvro.getName())
|
||||
.setSchemaField(fileToString(schemaAvro.getValuePath()))
|
||||
.selectSchemaTypeFromDropdown(schemaAvro.getType())
|
||||
.clickSubmit()
|
||||
.clickSubmit();
|
||||
schemaDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaAvro);
|
||||
}
|
||||
|
@ -64,17 +70,24 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(2)
|
||||
void updateSchemaAvro() {
|
||||
AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json");
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.openSchema(AVRO_API.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(AVRO_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.openEditSchema();
|
||||
Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
||||
schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
||||
.setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
|
||||
.clickSubmit()
|
||||
schemaCreateForm
|
||||
.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")
|
||||
|
@ -84,11 +97,16 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(3)
|
||||
void deleteSchemaAvro() {
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.openSchema(AVRO_API.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(AVRO_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.remove(AVRO_API);
|
||||
}
|
||||
|
@ -101,15 +119,22 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(4)
|
||||
void createSchemaJson() {
|
||||
Schema schemaJson = Schema.createSchemaJson();
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.clickCreateSchema()
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaJson.getName())
|
||||
.setSchemaField(fileToString(schemaJson.getValuePath()))
|
||||
.selectSchemaTypeFromDropdown(schemaJson.getType())
|
||||
.clickSubmit()
|
||||
.clickSubmit();
|
||||
schemaDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaJson);
|
||||
}
|
||||
|
@ -121,11 +146,16 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(5)
|
||||
void deleteSchemaJson() {
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.openSchema(JSON_API.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(JSON_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.remove(JSON_API);
|
||||
}
|
||||
|
@ -138,15 +168,22 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(6)
|
||||
void createSchemaProtobuf() {
|
||||
Schema schemaProtobuf = Schema.createSchemaProtobuf();
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.clickCreateSchema()
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaProtobuf.getName())
|
||||
.setSchemaField(fileToString(schemaProtobuf.getValuePath()))
|
||||
.selectSchemaTypeFromDropdown(schemaProtobuf.getType())
|
||||
.clickSubmit()
|
||||
.clickSubmit();
|
||||
schemaDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaProtobuf);
|
||||
}
|
||||
|
@ -158,11 +195,16 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(7)
|
||||
void deleteSchemaProtobuf() {
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
schemaRegistryList.openSchema(PROTOBUF_API.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(PROTOBUF_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
|
||||
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.models.Topic;
|
||||
import com.provectus.kafka.ui.pages.MainPage;
|
||||
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.Suite;
|
||||
|
@ -14,6 +13,8 @@ import org.junit.jupiter.api.*;
|
|||
import java.util.ArrayList;
|
||||
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;
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
|
@ -44,15 +45,21 @@ public class TopicTests extends BaseTest {
|
|||
@Test
|
||||
public void createTopic() {
|
||||
Topic topicToCreate = new Topic().setName("new-topic");
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
||||
topicsList.pressCreateNewTopic()
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.pressCreateNewTopic();
|
||||
topicCreateEditForm
|
||||
.setTopicName(topicToCreate.getName())
|
||||
.sendData()
|
||||
.sendData();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
mainPage.goTo()
|
||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
||||
Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()), "isTopicVisible");
|
||||
TOPIC_LIST.add(topicToCreate);
|
||||
}
|
||||
|
||||
|
@ -63,21 +70,29 @@ public class TopicTests extends BaseTest {
|
|||
@CaseId(197)
|
||||
@Test
|
||||
public void updateTopic() {
|
||||
topicsList.goTo(CLUSTER_NAME)
|
||||
.waitUntilScreenReady();
|
||||
topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openEditSettings()
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openEditSettings();
|
||||
topicCreateEditForm
|
||||
.selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
|
||||
.setMinInsyncReplicas(10)
|
||||
.setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
||||
.setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
||||
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
|
||||
.sendData()
|
||||
.sendData();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
topicsList.goTo(CLUSTER_NAME)
|
||||
.waitUntilScreenReady();
|
||||
topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openEditSettings();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
|
@ -94,14 +109,19 @@ public class TopicTests extends BaseTest {
|
|||
@CaseId(207)
|
||||
@Test
|
||||
public void deleteTopic() {
|
||||
topicsList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_DELETE.getName())
|
||||
.openTopic(TOPIC_FOR_DELETE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.deleteTopic();
|
||||
topicsList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.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);
|
||||
}
|
||||
|
||||
|
@ -111,15 +131,21 @@ public class TopicTests extends BaseTest {
|
|||
@CaseId(222)
|
||||
@Test
|
||||
void produceMessage() {
|
||||
topicsList.goTo(CLUSTER_NAME)
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName())
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openTopicMenu(TopicDetails.TopicMenu.MESSAGES)
|
||||
.clickOnButton("Produce Message")
|
||||
.clickOnButton("Produce Message");
|
||||
produceMessagePanel
|
||||
.setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
|
||||
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
|
||||
.submitProduceMessage();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
|
||||
softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
|
||||
|
|
Loading…
Add table
Reference in a new issue