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:
Arthur 2022-10-07 15:01:58 +03:00 committed by GitHub
parent 6dff8f105e
commit 67eea972f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 235 additions and 154 deletions

View file

@ -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;
}
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -43,6 +43,6 @@ public class ProduceMessagePanel {
submitBtn.shouldBe(Condition.enabled).click();
submitBtn.shouldBe(Condition.disappear);
refresh();
return new TopicDetails().waitUntilScreenReady();
return new TopicDetails();
}
}

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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";
}

View file

@ -14,8 +14,6 @@ public class SmokeTests extends BaseTest {
@CaseId(198)
@DisplayName("main page should load")
void mainPageLoads() {
mainPage.goTo()
.waitUntilScreenReady();
compareScreenshots("main");
}
}

View file

@ -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();
}
}

View file

@ -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();
}

View file

@ -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");
}
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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();