Compare commits
18 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
22439f30e8 | ||
![]() |
a9d7d6c515 | ||
![]() |
ca3916aae0 | ||
![]() |
f8417e6eaa | ||
![]() |
de7f7db269 | ||
![]() |
c13440b65d | ||
![]() |
53fb641220 | ||
![]() |
a5449027b7 | ||
![]() |
0a07bb4db5 | ||
![]() |
3f77826c05 | ||
![]() |
e5d666e91f | ||
![]() |
b6b1b8bda5 | ||
![]() |
d2d039e36c | ||
![]() |
25d34e11e4 | ||
![]() |
0a24b2d765 | ||
![]() |
a503c29472 | ||
![]() |
86c72d7d85 | ||
![]() |
27db304b1b |
17 changed files with 894 additions and 281 deletions
|
@ -1,8 +1,10 @@
|
|||
package com.provectus.kafka.ui.pages;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.$$x;
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.ElementsCollection;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.utilities.WebUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -16,9 +18,10 @@ public abstract class BasePage extends WebUtils {
|
|||
protected SelenideElement dotMenuBtn = $x("//button[@aria-label='Dropdown Toggle']");
|
||||
protected SelenideElement alertHeader = $x("//div[@role='alert']//div[@role='heading']");
|
||||
protected SelenideElement alertMessage = $x("//div[@role='alert']//div[@role='contentinfo']");
|
||||
protected ElementsCollection allGridItems = $$x("//tr[@class]");
|
||||
protected String summaryCellLocator = "//div[contains(text(),'%s')]";
|
||||
protected String tableElementNameLocator = "//tbody//a[contains(text(),'%s')]";
|
||||
protected String columnHeaderLocator = "//table//tr/th/div[text()='%s']";
|
||||
protected String columnHeaderLocator = "//table//tr/th//div[text()='%s']";
|
||||
|
||||
protected void waitUntilSpinnerDisappear() {
|
||||
log.debug("\nwaitUntilSpinnerDisappear");
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package com.provectus.kafka.ui.pages.brokers;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.$$x;
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.pages.BasePage;
|
||||
import io.qameta.allure.Step;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class BrokersConfigTab extends BasePage {
|
||||
|
||||
protected List<SelenideElement> editBtn = $$x("//button[@aria-label='editAction']");
|
||||
protected SelenideElement searchByKeyField = $x("//input[@placeholder='Search by Key']");
|
||||
|
||||
@Step
|
||||
public BrokersConfigTab waitUntilScreenReady(){
|
||||
waitUntilSpinnerDisappear();
|
||||
searchByKeyField.shouldBe(Condition.visible);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isSearchByKeyVisible() {
|
||||
return isVisible(searchByKeyField);
|
||||
}
|
||||
|
||||
public List<SelenideElement> getColumnHeaders() {
|
||||
return Stream.of("Key", "Value", "Source")
|
||||
.map(name -> $x(String.format(columnHeaderLocator, name)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<SelenideElement> getEditButtons() {
|
||||
return editBtn;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.provectus.kafka.ui.pages.brokers;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.$;
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
|
@ -11,11 +12,13 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
public class BrokersDetails extends BasePage {
|
||||
|
||||
protected SelenideElement logDirectoriesTab = $x("//a[text()='Log directories']");
|
||||
protected SelenideElement metricsTab = $x("//a[text()='Metrics']");
|
||||
protected String brokersTabLocator = "//a[text()='%s']";
|
||||
|
||||
@Step
|
||||
public BrokersDetails waitUntilScreenReady() {
|
||||
|
@ -24,6 +27,13 @@ public class BrokersDetails extends BasePage {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public BrokersDetails openDetailsTab(DetailsTab menu) {
|
||||
$(By.linkText(menu.toString())).shouldBe(Condition.enabled).click();
|
||||
waitUntilSpinnerDisappear();
|
||||
return this;
|
||||
}
|
||||
|
||||
private List<SelenideElement> getVisibleColumnHeaders() {
|
||||
return Stream.of("Name", "Topics", "Error", "Partitions")
|
||||
.map(name -> $x(String.format(columnHeaderLocator, name)))
|
||||
|
@ -42,15 +52,40 @@ public class BrokersDetails extends BasePage {
|
|||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<SelenideElement> getDetailsTabs() {
|
||||
return Stream.of(DetailsTab.values())
|
||||
.map(name -> $x(String.format(brokersTabLocator, name)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<SelenideElement> getAllEnabledElements() {
|
||||
return getEnabledColumnHeaders();
|
||||
List<SelenideElement> enabledElements = new ArrayList<>(getEnabledColumnHeaders());
|
||||
enabledElements.addAll(getDetailsTabs());
|
||||
return enabledElements;
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<SelenideElement> getAllVisibleElements() {
|
||||
List<SelenideElement> visibleElements = new ArrayList<>(getVisibleSummaryCells());
|
||||
visibleElements.addAll(getVisibleColumnHeaders());
|
||||
visibleElements.addAll(getDetailsTabs());
|
||||
return visibleElements;
|
||||
}
|
||||
|
||||
public enum DetailsTab {
|
||||
LOG_DIRECTORIES("Log directories"),
|
||||
CONFIGS("Configs"),
|
||||
METRICS("Metrics");
|
||||
|
||||
private final String value;
|
||||
|
||||
DetailsTab(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,10 +2,15 @@ package com.provectus.kafka.ui.pages.brokers;
|
|||
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.CollectionCondition;
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.pages.BasePage;
|
||||
import io.qameta.allure.Step;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class BrokersList extends BasePage {
|
||||
|
||||
|
@ -19,14 +24,100 @@ public class BrokersList extends BasePage {
|
|||
}
|
||||
|
||||
@Step
|
||||
public boolean isBrokerVisible(String brokerId) {
|
||||
tableGrid.shouldBe(Condition.visible);
|
||||
return isVisible(getTableElement(brokerId));
|
||||
public BrokersList openBroker(int brokerId) {
|
||||
getBrokerItem(brokerId).openItem();
|
||||
return this;
|
||||
}
|
||||
|
||||
private List<SelenideElement> getUptimeSummaryCells() {
|
||||
return Stream.of("Broker Count", "Active Controller", "Version")
|
||||
.map(name -> $x(String.format(summaryCellLocator, name)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<SelenideElement> getPartitionsSummaryCells() {
|
||||
return Stream.of("Online", "URP", "In Sync Replicas", "Out Of Sync Replicas")
|
||||
.map(name -> $x(String.format(summaryCellLocator, name)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Step
|
||||
public BrokersList openBroker(String brokerName) {
|
||||
getTableElement(brokerName).shouldBe(Condition.enabled).click();
|
||||
return this;
|
||||
public List<SelenideElement> getAllVisibleElements() {
|
||||
List<SelenideElement> visibleElements = new ArrayList<>(getUptimeSummaryCells());
|
||||
visibleElements.addAll(getPartitionsSummaryCells());
|
||||
return visibleElements;
|
||||
}
|
||||
|
||||
private List<SelenideElement> getEnabledColumnHeaders() {
|
||||
return Stream.of("Broker ID", "Segment Size", "Segment Count", "Port", "Host")
|
||||
.map(name -> $x(String.format(columnHeaderLocator, name)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<SelenideElement> getAllEnabledElements() {
|
||||
return getEnabledColumnHeaders();
|
||||
}
|
||||
|
||||
private List<BrokersList.BrokerGridItem> initGridItems() {
|
||||
List<BrokersList.BrokerGridItem> gridItemList = new ArrayList<>();
|
||||
allGridItems.shouldHave(CollectionCondition.sizeGreaterThan(0))
|
||||
.forEach(item -> gridItemList.add(new BrokersList.BrokerGridItem(item)));
|
||||
return gridItemList;
|
||||
}
|
||||
|
||||
@Step
|
||||
public BrokerGridItem getBrokerItem(int id){
|
||||
return initGridItems().stream()
|
||||
.filter(e ->e.getId() == id)
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<BrokerGridItem> getAllBrokers(){
|
||||
return initGridItems();
|
||||
}
|
||||
|
||||
public static class BrokerGridItem extends BasePage {
|
||||
|
||||
private final SelenideElement element;
|
||||
|
||||
public BrokerGridItem(SelenideElement element) {
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
private SelenideElement getIdElm() {
|
||||
return element.$x("./td[1]/div/a");
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getId() {
|
||||
return Integer.parseInt(getIdElm().getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public void openItem() {
|
||||
getIdElm().click();
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getSegmentSize(){
|
||||
return Integer.parseInt(element.$x("./td[2]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getSegmentCount(){
|
||||
return Integer.parseInt(element.$x("./td[3]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getPort(){
|
||||
return Integer.parseInt(element.$x("./td[4]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getHost(){
|
||||
return element.$x("./td[5]").getText().trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ import com.provectus.kafka.ui.api.model.SchemaType;
|
|||
import com.provectus.kafka.ui.pages.BasePage;
|
||||
import io.qameta.allure.Step;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class SchemaCreateForm extends BasePage {
|
||||
|
||||
|
@ -21,6 +23,7 @@ public class SchemaCreateForm extends BasePage {
|
|||
protected SelenideElement schemaTypeDdl = $x("//ul[@name='schemaType']");
|
||||
protected SelenideElement compatibilityLevelList = $x("//ul[@name='compatibilityLevel']");
|
||||
protected SelenideElement newSchemaTextArea = $x("//div[@id='newSchema']");
|
||||
protected SelenideElement latestSchemaTextArea = $x("//div[@id='latestSchema']");
|
||||
protected SelenideElement schemaVersionDdl = $$x("//ul[@role='listbox']/li[text()='Version 2']").first();
|
||||
protected List<SelenideElement> visibleMarkers = $$x("//div[@class='ace_scroller']//div[contains(@class,'codeMarker')]");
|
||||
protected List<SelenideElement> elementsCompareVersionDdl = $$x("//ul[@role='listbox']/ul/li");
|
||||
|
@ -96,14 +99,25 @@ public class SchemaCreateForm extends BasePage {
|
|||
}
|
||||
|
||||
@Step
|
||||
public boolean isSchemaDropDownDisabled(){
|
||||
boolean disabled = false;
|
||||
public List<SelenideElement> getAllDetailsPageElements() {
|
||||
return Stream.of(compatibilityLevelList, newSchemaTextArea, latestSchemaTextArea, submitBtn, schemaTypeDdl)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isSubmitBtnEnabled(){
|
||||
return isEnabled(submitBtn);
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isSchemaDropDownEnabled(){
|
||||
boolean enabled = true;
|
||||
try{
|
||||
String attribute = schemaTypeDdl.getAttribute("disabled");
|
||||
disabled = true;
|
||||
enabled = false;
|
||||
}
|
||||
catch (Throwable ignored){
|
||||
}
|
||||
return disabled;
|
||||
return enabled;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,17 +19,21 @@ import org.openqa.selenium.By;
|
|||
public class TopicDetails extends BasePage {
|
||||
|
||||
protected SelenideElement clearMessagesBtn = $x(("//div[contains(text(), 'Clear messages')]"));
|
||||
protected SelenideElement recreateTopicBtn = $x("//div[text()='Recreate Topic']");
|
||||
protected SelenideElement messageAmountCell = $x("//tbody/tr/td[5]");
|
||||
protected SelenideElement overviewTab = $x("//a[contains(text(),'Overview')]");
|
||||
protected SelenideElement messagesTab = $x("//a[contains(text(),'Messages')]");
|
||||
protected SelenideElement seekTypeDdl = $x("//ul[@id='selectSeekType']/li");
|
||||
protected SelenideElement seekTypeField = $x("//label[text()='Seek Type']//..//input");
|
||||
protected SelenideElement addFiltersBtn = $x("//button[text()='Add Filters']");
|
||||
protected SelenideElement savedFiltersField = $x("//div[text()='Saved Filters']");
|
||||
protected SelenideElement savedFiltersLink = $x("//div[text()='Saved Filters']");
|
||||
protected SelenideElement addFilterCodeModalTitle = $x("//label[text()='Filter code']");
|
||||
protected SelenideElement addFilterCodeInput = $x("//div[@id='ace-editor']//textarea");
|
||||
protected SelenideElement saveThisFilterCheckBoxAddFilterMdl = $x("//input[@name='saveFilter']");
|
||||
protected SelenideElement displayNameInputAddFilterMdl = $x("//input[@placeholder='Enter Name']");
|
||||
protected SelenideElement cancelBtnAddFilterMdl = $x("//button[text()='Cancel']");
|
||||
protected SelenideElement addFilterBtnAddFilterMdl = $x("//button[text()='Add filter']");
|
||||
protected SelenideElement selectFilterBtnAddFilterMdl = $x("//button[text()='Select filter']");
|
||||
protected SelenideElement editSettingsMenu = $x("//li[@role][contains(text(),'Edit settings')]");
|
||||
protected SelenideElement removeTopicBtn = $x("//ul[@role='menu']//div[contains(text(),'Remove Topic')]");
|
||||
protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
|
||||
|
@ -37,10 +41,15 @@ public class TopicDetails extends BasePage {
|
|||
protected SelenideElement contentMessageTab = $x("//html//div[@id='root']/div/main//table//p");
|
||||
protected SelenideElement cleanUpPolicyField = $x("//div[contains(text(),'Clean Up Policy')]/../span/*");
|
||||
protected SelenideElement partitionsField = $x("//div[contains(text(),'Partitions')]/../span");
|
||||
protected SelenideElement backToCreateFiltersLink = $x("//div[text()='Back To create filters']");
|
||||
protected SelenideElement confirmationMdl = $x("//div[text()= 'Confirm the action']/..");
|
||||
protected ElementsCollection messageGridItems = $$x("//tbody//tr");
|
||||
protected String seekFilterDdlLocator = "//ul[@id='selectSeekType']/ul/li[text()='%s']";
|
||||
protected String savedFilterNameLocator = "//div[@role='savedFilter']/div[contains(text(),'%s')]";
|
||||
protected String consumerIdLocator = "//a[@title='%s']";
|
||||
protected String topicHeaderLocator = "//h1[contains(text(),'%s')]";
|
||||
protected String filterNameLocator = "//*[@data-testid='activeSmartFilter']";
|
||||
protected String activeFilterNameLocator = "//div[@data-testid='activeSmartFilter'][contains(text(),'%s')]";
|
||||
protected String settingsGridValueLocator = "//tbody/tr/td/span[text()='%s']//ancestor::tr/td[2]/span";
|
||||
|
||||
@Step
|
||||
public TopicDetails waitUntilScreenReady() {
|
||||
|
@ -56,6 +65,11 @@ public class TopicDetails extends BasePage {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getSettingsGridValueByKey(String key){
|
||||
return $x(String.format(settingsGridValueLocator, key)).scrollTo().shouldBe(Condition.visible).getText();
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails openDotMenu() {
|
||||
clickByJavaScript(dotMenuBtn);
|
||||
|
@ -73,12 +87,23 @@ public class TopicDetails extends BasePage {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isConfirmationMdlVisible(){
|
||||
return isVisible(confirmationMdl);
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickClearMessagesMenu() {
|
||||
clearMessagesBtn.shouldBe(Condition.visible).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickRecreateTopicMenu(){
|
||||
recreateTopicBtn.shouldBe(Condition.visible).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getCleanUpPolicy() {
|
||||
return cleanUpPolicyField.getText();
|
||||
|
@ -101,7 +126,7 @@ public class TopicDetails extends BasePage {
|
|||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickConfirmDeleteBtn() {
|
||||
public TopicDetails clickConfirmBtnMdl() {
|
||||
confirmBtn.shouldBe(Condition.enabled).click();
|
||||
confirmBtn.shouldBe(Condition.disappear);
|
||||
return this;
|
||||
|
@ -113,12 +138,57 @@ public class TopicDetails extends BasePage {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails selectSeekTypeDdlMessagesTab(String seekTypeName){
|
||||
seekTypeDdl.shouldBe(Condition.enabled).click();
|
||||
$x(String.format(seekFilterDdlLocator, seekTypeName)).shouldBe(Condition.visible).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails setSeekTypeValueFldMessagesTab(String seekTypeValue){
|
||||
seekTypeField.shouldBe(Condition.enabled).sendKeys(seekTypeValue);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickSubmitFiltersBtnMessagesTab(){
|
||||
clickByJavaScript(submitBtn);
|
||||
waitUntilSpinnerDisappear();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickMessagesAddFiltersBtn() {
|
||||
addFiltersBtn.shouldBe(Condition.enabled).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails openSavedFiltersListMdl(){
|
||||
savedFiltersLink.shouldBe(Condition.enabled).click();
|
||||
backToCreateFiltersLink.shouldBe(Condition.visible);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isFilterVisibleAtSavedFiltersMdl(String filterName){
|
||||
return isVisible($x(String.format(savedFilterNameLocator,filterName)));
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails selectFilterAtSavedFiltersMdl(String filterName){
|
||||
$x(String.format(savedFilterNameLocator, filterName)).shouldBe(Condition.enabled).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickSelectFilterBtnAtSavedFiltersMdl(){
|
||||
selectFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
|
||||
addFilterCodeModalTitle.shouldBe(Condition.disappear);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails waitUntilAddFiltersMdlVisible() {
|
||||
addFilterCodeModalTitle.shouldBe(Condition.visible);
|
||||
|
@ -126,15 +196,14 @@ public class TopicDetails extends BasePage {
|
|||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickAddFilterBtnAddFilterMdl() {
|
||||
addFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
|
||||
addFilterCodeModalTitle.shouldBe(Condition.hidden);
|
||||
public TopicDetails setFilterCodeFieldAddFilterMdl(String filterCode) {
|
||||
addFilterCodeInput.shouldBe(Condition.enabled).sendKeys(filterCode);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails setFilterCodeFieldAddFilterMdl(String filterCode) {
|
||||
addFilterCodeInput.shouldBe(Condition.enabled).sendKeys(filterCode);
|
||||
public TopicDetails selectSaveThisFilterCheckboxMdl(boolean select){
|
||||
selectElement(saveThisFilterCheckBoxAddFilterMdl, select);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -143,18 +212,35 @@ public class TopicDetails extends BasePage {
|
|||
return isSelected(saveThisFilterCheckBoxAddFilterMdl);
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails setDisplayNameFldAddFilterMdl(String displayName) {
|
||||
displayNameInputAddFilterMdl.shouldBe(Condition.enabled).sendKeys(displayName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails clickAddFilterBtnAndCloseMdl(boolean closeModal) {
|
||||
addFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
|
||||
if(closeModal){
|
||||
addFilterCodeModalTitle.shouldBe(Condition.hidden);}
|
||||
else{
|
||||
addFilterCodeModalTitle.shouldBe(Condition.visible);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isAddFilterBtnAddFilterMdlEnabled() {
|
||||
return isEnabled(addFilterBtnAddFilterMdl);
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getFilterName() {
|
||||
return $x(filterNameLocator).getText();
|
||||
public boolean isActiveFilterVisible(String activeFilterName) {
|
||||
return isVisible($x(String.format(activeFilterNameLocator, activeFilterName)));
|
||||
}
|
||||
|
||||
public List<SelenideElement> getAllAddFilterModalVisibleElements() {
|
||||
return Arrays.asList(savedFiltersField, displayNameInputAddFilterMdl, addFilterBtnAddFilterMdl, cancelBtnAddFilterMdl);
|
||||
return Arrays.asList(savedFiltersLink, displayNameInputAddFilterMdl, addFilterBtnAddFilterMdl, cancelBtnAddFilterMdl);
|
||||
}
|
||||
|
||||
public List<SelenideElement> getAllAddFilterModalEnabledElements() {
|
||||
|
@ -188,7 +274,7 @@ public class TopicDetails extends BasePage {
|
|||
|
||||
private List<TopicDetails.MessageGridItem> initItems() {
|
||||
List<TopicDetails.MessageGridItem> gridItemList = new ArrayList<>();
|
||||
messageGridItems.shouldHave(CollectionCondition.sizeGreaterThan(0))
|
||||
allGridItems.shouldHave(CollectionCondition.sizeGreaterThan(0))
|
||||
.forEach(item -> gridItemList.add(new TopicDetails.MessageGridItem(item)));
|
||||
return gridItemList;
|
||||
}
|
||||
|
@ -200,6 +286,11 @@ public class TopicDetails extends BasePage {
|
|||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<MessageGridItem> getAllMessages(){
|
||||
return initItems();
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicDetails.MessageGridItem getRandomMessage() {
|
||||
return getMessage(nextInt(initItems().size() - 1));
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package com.provectus.kafka.ui.pages.topic;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.CollectionCondition;
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.pages.BasePage;
|
||||
import io.qameta.allure.Step;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TopicSettingsTab extends BasePage {
|
||||
|
||||
protected SelenideElement defaultValueColumnHeaderLocator = $x("//div[text() = 'Default Value']");
|
||||
|
||||
@Step
|
||||
public TopicSettingsTab waitUntilScreenReady(){
|
||||
waitUntilSpinnerDisappear();
|
||||
defaultValueColumnHeaderLocator.shouldBe(Condition.visible);
|
||||
return this;
|
||||
}
|
||||
|
||||
private List<SettingsGridItem> initGridItems() {
|
||||
List<SettingsGridItem> gridItemList = new ArrayList<>();
|
||||
allGridItems.shouldHave(CollectionCondition.sizeGreaterThan(0))
|
||||
.forEach(item -> gridItemList.add(new SettingsGridItem(item)));
|
||||
return gridItemList;
|
||||
}
|
||||
|
||||
private TopicSettingsTab.SettingsGridItem getItemByKey(String key){
|
||||
return initGridItems().stream()
|
||||
.filter(e ->e.getKey().equals(key))
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getValueByKey(String key){
|
||||
return getItemByKey(key).getValue();
|
||||
}
|
||||
|
||||
public static class SettingsGridItem extends BasePage {
|
||||
|
||||
private final SelenideElement element;
|
||||
|
||||
public SettingsGridItem(SelenideElement element) {
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getKey(){
|
||||
return element.$x("./td[1]/span").getText().trim();
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getValue(){
|
||||
return element.$x("./td[2]/span").getText().trim();
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getDefaultValue() {
|
||||
return element.$x("./td[3]/span").getText().trim();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package com.provectus.kafka.ui.pages.topic;
|
|||
|
||||
import static com.codeborne.selenide.Selenide.$x;
|
||||
|
||||
import com.codeborne.selenide.CollectionCondition;
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.pages.BasePage;
|
||||
|
@ -21,7 +22,6 @@ public class TopicsList extends BasePage {
|
|||
protected SelenideElement deleteSelectedTopicsBtn = $x("//button[text()='Delete selected topics']");
|
||||
protected SelenideElement copySelectedTopicBtn = $x("//button[text()='Copy selected topic']");
|
||||
protected SelenideElement purgeMessagesOfSelectedTopicsBtn = $x("//button[text()='Purge messages of selected topics']");
|
||||
protected String checkBoxListLocator = "//a[@title='%s']//ancestor::td/../td/input[@type='checkbox']";
|
||||
|
||||
@Step
|
||||
public TopicsList waitUntilScreenReady() {
|
||||
|
@ -43,18 +43,22 @@ public class TopicsList extends BasePage {
|
|||
}
|
||||
|
||||
@Step
|
||||
public TopicsList openTopic(String topicName) {
|
||||
getTableElement(topicName).shouldBe(Condition.enabled).click();
|
||||
return this;
|
||||
public boolean isShowInternalRadioBtnSelected() {
|
||||
return isSelected(showInternalRadioBtn);
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicsList selectCheckboxByName(String topicName){
|
||||
SelenideElement checkBox = $x(String.format(checkBoxListLocator,topicName));
|
||||
if(!checkBox.is(Condition.selected)){clickByJavaScript(checkBox);}
|
||||
public TopicsList setShowInternalRadioButton(boolean select) {
|
||||
selectElement(showInternalRadioBtn, select);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicsList openTopic(String topicName) {
|
||||
getTopicItem(topicName).openItem();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isCopySelectedTopicBtnEnabled(){
|
||||
return isEnabled(copySelectedTopicBtn);
|
||||
|
@ -92,4 +96,101 @@ public class TopicsList extends BasePage {
|
|||
enabledElements.addAll(Arrays.asList(searchField, showInternalRadioBtn,addTopicBtn));
|
||||
return enabledElements;
|
||||
}
|
||||
|
||||
private List<TopicGridItem> initGridItems() {
|
||||
List<TopicGridItem> gridItemList = new ArrayList<>();
|
||||
allGridItems.shouldHave(CollectionCondition.sizeGreaterThan(0))
|
||||
.forEach(item -> gridItemList.add(new TopicGridItem(item)));
|
||||
return gridItemList;
|
||||
}
|
||||
|
||||
@Step
|
||||
public TopicGridItem getTopicItem(String name) {
|
||||
return initGridItems().stream()
|
||||
.filter(e -> e.getName().equals(name))
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<TopicGridItem> getNonInternalTopics() {
|
||||
return initGridItems().stream()
|
||||
.filter(e -> !e.isInternal())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Step
|
||||
public List<TopicGridItem> getInternalTopics() {
|
||||
return initGridItems().stream()
|
||||
.filter(TopicGridItem::isInternal)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static class TopicGridItem extends BasePage {
|
||||
|
||||
private final SelenideElement element;
|
||||
|
||||
public TopicGridItem(SelenideElement element) {
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
@Step
|
||||
public void selectItem(boolean select) {
|
||||
selectElement(element.$x("./td[1]/input"), select);
|
||||
}
|
||||
|
||||
@Step
|
||||
public boolean isInternal() {
|
||||
boolean internal = false;
|
||||
try {
|
||||
element.$x("./td[2]/a/span").shouldBe(Condition.visible);
|
||||
internal = true;
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
return internal;
|
||||
}
|
||||
|
||||
private SelenideElement getNameElm() {
|
||||
return element.$x("./td[2]");
|
||||
}
|
||||
|
||||
@Step
|
||||
public String getName() {
|
||||
return getNameElm().getText().trim();
|
||||
}
|
||||
|
||||
@Step
|
||||
public void openItem() {
|
||||
getNameElm().click();
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getPartition() {
|
||||
return Integer.parseInt(element.$x("./td[3]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getOutOfSyncReplicas() {
|
||||
return Integer.parseInt(element.$x("./td[4]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getReplicationFactor() {
|
||||
return Integer.parseInt(element.$x("./td[5]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getNumberOfMessages() {
|
||||
return Integer.parseInt(element.$x("./td[6]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public int getSize() {
|
||||
return Integer.parseInt(element.$x("./td[7]").getText().trim());
|
||||
}
|
||||
|
||||
@Step
|
||||
public void openDotMenu(){
|
||||
element.$x("./td[8]//button").click();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,4 +69,13 @@ public class WebUtils {
|
|||
}
|
||||
return isSelected;
|
||||
}
|
||||
|
||||
public static boolean selectElement(SelenideElement element, boolean select){
|
||||
if (select) {
|
||||
if (!element.isSelected()) clickByJavaScript(element);
|
||||
} else {
|
||||
if (element.isSelected()) clickByJavaScript(element);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
package com.provectus.kafka.ui.base;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.codeborne.selenide.WebDriverRunner;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.DisplayNameGenerator;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.TestCaseGenerator;
|
||||
import io.github.cdimascio.dotenv.Dotenv;
|
||||
import io.qameta.allure.Allure;
|
||||
import io.qase.api.annotation.Step;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.assertj.core.api.SoftAssertions;
|
||||
import org.junit.jupiter.api.*;
|
||||
import org.openqa.selenium.Dimension;
|
||||
import org.openqa.selenium.OutputType;
|
||||
|
@ -22,8 +26,10 @@ import org.testcontainers.utility.DockerImageName;
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import static com.provectus.kafka.ui.base.Setup.*;
|
||||
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
|
||||
import static com.provectus.kafka.ui.settings.Source.BASE_WEB_URL;
|
||||
|
||||
@Slf4j
|
||||
|
@ -110,4 +116,31 @@ public class BaseTest extends Facade {
|
|||
((TakesScreenshot) webDriverContainer.getWebDriver()).getScreenshotAs(OutputType.BYTES)));
|
||||
browserClear();
|
||||
}
|
||||
|
||||
@Step
|
||||
protected void navigateToTopics(){
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
|
||||
@Step
|
||||
protected void navigateToTopicsAndOpenDetails(String topicName){
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(topicName);
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
|
||||
@Step
|
||||
protected void verifyElementsCondition(List<SelenideElement> elementList, Condition expectedCondition) {
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
elementList.forEach(element -> softly.assertThat(element.is(expectedCondition))
|
||||
.as(element.getSearchCriteria() + " is " + expectedCondition).isTrue());
|
||||
softly.assertAll();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.provectus.kafka.ui.base;
|
|||
import com.provectus.kafka.ui.helpers.ApiHelper;
|
||||
import com.provectus.kafka.ui.pages.NaviSideBar;
|
||||
import com.provectus.kafka.ui.pages.TopPanel;
|
||||
import com.provectus.kafka.ui.pages.brokers.BrokersConfigTab;
|
||||
import com.provectus.kafka.ui.pages.brokers.BrokersDetails;
|
||||
import com.provectus.kafka.ui.pages.brokers.BrokersList;
|
||||
import com.provectus.kafka.ui.pages.connector.ConnectorCreateForm;
|
||||
|
@ -14,6 +15,7 @@ import com.provectus.kafka.ui.pages.schema.SchemaCreateForm;
|
|||
import com.provectus.kafka.ui.pages.schema.SchemaDetails;
|
||||
import com.provectus.kafka.ui.pages.schema.SchemaRegistryList;
|
||||
import com.provectus.kafka.ui.pages.topic.ProduceMessagePanel;
|
||||
import com.provectus.kafka.ui.pages.topic.TopicSettingsTab;
|
||||
import com.provectus.kafka.ui.pages.topic.TopicCreateEditForm;
|
||||
import com.provectus.kafka.ui.pages.topic.TopicDetails;
|
||||
import com.provectus.kafka.ui.pages.topic.TopicsList;
|
||||
|
@ -36,4 +38,6 @@ public abstract class Facade {
|
|||
protected TopPanel topPanel = new TopPanel();
|
||||
protected BrokersList brokersList = new BrokersList();
|
||||
protected BrokersDetails brokersDetails = new BrokersDetails();
|
||||
protected BrokersConfigTab brokersConfigTab = new BrokersConfigTab();
|
||||
protected TopicSettingsTab topicSettingsTab = new TopicSettingsTab();
|
||||
}
|
||||
|
|
|
@ -5,7 +5,8 @@ import com.provectus.kafka.ui.base.BaseTest;
|
|||
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 org.assertj.core.api.SoftAssertions;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class SmokeTests extends BaseTest {
|
||||
|
@ -14,19 +15,9 @@ public class SmokeTests extends BaseTest {
|
|||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(198)
|
||||
public void checkBasePageElements(){
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
topPanel.getAllVisibleElements()
|
||||
.forEach(element ->
|
||||
softly.assertThat(element.is(Condition.visible))
|
||||
.as(element.getSearchCriteria() + " isVisible()").isTrue());
|
||||
topPanel.getAllEnabledElements()
|
||||
.forEach(element ->
|
||||
softly.assertThat(element.is(Condition.enabled))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isTrue());
|
||||
naviSideBar.getAllMenuButtons()
|
||||
.forEach(element ->
|
||||
softly.assertThat(element.is(Condition.enabled) && element.is(Condition.visible))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isTrue());
|
||||
softly.assertAll();
|
||||
verifyElementsCondition(Stream.concat(topPanel.getAllVisibleElements().stream(), naviSideBar.getAllMenuButtons().stream())
|
||||
.collect(Collectors.toList()),Condition.visible);
|
||||
verifyElementsCondition(Stream.concat(topPanel.getAllEnabledElements().stream(), naviSideBar.getAllMenuButtons().stream())
|
||||
.collect(Collectors.toList()),Condition.enabled);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.provectus.kafka.ui.suite.brokers;
|
||||
|
||||
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.BROKERS;
|
||||
import static com.provectus.kafka.ui.pages.brokers.BrokersDetails.DetailsTab.CONFIGS;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
|
@ -8,8 +9,8 @@ import com.provectus.kafka.ui.base.BaseTest;
|
|||
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;
|
||||
import io.qameta.allure.Step;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import org.assertj.core.api.SoftAssertions;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -17,26 +18,46 @@ public class BrokersTests extends BaseTest {
|
|||
private static final String SUITE_TITLE = "Brokers";
|
||||
private static final long SUITE_ID = 1;
|
||||
|
||||
@DisplayName("Checking the Brokers overview")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(1)
|
||||
@Test
|
||||
public void checkBrokersOverview(){
|
||||
navigateToBrokers();
|
||||
assertThat(brokersList.getAllBrokers()).as("getAllBrokers()").size().isGreaterThan(0);
|
||||
verifyElementsCondition(brokersList.getAllVisibleElements(), Condition.visible);
|
||||
verifyElementsCondition(brokersList.getAllEnabledElements(), Condition.enabled);
|
||||
}
|
||||
|
||||
@DisplayName("Checking the existing Broker's profile in a cluster")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(85)
|
||||
@Test
|
||||
public void checkExistingBrokersInCluster(){
|
||||
navigateToBrokers();
|
||||
assertThat(brokersList.getAllBrokers()).as("getAllBrokers()").size().isGreaterThan(0);
|
||||
brokersList
|
||||
.openBroker(1);
|
||||
brokersDetails
|
||||
.waitUntilScreenReady();
|
||||
verifyElementsCondition(brokersDetails.getAllVisibleElements(), Condition.visible);
|
||||
verifyElementsCondition(brokersDetails.getAllEnabledElements(), Condition.enabled);
|
||||
brokersDetails
|
||||
.openDetailsTab(CONFIGS);
|
||||
brokersConfigTab
|
||||
.waitUntilScreenReady();
|
||||
verifyElementsCondition(brokersConfigTab.getColumnHeaders(), Condition.visible);
|
||||
verifyElementsCondition(brokersConfigTab.getEditButtons(), Condition.enabled);
|
||||
assertThat(brokersConfigTab.isSearchByKeyVisible()).as("isSearchByKeyVisible()").isTrue();
|
||||
}
|
||||
|
||||
@Step
|
||||
private void navigateToBrokers(){
|
||||
naviSideBar
|
||||
.openSideMenu(BROKERS);
|
||||
brokersList
|
||||
.waitUntilScreenReady();
|
||||
assertThat(brokersList.isBrokerVisible("1")).as("isBrokerVisible()").isTrue();
|
||||
brokersList
|
||||
.openBroker("1");
|
||||
brokersDetails
|
||||
.waitUntilScreenReady();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
brokersDetails.getAllVisibleElements().forEach(element -> softly.assertThat(element.is(Condition.visible))
|
||||
.as(element.getSearchCriteria() + " isVisible()").isTrue());
|
||||
brokersDetails.getAllEnabledElements().forEach(element -> softly.assertThat(element.is(Condition.enabled))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isTrue());
|
||||
softly.assertAll();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.provectus.kafka.ui.models.Topic;
|
|||
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;
|
||||
import io.qameta.allure.Step;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -68,10 +69,8 @@ public class ConnectorsTests extends BaseTest {
|
|||
Connector connectorForCreate = new Connector()
|
||||
.setName("sink_postgres_activities_e2e_checks-" + randomAlphabetic(5))
|
||||
.setConfig(getResourceAsString("config_for_create_connector.json"));
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
navigateToConnectors();
|
||||
kafkaConnectList
|
||||
.clickCreateConnectorBtn();
|
||||
connectorCreateForm
|
||||
.waitUntilScreenReady()
|
||||
|
@ -79,18 +78,9 @@ public class ConnectorsTests extends BaseTest {
|
|||
.clickSubmitButton();
|
||||
connectorDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.openConnector(connectorForCreate.getName());
|
||||
connectorDetails
|
||||
.waitUntilScreenReady();
|
||||
navigateToConnectorsAndOpenDetails(connectorForCreate.getName());
|
||||
Assertions.assertTrue(connectorDetails.isConnectorHeaderVisible(connectorForCreate.getName()),"isConnectorTitleVisible()");
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
navigateToConnectors();
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
|
||||
CONNECTOR_LIST.add(connectorForCreate);
|
||||
}
|
||||
|
@ -101,21 +91,13 @@ public class ConnectorsTests extends BaseTest {
|
|||
@CaseId(196)
|
||||
@Test
|
||||
public void updateConnector() {
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.openConnector(CONNECTOR_FOR_UPDATE.getName());
|
||||
connectorDetails
|
||||
.waitUntilScreenReady()
|
||||
navigateToConnectorsAndOpenDetails(CONNECTOR_FOR_UPDATE.getName());
|
||||
connectorDetails
|
||||
.openConfigTab()
|
||||
.setConfig(CONNECTOR_FOR_UPDATE.getConfig())
|
||||
.clickSubmitButton();
|
||||
Assertions.assertTrue(connectorDetails.isAlertWithMessageVisible(SUCCESS,"Config successfully updated."),"isAlertWithMessageVisible()");
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
navigateToConnectors();
|
||||
Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()), "isConnectorVisible()");
|
||||
}
|
||||
|
||||
|
@ -125,20 +107,12 @@ public class ConnectorsTests extends BaseTest {
|
|||
@CaseId(195)
|
||||
@Test
|
||||
public void deleteConnector() {
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady()
|
||||
.openConnector(CONNECTOR_FOR_DELETE.getName());
|
||||
connectorDetails
|
||||
.waitUntilScreenReady()
|
||||
navigateToConnectorsAndOpenDetails(CONNECTOR_FOR_DELETE.getName());
|
||||
connectorDetails
|
||||
.openDotMenu()
|
||||
.clickDeleteBtn()
|
||||
.clickConfirmBtn();
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
navigateToConnectors();
|
||||
Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
|
||||
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
|
||||
}
|
||||
|
@ -149,4 +123,21 @@ public class ConnectorsTests extends BaseTest {
|
|||
apiHelper.deleteConnector(CLUSTER_NAME, CONNECT_NAME, connector.getName()));
|
||||
TOPIC_LIST.forEach(topic -> apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void navigateToConnectors(){
|
||||
naviSideBar
|
||||
.openSideMenu(KAFKA_CONNECT);
|
||||
kafkaConnectList
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
|
||||
@Step
|
||||
private void navigateToConnectorsAndOpenDetails(String connectorName){
|
||||
navigateToConnectors();
|
||||
kafkaConnectList
|
||||
.openConnector(connectorName);
|
||||
connectorDetails
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,14 @@ import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.SCHEMA_REG
|
|||
import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
|
||||
|
||||
import com.codeborne.selenide.Condition;
|
||||
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.utilities.qaseIoUtils.annotations.AutomationStatus;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
|
||||
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
|
||||
import io.qameta.allure.Step;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -50,10 +52,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(1)
|
||||
void createSchemaAvro() {
|
||||
Schema schemaAvro = Schema.createSchemaAvro();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
navigateToSchemaRegistry();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaAvro.getName())
|
||||
|
@ -67,10 +67,7 @@ public class SchemasTests extends BaseTest {
|
|||
softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaAvro.getType().getValue());
|
||||
softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
|
||||
softly.assertAll();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
navigateToSchemaRegistry();
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaAvro);
|
||||
}
|
||||
|
@ -83,17 +80,16 @@ 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");
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(AVRO_API.getName());
|
||||
navigateToSchemaRegistryAndOpenDetails(AVRO_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.openEditSchema();
|
||||
schemaCreateForm
|
||||
.waitUntilScreenReady();
|
||||
Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
||||
verifyElementsCondition(schemaCreateForm.getAllDetailsPageElements(), Condition.visible);
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(schemaCreateForm.isSubmitBtnEnabled()).as("isSubmitBtnEnabled()").isFalse();
|
||||
softly.assertThat(schemaCreateForm.isSchemaDropDownEnabled()).as("isSchemaDropDownEnabled()").isFalse();
|
||||
softly.assertAll();
|
||||
schemaCreateForm
|
||||
.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
||||
.setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
|
||||
|
@ -110,11 +106,7 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(3)
|
||||
void compareVersionsOperation() {
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(AVRO_API.getName());
|
||||
navigateToSchemaRegistryAndOpenDetails(AVRO_API.getName());
|
||||
int latestVersion = schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.getLatestVersion();
|
||||
|
@ -137,13 +129,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(4)
|
||||
void deleteSchemaAvro() {
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(AVRO_API.getName());
|
||||
navigateToSchemaRegistryAndOpenDetails(AVRO_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
|
@ -159,10 +146,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(5)
|
||||
void createSchemaJson() {
|
||||
Schema schemaJson = Schema.createSchemaJson();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
navigateToSchemaRegistry();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaJson.getName())
|
||||
|
@ -176,10 +161,7 @@ public class SchemasTests extends BaseTest {
|
|||
softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaJson.getType().getValue());
|
||||
softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
|
||||
softly.assertAll();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
navigateToSchemaRegistry();
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaJson);
|
||||
}
|
||||
|
@ -191,13 +173,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(6)
|
||||
void deleteSchemaJson() {
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(JSON_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
navigateToSchemaRegistryAndOpenDetails(JSON_API.getName());
|
||||
schemaDetails
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
|
@ -213,10 +190,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Order(7)
|
||||
void createSchemaProtobuf() {
|
||||
Schema schemaProtobuf = Schema.createSchemaProtobuf();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
navigateToSchemaRegistry();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.clickCreateSchema();
|
||||
schemaCreateForm
|
||||
.setSubjectName(schemaProtobuf.getName())
|
||||
|
@ -230,10 +205,7 @@ public class SchemasTests extends BaseTest {
|
|||
softly.assertThat(schemaDetails.getSchemaType()).as("getSchemaType()").isEqualTo(schemaProtobuf.getType().getValue());
|
||||
softly.assertThat(schemaDetails.getCompatibility()).as("getCompatibility()").isEqualTo(CompatibilityLevel.CompatibilityEnum.BACKWARD.getValue());
|
||||
softly.assertAll();
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
navigateToSchemaRegistry();
|
||||
Assertions.assertTrue(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
|
||||
SCHEMA_LIST.add(schemaProtobuf);
|
||||
}
|
||||
|
@ -245,13 +217,8 @@ public class SchemasTests extends BaseTest {
|
|||
@Test
|
||||
@Order(8)
|
||||
void deleteSchemaProtobuf() {
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady()
|
||||
.openSchema(PROTOBUF_API.getName());
|
||||
schemaDetails
|
||||
.waitUntilScreenReady()
|
||||
navigateToSchemaRegistryAndOpenDetails(PROTOBUF_API.getName());
|
||||
schemaDetails
|
||||
.removeSchema();
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
|
@ -263,4 +230,21 @@ public class SchemasTests extends BaseTest {
|
|||
public void afterAll() {
|
||||
SCHEMA_LIST.forEach(schema -> apiHelper.deleteSchema(CLUSTER_NAME, schema.getName()));
|
||||
}
|
||||
|
||||
@Step
|
||||
private void navigateToSchemaRegistry(){
|
||||
naviSideBar
|
||||
.openSideMenu(SCHEMA_REGISTRY);
|
||||
schemaRegistryList
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
|
||||
@Step
|
||||
private void navigateToSchemaRegistryAndOpenDetails(String schemaName){
|
||||
navigateToSchemaRegistry();
|
||||
schemaRegistryList
|
||||
.openSchema(schemaName);
|
||||
schemaDetails
|
||||
.waitUntilScreenReady();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.provectus.kafka.ui.suite.topics;
|
||||
|
||||
import static com.provectus.kafka.ui.pages.BasePage.AlertHeader.SUCCESS;
|
||||
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
|
||||
import static com.provectus.kafka.ui.pages.topic.TopicDetails.TopicMenu.MESSAGES;
|
||||
import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
|
||||
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
|
||||
|
@ -47,13 +47,8 @@ public class TopicMessagesTests extends BaseTest {
|
|||
@CaseId(222)
|
||||
@Test
|
||||
void produceMessage() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_MESSAGES.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_FOR_MESSAGES.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDetailsTab(TopicDetails.TopicMenu.MESSAGES)
|
||||
.clickProduceMessageBtn();
|
||||
produceMessagePanel
|
||||
|
@ -64,8 +59,10 @@ public class TopicMessagesTests extends BaseTest {
|
|||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_MESSAGES.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
|
||||
softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_MESSAGES.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
|
||||
softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_MESSAGES.getMessageKey())))
|
||||
.withFailMessage("isKeyMessageVisible()").isTrue();
|
||||
softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_MESSAGES.getMessageContent()).trim()))
|
||||
.withFailMessage("isContentMessageVisible()").isTrue();
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
|
@ -77,13 +74,8 @@ public class TopicMessagesTests extends BaseTest {
|
|||
@CaseId(19)
|
||||
@Test
|
||||
void clearMessage() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_MESSAGES.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_FOR_MESSAGES.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDetailsTab(TopicDetails.TopicMenu.OVERVIEW)
|
||||
.clickProduceMessageBtn();
|
||||
int messageAmount = topicDetails.getMessageCountAmount();
|
||||
|
@ -110,14 +102,8 @@ public class TopicMessagesTests extends BaseTest {
|
|||
@CaseId(21)
|
||||
@Test
|
||||
void copyMessageFromTopicProfile() {
|
||||
String topicName = "_schemas";
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(topicName);
|
||||
navigateToTopicsAndOpenDetails("_schemas");
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDetailsTab(TopicDetails.TopicMenu.MESSAGES)
|
||||
.getRandomMessage()
|
||||
.openDotMenu()
|
||||
|
@ -126,6 +112,28 @@ public class TopicMessagesTests extends BaseTest {
|
|||
"isAlertWithMessageVisible()");
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Issue("https://github.com/provectus/kafka-ui/issues/2856")
|
||||
@DisplayName("Checking messages filtering by Offset within Topic/Messages")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(15)
|
||||
@Test
|
||||
void checkingMessageFilteringByOffset() {
|
||||
String offsetValue = "2";
|
||||
navigateToTopicsAndOpenDetails("_schemas");
|
||||
topicDetails
|
||||
.openDetailsTab(MESSAGES)
|
||||
.selectSeekTypeDdlMessagesTab("Offset")
|
||||
.setSeekTypeValueFldMessagesTab(offsetValue)
|
||||
.clickSubmitFiltersBtnMessagesTab();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
topicDetails.getAllMessages()
|
||||
.forEach(messages -> softly.assertThat(messages.getOffset() == Integer.parseInt(offsetValue))
|
||||
.as("getAllMessages()").isTrue());
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
public void afterAll() {
|
||||
TOPIC_LIST.forEach(topic -> apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
package com.provectus.kafka.ui.suite.topics;
|
||||
|
||||
import static com.provectus.kafka.ui.pages.NaviSideBar.SideMenuOption.TOPICS;
|
||||
import static com.provectus.kafka.ui.pages.BasePage.AlertHeader.SUCCESS;
|
||||
import static com.provectus.kafka.ui.pages.topic.TopicDetails.TopicMenu.MESSAGES;
|
||||
import static com.provectus.kafka.ui.pages.topic.TopicDetails.TopicMenu.SETTINGS;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.COMPACT;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.CleanupPolicyValue.DELETE;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.CustomParameterType.COMPRESSION_TYPE;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.MaxSizeOnDisk.NOT_SET;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.MaxSizeOnDisk.SIZE_1_GB;
|
||||
import static com.provectus.kafka.ui.pages.topic.enums.MaxSizeOnDisk.SIZE_20_GB;
|
||||
import static com.provectus.kafka.ui.settings.Source.CLUSTER_NAME;
|
||||
import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
|
||||
|
@ -45,21 +49,26 @@ public class TopicsTests extends BaseTest {
|
|||
.setCustomParameterType(COMPRESSION_TYPE)
|
||||
.setCustomParameterValue("producer")
|
||||
.setCleanupPolicyValue(DELETE);
|
||||
private static final Topic TOPIC_FOR_UPDATE = new Topic()
|
||||
private static final Topic TOPIC_TO_UPDATE = new Topic()
|
||||
.setName("topic-to-update-" + randomAlphabetic(5))
|
||||
.setNumberOfPartitions(1)
|
||||
.setCleanupPolicyValue(COMPACT)
|
||||
.setTimeToRetainData("604800001")
|
||||
.setMaxSizeOnDisk(SIZE_20_GB)
|
||||
.setMaxMessageBytes("1000020")
|
||||
.setMessageKey(fileToString(System.getProperty("user.dir") + "/src/test/resources/producedkey.txt"))
|
||||
.setMessageContent(fileToString(System.getProperty("user.dir") + "/src/test/resources/testData.txt"));
|
||||
|
||||
private static final Topic TOPIC_TO_CHECK_SETTINGS = new Topic()
|
||||
.setName("new-topic-" + randomAlphabetic(5))
|
||||
.setNumberOfPartitions(1)
|
||||
.setMaxMessageBytes("1000012")
|
||||
.setMaxSizeOnDisk(NOT_SET);
|
||||
private static final Topic TOPIC_FOR_DELETE = new Topic().setName("topic-to-delete-" + randomAlphabetic(5));
|
||||
private static final List<Topic> TOPIC_LIST = new ArrayList<>();
|
||||
|
||||
@BeforeAll
|
||||
public void beforeAll() {
|
||||
TOPIC_LIST.addAll(List.of(TOPIC_FOR_UPDATE, TOPIC_FOR_DELETE));
|
||||
TOPIC_LIST.addAll(List.of(TOPIC_TO_UPDATE, TOPIC_FOR_DELETE));
|
||||
TOPIC_LIST.forEach(topic -> apiHelper.createTopic(CLUSTER_NAME, topic.getName()));
|
||||
}
|
||||
|
||||
|
@ -70,10 +79,8 @@ public class TopicsTests extends BaseTest {
|
|||
@Test
|
||||
@Order(1)
|
||||
public void createTopic() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.clickAddTopicBtn();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
|
@ -81,13 +88,7 @@ public class TopicsTests extends BaseTest {
|
|||
.setNumberOfPartitions(TOPIC_TO_CREATE.getNumberOfPartitions())
|
||||
.selectCleanupPolicy(TOPIC_TO_CREATE.getCleanupPolicyValue())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_TO_CREATE.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_TO_CREATE.getName());
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicDetails.isTopicHeaderVisible(TOPIC_TO_CREATE.getName())).as("isTopicHeaderVisible()")
|
||||
.isTrue();
|
||||
|
@ -96,10 +97,7 @@ public class TopicsTests extends BaseTest {
|
|||
softly.assertThat(topicDetails.getPartitions()).as("getPartitions()")
|
||||
.isEqualTo(TOPIC_TO_CREATE.getNumberOfPartitions());
|
||||
softly.assertAll();
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady();
|
||||
navigateToTopics();
|
||||
Assertions.assertTrue(topicsList.isTopicVisible(TOPIC_TO_CREATE.getName()), "isTopicVisible");
|
||||
TOPIC_LIST.add(TOPIC_TO_CREATE);
|
||||
}
|
||||
|
@ -110,20 +108,16 @@ public class TopicsTests extends BaseTest {
|
|||
@CaseId(7)
|
||||
@Test
|
||||
@Order(2)
|
||||
void checkAvailableOperations(){
|
||||
String processingTopic = "my_ksql_1ksql_processing_log";
|
||||
String confluentTopic = "_confluent-ksql-my_ksql_1_command_topic";
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
void checkAvailableOperations() {
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.selectCheckboxByName(processingTopic);
|
||||
topicsList.getActionButtons().
|
||||
forEach(element -> assertThat(element.is(Condition.enabled))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isTrue());
|
||||
.getTopicItem("my_ksql_1ksql_processing_log")
|
||||
.selectItem(true);
|
||||
verifyElementsCondition(topicsList.getActionButtons(),Condition.enabled);
|
||||
topicsList
|
||||
.selectCheckboxByName(confluentTopic);
|
||||
Assertions.assertFalse(topicsList.isCopySelectedTopicBtnEnabled(),"isCopySelectedTopicBtnEnabled()");
|
||||
.getTopicItem("_confluent-ksql-my_ksql_1_command_topic")
|
||||
.selectItem(true);
|
||||
Assertions.assertFalse(topicsList.isCopySelectedTopicBtnEnabled(), "isCopySelectedTopicBtnEnabled()");
|
||||
}
|
||||
|
||||
@Disabled()
|
||||
|
@ -135,43 +129,33 @@ public class TopicsTests extends BaseTest {
|
|||
@Test
|
||||
@Order(3)
|
||||
public void updateTopic() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_TO_UPDATE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDotMenu()
|
||||
.clickEditSettingsMenu();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
.selectCleanupPolicy((TOPIC_FOR_UPDATE.getCleanupPolicyValue()))
|
||||
.selectCleanupPolicy((TOPIC_TO_UPDATE.getCleanupPolicyValue()))
|
||||
.setMinInsyncReplicas(10)
|
||||
.setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
||||
.setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
||||
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
|
||||
.setTimeToRetainDataInMs(TOPIC_TO_UPDATE.getTimeToRetainData())
|
||||
.setMaxSizeOnDiskInGB(TOPIC_TO_UPDATE.getMaxSizeOnDisk())
|
||||
.setMaxMessageBytes(TOPIC_TO_UPDATE.getMaxMessageBytes())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_UPDATE.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_TO_UPDATE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDotMenu()
|
||||
.clickEditSettingsMenu();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicCreateEditForm.getCleanupPolicy()).as("getCleanupPolicy()")
|
||||
.isEqualTo(TOPIC_FOR_UPDATE.getCleanupPolicyValue().getVisibleText());
|
||||
.isEqualTo(TOPIC_TO_UPDATE.getCleanupPolicyValue().getVisibleText());
|
||||
softly.assertThat(topicCreateEditForm.getTimeToRetain()).as("getTimeToRetain()")
|
||||
.isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
|
||||
.isEqualTo(TOPIC_TO_UPDATE.getTimeToRetainData());
|
||||
softly.assertThat(topicCreateEditForm.getMaxSizeOnDisk()).as("getMaxSizeOnDisk()")
|
||||
.isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk().getVisibleText());
|
||||
.isEqualTo(TOPIC_TO_UPDATE.getMaxSizeOnDisk().getVisibleText());
|
||||
softly.assertThat(topicCreateEditForm.getMaxMessageBytes()).as("getMaxMessageBytes()")
|
||||
.isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
|
||||
.isEqualTo(TOPIC_TO_UPDATE.getMaxMessageBytes());
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
|
@ -182,20 +166,12 @@ public class TopicsTests extends BaseTest {
|
|||
@Test
|
||||
@Order(4)
|
||||
public void deleteTopic() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(TOPIC_FOR_DELETE.getName());
|
||||
navigateToTopicsAndOpenDetails(TOPIC_FOR_DELETE.getName());
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDotMenu()
|
||||
.clickDeleteTopicMenu()
|
||||
.clickConfirmDeleteBtn();
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady();
|
||||
.clickConfirmBtnMdl();
|
||||
navigateToTopics();
|
||||
Assertions.assertFalse(topicsList.isTopicVisible(TOPIC_FOR_DELETE.getName()), "isTopicVisible");
|
||||
TOPIC_LIST.remove(TOPIC_FOR_DELETE);
|
||||
}
|
||||
|
@ -209,13 +185,8 @@ public class TopicsTests extends BaseTest {
|
|||
void redirectToConsumerFromTopic() {
|
||||
String topicName = "source-activities";
|
||||
String consumerGroupId = "connect-sink_postgres_activities";
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(topicName);
|
||||
navigateToTopicsAndOpenDetails(topicName);
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDetailsTab(TopicDetails.TopicMenu.CONSUMERS)
|
||||
.openConsumerGroup(consumerGroupId);
|
||||
consumersDetails
|
||||
|
@ -233,10 +204,8 @@ public class TopicsTests extends BaseTest {
|
|||
@Test
|
||||
@Order(6)
|
||||
void checkTopicCreatePossibility() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.clickAddTopicBtn();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady();
|
||||
|
@ -253,15 +222,49 @@ public class TopicsTests extends BaseTest {
|
|||
assertThat(topicCreateEditForm.isCreateTopicButtonEnabled()).as("isCreateTopicButtonEnabled()").isTrue();
|
||||
}
|
||||
|
||||
@DisplayName("Checking 'Time to retain data (in ms)' custom value with editing Topic's settings")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(266)
|
||||
@Test
|
||||
@Order(7)
|
||||
void checkTimeToRetainDataCustomValueWithEditingTopic() {
|
||||
Topic topicToRetainData = new Topic()
|
||||
.setName("topic-to-retain-data-" + randomAlphabetic(5))
|
||||
.setTimeToRetainData("86400000");
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.clickAddTopicBtn();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
.setTopicName(topicToRetainData.getName())
|
||||
.setNumberOfPartitions(1)
|
||||
.setTimeToRetainDataInMs("604800000");
|
||||
assertThat(topicCreateEditForm.getTimeToRetain()).as("getTimeToRetain()").isEqualTo("604800000");
|
||||
topicCreateEditForm
|
||||
.setTimeToRetainDataInMs(topicToRetainData.getTimeToRetainData())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDotMenu()
|
||||
.clickEditSettingsMenu();
|
||||
assertThat(topicCreateEditForm.getTimeToRetain()).as("getTimeToRetain()")
|
||||
.isEqualTo(topicToRetainData.getTimeToRetainData());
|
||||
topicDetails
|
||||
.openDetailsTab(SETTINGS);
|
||||
assertThat(topicDetails.getSettingsGridValueByKey("retention.ms")).as("getSettingsGridValueByKey()")
|
||||
.isEqualTo(topicToRetainData.getTimeToRetainData());
|
||||
TOPIC_LIST.add(topicToRetainData);
|
||||
}
|
||||
|
||||
@DisplayName("Checking requiredness of Custom parameters within 'Create new Topic'")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(6)
|
||||
@Test
|
||||
@Order(7)
|
||||
@Order(8)
|
||||
void checkCustomParametersWithinCreateNewTopic() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.clickAddTopicBtn();
|
||||
|
@ -283,20 +286,11 @@ public class TopicsTests extends BaseTest {
|
|||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(2)
|
||||
@Test
|
||||
@Order(8)
|
||||
@Order(9)
|
||||
void checkTopicListElements() {
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
topicsList.getAllVisibleElements().forEach(
|
||||
element -> softly.assertThat(element.is(Condition.visible)).as(element.getSearchCriteria() + " isVisible()")
|
||||
.isTrue());
|
||||
topicsList.getAllEnabledElements().forEach(
|
||||
element -> softly.assertThat(element.is(Condition.enabled)).as(element.getSearchCriteria() + " isEnabled()")
|
||||
.isTrue());
|
||||
softly.assertAll();
|
||||
navigateToTopics();
|
||||
verifyElementsCondition(topicsList.getAllVisibleElements(), Condition.visible);
|
||||
verifyElementsCondition(topicsList.getAllEnabledElements(), Condition.enabled);
|
||||
}
|
||||
|
||||
@DisplayName("Filter adding within Topic")
|
||||
|
@ -304,39 +298,177 @@ public class TopicsTests extends BaseTest {
|
|||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(12)
|
||||
@Test
|
||||
@Order(9)
|
||||
@Order(10)
|
||||
void addingNewFilterWithinTopic() {
|
||||
String topicName = "_schemas";
|
||||
String filterName = "123ABC";
|
||||
naviSideBar
|
||||
.openSideMenu(TOPICS);
|
||||
topicsList
|
||||
.waitUntilScreenReady()
|
||||
.openTopic(topicName);
|
||||
String filterName = randomAlphabetic(5);
|
||||
navigateToTopicsAndOpenDetails("_schemas");
|
||||
topicDetails
|
||||
.openDetailsTab(TopicDetails.TopicMenu.MESSAGES)
|
||||
.openDetailsTab(MESSAGES)
|
||||
.clickMessagesAddFiltersBtn()
|
||||
.waitUntilAddFiltersMdlVisible();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
topicDetails.getAllAddFilterModalVisibleElements().forEach(element ->
|
||||
softly.assertThat(element.is(Condition.visible))
|
||||
.as(element.getSearchCriteria() + " isVisible()").isTrue());
|
||||
topicDetails.getAllAddFilterModalEnabledElements().forEach(element ->
|
||||
softly.assertThat(element.is(Condition.enabled))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isTrue());
|
||||
topicDetails.getAllAddFilterModalDisabledElements().forEach(element ->
|
||||
softly.assertThat(element.is(Condition.enabled))
|
||||
.as(element.getSearchCriteria() + " isEnabled()").isFalse());
|
||||
softly.assertThat(topicDetails.isSaveThisFilterCheckBoxSelected()).as("isSaveThisFilterCheckBoxSelected()")
|
||||
verifyElementsCondition(topicDetails.getAllAddFilterModalVisibleElements(), Condition.visible);
|
||||
verifyElementsCondition(topicDetails.getAllAddFilterModalEnabledElements(), Condition.enabled);
|
||||
verifyElementsCondition(topicDetails.getAllAddFilterModalDisabledElements(), Condition.disabled);
|
||||
assertThat(topicDetails.isSaveThisFilterCheckBoxSelected()).as("isSaveThisFilterCheckBoxSelected()")
|
||||
.isFalse();
|
||||
softly.assertAll();
|
||||
topicDetails
|
||||
.setFilterCodeFieldAddFilterMdl(filterName);
|
||||
assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isMessagesAddFilterTabAddFilterBtnEnabled()")
|
||||
assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isAddFilterBtnAddFilterMdlEnabled()")
|
||||
.isTrue();
|
||||
topicDetails.clickAddFilterBtnAddFilterMdl();
|
||||
assertThat(topicDetails.getFilterName()).as("isFilterNameVisible(filterName)")
|
||||
.isEqualTo(filterName);
|
||||
topicDetails.clickAddFilterBtnAndCloseMdl(true);
|
||||
assertThat(topicDetails.isActiveFilterVisible(filterName)).as("isActiveFilterVisible()")
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
@DisplayName("Checking filter saving within Messages/Topic profile/Saved Filters")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(13)
|
||||
@Test
|
||||
@Order(11)
|
||||
void checkFilterSavingWithinSavedFilters() {
|
||||
String displayName = randomAlphabetic(5);
|
||||
navigateToTopicsAndOpenDetails("my_ksql_1ksql_processing_log");
|
||||
topicDetails
|
||||
.openDetailsTab(MESSAGES)
|
||||
.clickMessagesAddFiltersBtn()
|
||||
.waitUntilAddFiltersMdlVisible()
|
||||
.setFilterCodeFieldAddFilterMdl(randomAlphabetic(4))
|
||||
.selectSaveThisFilterCheckboxMdl(true)
|
||||
.setDisplayNameFldAddFilterMdl(displayName);
|
||||
assertThat(topicDetails.isAddFilterBtnAddFilterMdlEnabled()).as("isAddFilterBtnAddFilterMdlEnabled()")
|
||||
.isTrue();
|
||||
topicDetails
|
||||
.clickAddFilterBtnAndCloseMdl(false)
|
||||
.openSavedFiltersListMdl();
|
||||
assertThat(topicDetails.isFilterVisibleAtSavedFiltersMdl(displayName))
|
||||
.as("isFilterVisibleAtSavedFiltersMdl()").isTrue();
|
||||
}
|
||||
|
||||
@DisplayName("Checking applying saved filter within Topic/Messages")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(14)
|
||||
@Test
|
||||
@Order(12)
|
||||
void checkingApplyingSavedFilterWithinTopicMessages() {
|
||||
String displayName = randomAlphabetic(5);
|
||||
navigateToTopicsAndOpenDetails("my_ksql_1ksql_processing_log");
|
||||
topicDetails
|
||||
.openDetailsTab(MESSAGES)
|
||||
.clickMessagesAddFiltersBtn()
|
||||
.waitUntilAddFiltersMdlVisible()
|
||||
.setFilterCodeFieldAddFilterMdl(randomAlphabetic(4))
|
||||
.selectSaveThisFilterCheckboxMdl(true)
|
||||
.setDisplayNameFldAddFilterMdl(displayName)
|
||||
.clickAddFilterBtnAndCloseMdl(false)
|
||||
.openSavedFiltersListMdl()
|
||||
.selectFilterAtSavedFiltersMdl(displayName)
|
||||
.clickSelectFilterBtnAtSavedFiltersMdl();
|
||||
assertThat(topicDetails.isActiveFilterVisible(displayName))
|
||||
.as("isActiveFilterVisible()").isTrue();
|
||||
}
|
||||
|
||||
@DisplayName("Checking 'Show Internal Topics' toggle functionality within 'All Topics' page")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(11)
|
||||
@Test
|
||||
@Order(13)
|
||||
void checkShowInternalTopicsButtonFunctionality(){
|
||||
navigateToTopics();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicsList.isShowInternalRadioBtnSelected()).as("isInternalRadioBtnSelected()").isTrue();
|
||||
softly.assertThat(topicsList.getInternalTopics()).as("getInternalTopics()").size().isGreaterThan(0);
|
||||
softly.assertThat(topicsList.getNonInternalTopics()).as("getNonInternalTopics()").size().isGreaterThan(0);
|
||||
softly.assertAll();
|
||||
topicsList
|
||||
.setShowInternalRadioButton(false);
|
||||
softly.assertThat(topicsList.getInternalTopics()).as("getInternalTopics()").size().isEqualTo(0);
|
||||
softly.assertThat(topicsList.getNonInternalTopics()).as("getNonInternalTopics()").size().isGreaterThan(0);
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
@DisplayName("Checking Topics settings to make sure retention.bytes is right according to Max size on disk in GB selected value")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(56)
|
||||
@Test
|
||||
void checkRetentionBytesAccordingToMaxSizeOnDisk(){
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.clickAddTopicBtn();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
.setTopicName(TOPIC_TO_CHECK_SETTINGS.getName())
|
||||
.setNumberOfPartitions(TOPIC_TO_CHECK_SETTINGS.getNumberOfPartitions())
|
||||
.setMaxMessageBytes(TOPIC_TO_CHECK_SETTINGS.getMaxMessageBytes())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
TOPIC_LIST.add(TOPIC_TO_CHECK_SETTINGS);
|
||||
topicDetails
|
||||
.openDetailsTab(SETTINGS);
|
||||
topicSettingsTab
|
||||
.waitUntilScreenReady();
|
||||
SoftAssertions softly = new SoftAssertions();
|
||||
softly.assertThat(topicSettingsTab.getValueByKey("retention.bytes"))
|
||||
.as("getValueOfKey(retention.bytes)").isEqualTo(TOPIC_TO_CHECK_SETTINGS.getMaxSizeOnDisk().getOptionValue());
|
||||
softly.assertThat(topicSettingsTab.getValueByKey("max.message.bytes"))
|
||||
.as("getValueOfKey(max.message.bytes)").isEqualTo(TOPIC_TO_CHECK_SETTINGS.getMaxMessageBytes());
|
||||
softly.assertAll();
|
||||
TOPIC_TO_CHECK_SETTINGS
|
||||
.setMaxSizeOnDisk(SIZE_1_GB)
|
||||
.setMaxMessageBytes("1000056");
|
||||
topicDetails
|
||||
.openDotMenu()
|
||||
.clickEditSettingsMenu();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
.setMaxSizeOnDiskInGB(TOPIC_TO_CHECK_SETTINGS.getMaxSizeOnDisk())
|
||||
.setMaxMessageBytes(TOPIC_TO_CHECK_SETTINGS.getMaxMessageBytes())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady()
|
||||
.openDetailsTab(SETTINGS);
|
||||
topicSettingsTab
|
||||
.waitUntilScreenReady();
|
||||
softly.assertThat(topicSettingsTab.getValueByKey("retention.bytes"))
|
||||
.as("getValueOfKey(retention.bytes)").isEqualTo(TOPIC_TO_CHECK_SETTINGS.getMaxSizeOnDisk().getOptionValue());
|
||||
softly.assertThat(topicSettingsTab.getValueByKey("max.message.bytes"))
|
||||
.as("getValueOfKey(max.message.bytes)").isEqualTo(TOPIC_TO_CHECK_SETTINGS.getMaxMessageBytes());
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
@DisplayName("TopicTests.recreateTopicFromTopicProfile : Recreate topic from topic profile")
|
||||
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(247)
|
||||
@Test
|
||||
void recreateTopicFromTopicProfile(){
|
||||
Topic topicToRecreate = new Topic()
|
||||
.setName("topic-to-recreate-" + randomAlphabetic(5))
|
||||
.setNumberOfPartitions(1);
|
||||
navigateToTopics();
|
||||
topicsList
|
||||
.clickAddTopicBtn();
|
||||
topicCreateEditForm
|
||||
.waitUntilScreenReady()
|
||||
.setTopicName(topicToRecreate.getName())
|
||||
.setNumberOfPartitions(topicToRecreate.getNumberOfPartitions())
|
||||
.clickCreateTopicBtn();
|
||||
topicDetails
|
||||
.waitUntilScreenReady();
|
||||
TOPIC_LIST.add(topicToRecreate);
|
||||
topicDetails
|
||||
.openDotMenu()
|
||||
.clickRecreateTopicMenu();
|
||||
assertThat(topicDetails.isConfirmationMdlVisible()).as("isConfirmationMdlVisible()").isTrue();
|
||||
topicDetails
|
||||
.clickConfirmBtnMdl();
|
||||
assertThat(topicDetails.isAlertWithMessageVisible(SUCCESS,
|
||||
String.format("Topic %s successfully recreated!", topicToRecreate.getName())))
|
||||
.as("isAlertWithMessageVisible()").isTrue();
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
|
Loading…
Add table
Reference in a new issue