[e2e] create screen facade class and refactor objects of page classes (#2656)

* Deleted classes Pages.java, Helpers.java

* Refactored BaseTest.java, added extension of Facade

* Deleted ExtensionMethod(WaitUtils.class) from ConnectorCreateView

* Refactored of TestClasses, added new TestInstance(TestInstance.Lifecycle.PER_CLASS) annotation for using nonstatic BeforeAll/AfterAll annotation

* Deleted ExtensionMethod(WaitUtils.class) annotation in ConnectorsView

* Refactored SmokeTests

* Added new abstract class Facade

* ConnectorsTests upd

* BaseTest resolved

* Initial new object classes in Facade

* Fix and refactored test classes

* Revert "Fix and refactored test classes"

This reverts commit b0890b32ca.

* rename apiHelpers / apiHelper

* refactored "new Objects classes"
This commit is contained in:
Alexandr Nezboretskiy 2022-09-29 14:34:48 +03:00 committed by GitHub
parent 7db55d5acf
commit 3f4791ff0a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 109 additions and 158 deletions

View file

@ -1,11 +0,0 @@
package com.provectus.kafka.ui.helpers;
public class Helpers {
public static final Helpers INSTANCE = new Helpers();
private Helpers(){}
public ApiHelper apiHelper = new ApiHelper();
}

View file

@ -1,53 +0,0 @@
package com.provectus.kafka.ui.pages;
import com.provectus.kafka.ui.pages.connector.ConnectorsList;
import com.provectus.kafka.ui.pages.connector.ConnectorsView;
import com.provectus.kafka.ui.pages.schema.SchemaRegistryList;
import com.provectus.kafka.ui.pages.topic.ProduceMessagePanel;
import com.provectus.kafka.ui.pages.topic.TopicView;
import com.provectus.kafka.ui.pages.topic.TopicsList;
import io.qameta.allure.Step;
public class Pages {
public static Pages INSTANCE = new Pages();
public MainPage mainPage = new MainPage();
public TopicsList topicsList = new TopicsList();
public TopicView topicView = new TopicView();
public ProduceMessagePanel produceMessagePanel = new ProduceMessagePanel();
public ConnectorsList connectorsList = new ConnectorsList();
public ConnectorsView connectorsView = new ConnectorsView();
public SchemaRegistryList schemaRegistry = new SchemaRegistryList();
@Step
public MainPage open() {
return openMainPage();
}
@Step
public MainPage openMainPage() {
return mainPage.goTo();
}
@Step
public TopicsList openTopicsList(String clusterName) {
return topicsList.goTo(clusterName);
}
@Step
public TopicView openTopicView(String clusterName, String topicName) {
return topicView.goTo(clusterName, topicName);
}
@Step
public ConnectorsList openConnectorsList(String clusterName) {
return connectorsList.goTo(clusterName);
}
@Step
public ConnectorsView openConnectorsView(String clusterName, String connectorName) {
return connectorsView.goTo(clusterName, connectorName);
}
}

View file

@ -2,9 +2,7 @@ package com.provectus.kafka.ui.pages.connector;
import com.codeborne.selenide.Condition; import com.codeborne.selenide.Condition;
import com.codeborne.selenide.SelenideElement; import com.codeborne.selenide.SelenideElement;
import com.provectus.kafka.ui.utilities.WaitUtils;
import io.qameta.allure.Step; import io.qameta.allure.Step;
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.$;
@ -12,7 +10,6 @@ import static com.codeborne.selenide.Selenide.sleep;
import static com.provectus.kafka.ui.utilities.WebUtils.javaExecutorClick; import static com.provectus.kafka.ui.utilities.WebUtils.javaExecutorClick;
import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log; import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log;
@ExtensionMethod(WaitUtils.class)
public class ConnectorCreateView { public class ConnectorCreateView {
SelenideElement nameField = $(By.xpath("//input[@name='name']")); SelenideElement nameField = $(By.xpath("//input[@name='name']"));

View file

@ -4,9 +4,7 @@ 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.settings.Source; import com.provectus.kafka.ui.settings.Source;
import com.provectus.kafka.ui.utilities.WaitUtils;
import io.qameta.allure.Step; import io.qameta.allure.Step;
import lombok.experimental.ExtensionMethod;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.Keys; import org.openqa.selenium.Keys;
@ -14,7 +12,6 @@ import static com.codeborne.selenide.Selenide.*;
import static com.provectus.kafka.ui.utilities.WebUtils.javaExecutorClick; import static com.provectus.kafka.ui.utilities.WebUtils.javaExecutorClick;
import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log; import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log;
@ExtensionMethod(WaitUtils.class)
public class ConnectorsView { public class ConnectorsView {
private static final String path = "/ui/clusters/%s/connects/first/connectors/%s"; private static final String path = "/ui/clusters/%s/connects/first/connectors/%s";
protected SelenideElement submitButton = $(By.xpath("//button[@type='submit']")); protected SelenideElement submitButton = $(By.xpath("//button[@type='submit']"));

View file

@ -1,8 +1,8 @@
package com.provectus.kafka.ui; package com.provectus.kafka.ui;
import com.provectus.kafka.ui.base.BaseTest; import com.provectus.kafka.ui.base.BaseTest;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
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.enums.Status;
import io.qase.api.annotation.CaseId; import io.qase.api.annotation.CaseId;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -14,7 +14,7 @@ public class SmokeTests extends BaseTest {
@CaseId(198) @CaseId(198)
@DisplayName("main page should load") @DisplayName("main page should load")
void mainPageLoads() { void mainPageLoads() {
pages.open() mainPage.goTo()
.waitUntilScreenReady(); .waitUntilScreenReady();
compareScreenshots("main"); compareScreenshots("main");
} }

View file

@ -1,8 +1,6 @@
package com.provectus.kafka.ui.base; package com.provectus.kafka.ui.base;
import com.codeborne.selenide.WebDriverRunner; import com.codeborne.selenide.WebDriverRunner;
import com.provectus.kafka.ui.helpers.Helpers;
import com.provectus.kafka.ui.pages.Pages;
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;
import com.provectus.kafka.ui.utilities.screenshots.Screenshooter; import com.provectus.kafka.ui.utilities.screenshots.Screenshooter;
@ -30,13 +28,11 @@ import static com.provectus.kafka.ui.base.Setup.setup;
@Slf4j @Slf4j
@DisplayNameGeneration(DisplayNameGenerator.class) @DisplayNameGeneration(DisplayNameGenerator.class)
public class BaseTest { 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"; protected static final String CLUSTER_NAME = "local";
protected Pages pages = Pages.INSTANCE;
protected Helpers helpers = Helpers.INSTANCE;
private final Screenshooter screenshooter = new Screenshooter(); private final Screenshooter screenshooter = new Screenshooter();

View file

@ -0,0 +1,31 @@
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.connector.ConnectorCreateView;
import com.provectus.kafka.ui.pages.connector.ConnectorsList;
import com.provectus.kafka.ui.pages.connector.ConnectorsView;
import com.provectus.kafka.ui.pages.schema.SchemaCreateView;
import com.provectus.kafka.ui.pages.schema.SchemaEditView;
import com.provectus.kafka.ui.pages.schema.SchemaRegistryList;
import com.provectus.kafka.ui.pages.schema.SchemaView;
import com.provectus.kafka.ui.pages.topic.ProduceMessagePanel;
import com.provectus.kafka.ui.pages.topic.TopicCreateEditSettingsView;
import com.provectus.kafka.ui.pages.topic.TopicView;
import com.provectus.kafka.ui.pages.topic.TopicsList;
public abstract class Facade {
protected MainPage mainPage = new MainPage();
protected ApiHelper apiHelper = new ApiHelper();
protected ConnectorCreateView connectorCreateView = new ConnectorCreateView();
protected ConnectorsList connectorsList = new ConnectorsList();
protected ConnectorsView connectorsView = new ConnectorsView();
protected SchemaCreateView schemaCreateView = new SchemaCreateView();
protected SchemaEditView schemaEditView = new SchemaEditView();
protected SchemaView schemaView = new SchemaView();
protected SchemaRegistryList schemaRegistryList = new SchemaRegistryList();
protected ProduceMessagePanel produceMessagePanel = new ProduceMessagePanel();
protected TopicCreateEditSettingsView topicCreateEditSettingsView = new TopicCreateEditSettingsView();
protected TopicsList topicsList = new TopicsList();
protected TopicView topicView = new TopicView();
}

View file

@ -1,12 +1,11 @@
package com.provectus.kafka.ui.tests; 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.helpers.Helpers;
import com.provectus.kafka.ui.models.Connector; import com.provectus.kafka.ui.models.Connector;
import com.provectus.kafka.ui.models.Topic; import com.provectus.kafka.ui.models.Topic;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
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 io.qase.api.annotation.CaseId; import io.qase.api.annotation.CaseId;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@ -15,6 +14,7 @@ import java.util.List;
import static com.provectus.kafka.ui.utilities.FileUtils.getResourceAsString; import static com.provectus.kafka.ui.utilities.FileUtils.getResourceAsString;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class ConnectorsTests extends BaseTest { public class ConnectorsTests extends BaseTest {
private static final long SUITE_ID = 10; private static final long SUITE_ID = 10;
private static final String SUITE_TITLE = "Kafka Connect"; private static final String SUITE_TITLE = "Kafka Connect";
@ -40,14 +40,14 @@ public class ConnectorsTests extends BaseTest {
.setConfig(getResourceAsString("config_for_create_connector_via_api.json")); .setConfig(getResourceAsString("config_for_create_connector_via_api.json"));
@BeforeAll @BeforeAll
public static void beforeAll() { public void beforeAll() {
TOPIC_LIST.addAll(List.of(TOPIC_FOR_CREATE, TOPIC_FOR_DELETE, TOPIC_FOR_UPDATE)); TOPIC_LIST.addAll(List.of(TOPIC_FOR_CREATE, TOPIC_FOR_DELETE, TOPIC_FOR_UPDATE));
TOPIC_LIST.forEach(topic -> { TOPIC_LIST.forEach(topic -> {
Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, topic.getName()); apiHelper.createTopic(CLUSTER_NAME, topic.getName());
Helpers.INSTANCE.apiHelper.sendMessage(CLUSTER_NAME, topic); apiHelper.sendMessage(CLUSTER_NAME, topic);
}); });
CONNECTOR_LIST.addAll(List.of(CONNECTOR_FOR_DELETE, CONNECTOR_FOR_UPDATE)); CONNECTOR_LIST.addAll(List.of(CONNECTOR_FOR_DELETE, CONNECTOR_FOR_UPDATE));
CONNECTOR_LIST.forEach(connector -> Helpers.INSTANCE.apiHelper CONNECTOR_LIST.forEach(connector -> apiHelper
.createConnector(CLUSTER_NAME, CONNECT_NAME, connector)); .createConnector(CLUSTER_NAME, CONNECT_NAME, connector));
} }
@ -60,14 +60,14 @@ 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"));
pages.openConnectorsList(CLUSTER_NAME) connectorsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.clickCreateConnectorButton() .clickCreateConnectorButton()
.waitUntilScreenReady() .waitUntilScreenReady()
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig()); .setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
pages.openConnectorsList(CLUSTER_NAME) connectorsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady(); .waitUntilScreenReady();
Assertions.assertTrue(pages.connectorsList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()"); Assertions.assertTrue(connectorsList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()");
CONNECTOR_LIST.add(connectorForCreate); CONNECTOR_LIST.add(connectorForCreate);
} }
@ -77,15 +77,14 @@ public class ConnectorsTests extends BaseTest {
@CaseId(196) @CaseId(196)
@Test @Test
public void updateConnector() { public void updateConnector() {
pages.openConnectorsList(CLUSTER_NAME) connectorsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openConnector(CONNECTOR_FOR_UPDATE.getName()); .openConnector(CONNECTOR_FOR_UPDATE.getName());
pages.connectorsView connectorsView.waitUntilScreenReady()
.waitUntilScreenReady()
.openConfigTab() .openConfigTab()
.setConfig(CONNECTOR_FOR_UPDATE.getConfig()); .setConfig(CONNECTOR_FOR_UPDATE.getConfig());
pages.openConnectorsList(CLUSTER_NAME); connectorsList.goTo(CLUSTER_NAME);
Assertions.assertTrue(pages.connectorsList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()"); Assertions.assertTrue(connectorsList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()");
} }
@DisplayName("should delete connector") @DisplayName("should delete connector")
@ -94,19 +93,19 @@ public class ConnectorsTests extends BaseTest {
@CaseId(195) @CaseId(195)
@Test @Test
public void deleteConnector() { public void deleteConnector() {
pages.openConnectorsList(CLUSTER_NAME) connectorsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openConnector(CONNECTOR_FOR_DELETE.getName()); .openConnector(CONNECTOR_FOR_DELETE.getName());
pages.connectorsView.clickDeleteButton(); connectorsView.clickDeleteButton();
pages.openConnectorsList(CLUSTER_NAME); connectorsList.goTo(CLUSTER_NAME);
Assertions.assertFalse(pages.connectorsList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()),"isConnectorVisible()"); Assertions.assertFalse(connectorsList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()),"isConnectorVisible()");
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE); CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
} }
@AfterAll @AfterAll
public static void afterAll() { public void afterAll() {
CONNECTOR_LIST.forEach(connector -> CONNECTOR_LIST.forEach(connector ->
Helpers.INSTANCE.apiHelper.deleteConnector(CLUSTER_NAME, CONNECT_NAME, connector.getName())); apiHelper.deleteConnector(CLUSTER_NAME, CONNECT_NAME, connector.getName()));
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, topic.getName())); TOPIC_LIST.forEach(topic -> apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
} }
} }

View file

@ -2,14 +2,12 @@ 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.helpers.Helpers;
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.MainPage;
import com.provectus.kafka.ui.pages.schema.SchemaEditView;
import com.provectus.kafka.ui.pages.schema.SchemaView; import com.provectus.kafka.ui.pages.schema.SchemaView;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
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 io.qase.api.annotation.CaseId; import io.qase.api.annotation.CaseId;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@ -19,7 +17,7 @@ import java.util.List;
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString; import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class SchemasTests extends BaseTest { public class SchemasTests extends BaseTest {
private static final long SUITE_ID = 11; private static final long SUITE_ID = 11;
@ -31,9 +29,9 @@ public class SchemasTests extends BaseTest {
@BeforeAll @BeforeAll
@SneakyThrows @SneakyThrows
public static void beforeAll() { public void beforeAll() {
SCHEMA_LIST.addAll(List.of(AVRO_API, JSON_API, PROTOBUF_API)); SCHEMA_LIST.addAll(List.of(AVRO_API, JSON_API, PROTOBUF_API));
SCHEMA_LIST.forEach(schema -> Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, schema)); SCHEMA_LIST.forEach(schema -> apiHelper.createSchema(CLUSTER_NAME, schema));
} }
@DisplayName("should create AVRO schema") @DisplayName("should create AVRO schema")
@ -44,17 +42,17 @@ public class SchemasTests extends BaseTest {
@Order(1) @Order(1)
void createSchemaAvro() { void createSchemaAvro() {
Schema schemaAvro = Schema.createSchemaAvro(); Schema schemaAvro = Schema.createSchemaAvro();
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.clickCreateSchema() schemaRegistryList.clickCreateSchema()
.setSubjectName(schemaAvro.getName()) .setSubjectName(schemaAvro.getName())
.setSchemaField(fileToString(schemaAvro.getValuePath())) .setSchemaField(fileToString(schemaAvro.getValuePath()))
.selectSchemaTypeFromDropdown(schemaAvro.getType()) .selectSchemaTypeFromDropdown(schemaAvro.getType())
.clickSubmit() .clickSubmit()
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.mainPage mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()"); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
SCHEMA_LIST.add(schemaAvro); SCHEMA_LIST.add(schemaAvro);
} }
@ -66,13 +64,13 @@ 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");
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.openSchema(AVRO_API.getName()) schemaRegistryList.openSchema(AVRO_API.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.openEditSchema(); .openEditSchema();
Assertions.assertTrue(new SchemaEditView().isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()"); Assertions.assertTrue(schemaEditView.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
new SchemaEditView().selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE) schemaEditView.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
.setNewSchemaValue(fileToString(AVRO_API.getValuePath())) .setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
.clickSubmit() .clickSubmit()
.waitUntilScreenReady(); .waitUntilScreenReady();
@ -86,12 +84,12 @@ public class SchemasTests extends BaseTest {
@Test @Test
@Order(3) @Order(3)
void deleteSchemaAvro() { void deleteSchemaAvro() {
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.openSchema(AVRO_API.getName()) schemaRegistryList.openSchema(AVRO_API.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.removeSchema(); .removeSchema();
Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()"); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
SCHEMA_LIST.remove(AVRO_API); SCHEMA_LIST.remove(AVRO_API);
} }
@ -103,17 +101,16 @@ public class SchemasTests extends BaseTest {
@Order(4) @Order(4)
void createSchemaJson() { void createSchemaJson() {
Schema schemaJson = Schema.createSchemaJson(); Schema schemaJson = Schema.createSchemaJson();
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.clickCreateSchema() schemaRegistryList.clickCreateSchema()
.setSubjectName(schemaJson.getName()) .setSubjectName(schemaJson.getName())
.setSchemaField(fileToString(schemaJson.getValuePath())) .setSchemaField(fileToString(schemaJson.getValuePath()))
.selectSchemaTypeFromDropdown(schemaJson.getType()) .selectSchemaTypeFromDropdown(schemaJson.getType())
.clickSubmit() .clickSubmit()
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.mainPage mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
SCHEMA_LIST.add(schemaJson); SCHEMA_LIST.add(schemaJson);
} }
@ -124,12 +121,12 @@ public class SchemasTests extends BaseTest {
@Test @Test
@Order(5) @Order(5)
void deleteSchemaJson() { void deleteSchemaJson() {
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.openSchema(JSON_API.getName()) schemaRegistryList.openSchema(JSON_API.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.removeSchema(); .removeSchema();
Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()"); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
SCHEMA_LIST.remove(JSON_API); SCHEMA_LIST.remove(JSON_API);
} }
@ -141,17 +138,16 @@ public class SchemasTests extends BaseTest {
@Order(6) @Order(6)
void createSchemaProtobuf() { void createSchemaProtobuf() {
Schema schemaProtobuf = Schema.createSchemaProtobuf(); Schema schemaProtobuf = Schema.createSchemaProtobuf();
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.clickCreateSchema() schemaRegistryList.clickCreateSchema()
.setSubjectName(schemaProtobuf.getName()) .setSubjectName(schemaProtobuf.getName())
.setSchemaField(fileToString(schemaProtobuf.getValuePath())) .setSchemaField(fileToString(schemaProtobuf.getValuePath()))
.selectSchemaTypeFromDropdown(schemaProtobuf.getType()) .selectSchemaTypeFromDropdown(schemaProtobuf.getType())
.clickSubmit() .clickSubmit()
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.mainPage mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
Assertions.assertTrue(pages.schemaRegistry.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
SCHEMA_LIST.add(schemaProtobuf); SCHEMA_LIST.add(schemaProtobuf);
} }
@ -162,17 +158,17 @@ public class SchemasTests extends BaseTest {
@Test @Test
@Order(7) @Order(7)
void deleteSchemaProtobuf() { void deleteSchemaProtobuf() {
pages.openMainPage() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
pages.schemaRegistry.openSchema(PROTOBUF_API.getName()) schemaRegistryList.openSchema(PROTOBUF_API.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.removeSchema(); .removeSchema();
Assertions.assertFalse(pages.schemaRegistry.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()"); Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
SCHEMA_LIST.remove(PROTOBUF_API); SCHEMA_LIST.remove(PROTOBUF_API);
} }
@AfterAll @AfterAll
public static void afterAll() { public void afterAll() {
SCHEMA_LIST.forEach(schema -> Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, schema.getName())); SCHEMA_LIST.forEach(schema -> apiHelper.deleteSchema(CLUSTER_NAME, schema.getName()));
} }
} }

View file

@ -1,14 +1,12 @@
package com.provectus.kafka.ui.tests; 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.helpers.Helpers;
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.MainPage;
import com.provectus.kafka.ui.pages.topic.TopicCreateEditSettingsView;
import com.provectus.kafka.ui.pages.topic.TopicView; import com.provectus.kafka.ui.pages.topic.TopicView;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
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 io.qase.api.annotation.CaseId; import io.qase.api.annotation.CaseId;
import org.assertj.core.api.SoftAssertions; import org.assertj.core.api.SoftAssertions;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@ -18,6 +16,7 @@ import java.util.List;
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString; import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class TopicTests extends BaseTest { public class TopicTests extends BaseTest {
private static final long SUITE_ID = 2; private static final long SUITE_ID = 2;
private static final String SUITE_TITLE = "Topics"; private static final String SUITE_TITLE = "Topics";
@ -33,9 +32,9 @@ public class TopicTests extends BaseTest {
private static final List<Topic> TOPIC_LIST = new ArrayList<>(); private static final List<Topic> TOPIC_LIST = new ArrayList<>();
@BeforeAll @BeforeAll
public static void beforeAll() { public void beforeAll() {
TOPIC_LIST.addAll(List.of(TOPIC_FOR_UPDATE, TOPIC_FOR_DELETE)); TOPIC_LIST.addAll(List.of(TOPIC_FOR_UPDATE, TOPIC_FOR_DELETE));
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, topic.getName())); TOPIC_LIST.forEach(topic -> apiHelper.createTopic(CLUSTER_NAME, topic.getName()));
} }
@DisplayName("should create a topic") @DisplayName("should create a topic")
@ -45,15 +44,15 @@ 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");
pages.open() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
pages.topicsList.pressCreateNewTopic() topicsList.pressCreateNewTopic()
.setTopicName(topicToCreate.getName()) .setTopicName(topicToCreate.getName())
.sendData() .sendData()
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.open() mainPage.goTo()
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS); .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
Assertions.assertTrue(pages.topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible"); Assertions.assertTrue(topicsList.isTopicVisible(topicToCreate.getName()),"isTopicVisible");
TOPIC_LIST.add(topicToCreate); TOPIC_LIST.add(topicToCreate);
} }
@ -64,9 +63,9 @@ public class TopicTests extends BaseTest {
@CaseId(197) @CaseId(197)
@Test @Test
public void updateTopic() { public void updateTopic() {
pages.openTopicsList(CLUSTER_NAME) topicsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.topicsList.openTopic(TOPIC_FOR_UPDATE.getName()) topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.openEditSettings() .openEditSettings()
.selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue()) .selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
@ -76,16 +75,16 @@ public class TopicTests extends BaseTest {
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes()) .setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
.sendData() .sendData()
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.openTopicsList(CLUSTER_NAME) topicsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady(); .waitUntilScreenReady();
pages.topicsList.openTopic(TOPIC_FOR_UPDATE.getName()) topicsList.openTopic(TOPIC_FOR_UPDATE.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.openEditSettings(); .openEditSettings();
SoftAssertions softly = new SoftAssertions(); SoftAssertions softly = new SoftAssertions();
softly.assertThat(new TopicCreateEditSettingsView().getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue()); softly.assertThat(topicCreateEditSettingsView.getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue());
softly.assertThat(new TopicCreateEditSettingsView().getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData()); softly.assertThat(topicCreateEditSettingsView.getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
softly.assertThat(new TopicCreateEditSettingsView().getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk()); softly.assertThat(topicCreateEditSettingsView.getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk());
softly.assertThat(new TopicCreateEditSettingsView().getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes()); softly.assertThat(topicCreateEditSettingsView.getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
softly.assertAll(); softly.assertAll();
} }
@ -95,14 +94,14 @@ public class TopicTests extends BaseTest {
@CaseId(207) @CaseId(207)
@Test @Test
public void deleteTopic() { public void deleteTopic() {
pages.openTopicsList(CLUSTER_NAME) topicsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openTopic(TOPIC_FOR_DELETE.getName()) .openTopic(TOPIC_FOR_DELETE.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.deleteTopic(); .deleteTopic();
pages.openTopicsList(CLUSTER_NAME) topicsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady(); .waitUntilScreenReady();
Assertions.assertFalse(pages.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);
} }
@ -112,7 +111,7 @@ public class TopicTests extends BaseTest {
@CaseId(222) @CaseId(222)
@Test @Test
void produceMessage() { void produceMessage() {
pages.openTopicsList(CLUSTER_NAME) topicsList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openTopic(TOPIC_FOR_UPDATE.getName()) .openTopic(TOPIC_FOR_UPDATE.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
@ -122,13 +121,13 @@ public class TopicTests extends BaseTest {
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey()) .setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
.submitProduceMessage(); .submitProduceMessage();
SoftAssertions softly = new SoftAssertions(); SoftAssertions softly = new SoftAssertions();
softly.assertThat(pages.topicView.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue(); softly.assertThat(topicView.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
softly.assertThat(pages.topicView.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue(); softly.assertThat(topicView.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
softly.assertAll(); softly.assertAll();
} }
@AfterAll @AfterAll
public static void afterAll() { public void afterAll() {
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, topic.getName())); TOPIC_LIST.forEach(topic -> apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
} }
} }