[e2e] Rename POM classes according to their type and naming on UI (#2698)

* Renamed classes for same name with UI

* Facade refactored

* Deleted SchemaCreateView.java

* accompanying changes

* deleted SchemaCreateView.java

* delete ConnectorDetails.java outdated

* add new ConnectorDetails class

* refactored of ConnectorCreateForm

* Added spaces between methods
This commit is contained in:
Alexandr Nezboretskiy 2022-10-04 09:23:36 +03:00 committed by GitHub
parent b19b9d82e9
commit f8f3d87259
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 160 additions and 173 deletions

View file

@ -10,16 +10,16 @@ import static com.codeborne.selenide.Selenide.sleep;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log; import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log;
public class ConnectorCreateView { public class ConnectorCreateForm {
SelenideElement nameField = $(By.xpath("//input[@name='name']")); protected SelenideElement nameField = $(By.xpath("//input[@name='name']"));
SelenideElement contentTextArea = $(".ace_text-input"); protected SelenideElement contentTextArea = $(".ace_text-input");
SelenideElement submitButton = $(By.xpath("//button[@type='submit']")); protected SelenideElement submitButton = $(By.xpath("//button[@type='submit']"));
private static final String path = "/ui/clusters/secondLocal/connectors/create_new"; private static final String path = "/ui/clusters/secondLocal/connectors/create_new";
@Step("Set connector config JSON") @Step("Set connector config JSON")
public ConnectorsView setConnectorConfig(String connectName, String configJson) { public ConnectorDetails setConnectorConfig(String connectName, String configJson) {
nameField.setValue(connectName); nameField.setValue(connectName);
$("#config").click(); $("#config").click();
contentTextArea.setValue(""); contentTextArea.setValue("");
@ -28,11 +28,11 @@ public class ConnectorCreateView {
clickByJavaScript(submitButton); clickByJavaScript(submitButton);
sleep(4000); sleep(4000);
log.info("Connector config is submitted"); log.info("Connector config is submitted");
return new ConnectorsView(); return new ConnectorDetails();
} }
@Step @Step
public ConnectorCreateView waitUntilScreenReady() { public ConnectorCreateForm waitUntilScreenReady() {
nameField.shouldBe(Condition.visible); nameField.shouldBe(Condition.visible);
return this; return this;
} }

View file

@ -11,7 +11,7 @@ import static com.codeborne.selenide.Selenide.sleep;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log; import static com.provectus.kafka.ui.utilities.screenshots.Screenshooter.log;
public class ConnectorsView { public class ConnectorDetails {
protected SelenideElement dotMenuBtn = $(By.xpath("//button[@aria-label='Dropdown Toggle']")); protected SelenideElement dotMenuBtn = $(By.xpath("//button[@aria-label='Dropdown Toggle']"));
protected SelenideElement deleteBtn = $(By.xpath("//li/div[text()='Delete']")); protected SelenideElement deleteBtn = $(By.xpath("//li/div[text()='Delete']"));
protected SelenideElement confirmBtnMdl = $(By.xpath("//div[@role='dialog']//button[text()='Confirm']")); protected SelenideElement confirmBtnMdl = $(By.xpath("//div[@role='dialog']//button[text()='Confirm']"));
@ -19,7 +19,7 @@ public class ConnectorsView {
protected SelenideElement contentTextArea = $("[wrap]"); protected SelenideElement contentTextArea = $("[wrap]");
@Step @Step
public ConnectorsView waitUntilScreenReady() { public ConnectorDetails waitUntilScreenReady() {
$(By.xpath("//a[text() ='Tasks']")).shouldBe(Condition.visible); $(By.xpath("//a[text() ='Tasks']")).shouldBe(Condition.visible);
$(By.xpath("//a[text() ='Config']")).shouldBe(Condition.visible); $(By.xpath("//a[text() ='Config']")).shouldBe(Condition.visible);
$(By.xpath("//a[text() ='Overview']")).shouldBe(Condition.visible); $(By.xpath("//a[text() ='Overview']")).shouldBe(Condition.visible);
@ -27,13 +27,13 @@ public class ConnectorsView {
} }
@Step() @Step()
public ConnectorsView openConfigTab() { public ConnectorDetails openConfigTab() {
clickByJavaScript($(By.xpath("//a[text() ='Config']"))); clickByJavaScript($(By.xpath("//a[text() ='Config']")));
return this; return this;
} }
@Step() @Step()
public ConnectorsView setConfig(String configJson) { public ConnectorDetails setConfig(String configJson) {
$("#config").click(); $("#config").click();
contentTextArea.sendKeys(Keys.LEFT_CONTROL + "a"); contentTextArea.sendKeys(Keys.LEFT_CONTROL + "a");
contentTextArea.setValue(""); contentTextArea.setValue("");
@ -46,29 +46,29 @@ public class ConnectorsView {
} }
@Step() @Step()
public ConnectorsView openDotMenu() { public ConnectorDetails openDotMenu() {
clickByJavaScript(dotMenuBtn); clickByJavaScript(dotMenuBtn);
return this; return this;
} }
@Step() @Step()
public ConnectorsView clickDeleteButton() { public ConnectorDetails clickDeleteButton() {
clickByJavaScript(deleteBtn); clickByJavaScript(deleteBtn);
return this; return this;
} }
@Step() @Step()
public ConnectorsView clickConfirmButton() { public ConnectorDetails clickConfirmButton() {
confirmBtnMdl.shouldBe(Condition.enabled).click(); confirmBtnMdl.shouldBe(Condition.enabled).click();
confirmBtnMdl.shouldBe(Condition.disappear); confirmBtnMdl.shouldBe(Condition.disappear);
return this; return this;
} }
@Step() @Step()
public ConnectorsView deleteConnector() { public ConnectorDetails deleteConnector() {
openDotMenu(); openDotMenu();
clickDeleteButton(); clickDeleteButton();
clickConfirmButton(); clickConfirmButton();
return this; return this;
} }
} }

View file

@ -2,42 +2,42 @@ package com.provectus.kafka.ui.pages.connector;
import com.codeborne.selenide.Condition; import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide; import com.codeborne.selenide.Selenide;
import com.provectus.kafka.ui.utilities.WaitUtils;
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 lombok.experimental.ExtensionMethod;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import static com.codeborne.selenide.Selenide.$; import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$x; import static com.codeborne.selenide.Selenide.$x;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
@ExtensionMethod(WaitUtils.class) @ExtensionMethod(WaitUtils.class)
public class ConnectorsList { public class KafkaConnectList {
private static final String path = "/ui/clusters/%s/connectors"; private static final String path = "/ui/clusters/%s/connectors";
@Step("Open URL to {cluster}") @Step("Open URL to {cluster}")
public ConnectorsList goTo(String cluster) { public KafkaConnectList goTo(String cluster) {
Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster)); Selenide.open(Source.BASE_WEB_URL + String.format(path, cluster));
return this; return this;
} }
@Step @Step
public ConnectorsList waitUntilScreenReady() { public KafkaConnectList waitUntilScreenReady() {
$(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible); $(By.xpath("//h1[text()='Connectors']")).shouldBe(Condition.visible);
return this; return this;
} }
@Step("Click on button 'Create Connector'") @Step("Click on button 'Create Connector'")
public ConnectorCreateView clickCreateConnectorButton() { public ConnectorCreateForm clickCreateConnectorButton() {
clickByJavaScript($x("//button[text()='Create Connector']")); clickByJavaScript($x("//button[text()='Create Connector']"));
return new ConnectorCreateView(); return new ConnectorCreateForm();
} }
@Step @Step
public ConnectorsList openConnector(String connectorName) { public KafkaConnectList openConnector(String connectorName) {
$(By.linkText(connectorName)).click(); $(By.linkText(connectorName)).click();
return this; return this;
} }
@ -49,7 +49,7 @@ public class ConnectorsList {
} }
@Step @Step
public ConnectorsList connectorIsUpdatedInList(String connectorName, String topicName) { public KafkaConnectList connectorIsUpdatedInList(String connectorName, String topicName) {
$(By.xpath(String.format("//a[text() = '%s']", connectorName))).shouldBe(Condition.visible); $(By.xpath(String.format("//a[text() = '%s']", connectorName))).shouldBe(Condition.visible);
By.xpath(String.format("//a[text() = '%s']", topicName)).refreshUntil(Condition.visible); By.xpath(String.format("//a[text() = '%s']", topicName)).refreshUntil(Condition.visible);
return this; return this;

View file

@ -1,6 +1,5 @@
package com.provectus.kafka.ui.pages.schema; package com.provectus.kafka.ui.pages.schema;
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide; import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.SelenideElement; import com.codeborne.selenide.SelenideElement;
import com.provectus.kafka.ui.api.model.CompatibilityLevel; import com.provectus.kafka.ui.api.model.CompatibilityLevel;
@ -13,31 +12,48 @@ import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$x; import static com.codeborne.selenide.Selenide.$x;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
public class SchemaEditView { public class SchemaCreateForm {
protected SelenideElement subjectName = $(By.xpath("//input[@name='subject']"));
protected SelenideElement schemaField = $(By.xpath("//textarea[@name='schema']"));
protected SelenideElement submitSchemaButton = $(By.xpath("//button[@type='submit']"));
protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]"); protected SelenideElement newSchemaTextArea = $("#newSchema [wrap]");
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']"); protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
@Step @Step
public SchemaEditView selectSchemaTypeFromDropdown(SchemaType schemaType) { public SchemaCreateForm setSubjectName(String name) {
$x("//ul[@name='schemaType']").click(); subjectName.setValue(name);
return this;
}
@Step
public SchemaCreateForm setSchemaField(String text) {
schemaField.setValue(text);
return this;
}
@Step
public SchemaCreateForm selectSchemaTypeFromDropdown(SchemaType schemaType) {
$("ul[role='listbox']").click();
$x("//li[text()='" + schemaType.getValue() + "']").click(); $x("//li[text()='" + schemaType.getValue() + "']").click();
return this; return this;
} }
@Step @Step
public SchemaEditView selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum level) { public SchemaDetails clickSubmit() {
clickByJavaScript(submitSchemaButton);
return new SchemaDetails();
}
@Step
public SchemaCreateForm selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum level) {
$x("//ul[@name='compatibilityLevel']").click(); $x("//ul[@name='compatibilityLevel']").click();
$x("//li[text()='" + level.getValue() + "']").click(); $x("//li[text()='" + level.getValue() + "']").click();
return this; return this;
} }
@Step
public SchemaView clickSubmit() {
clickByJavaScript($(By.xpath("//button[@type='submit']")));
return new SchemaView();
}
@Step("Set new schema value") @Step("Set new schema value")
public SchemaEditView setNewSchemaValue(String configJson) { public SchemaCreateForm setNewSchemaValue(String configJson) {
$("#newSchema").click(); $("#newSchema").click();
newSchemaTextArea.sendKeys(Keys.CONTROL + "a", Keys.BACK_SPACE); newSchemaTextArea.sendKeys(Keys.CONTROL + "a", Keys.BACK_SPACE);
Selenide.executeJavaScript("arguments[0].value = '';", $("#newSchema")); Selenide.executeJavaScript("arguments[0].value = '';", $("#newSchema"));
@ -45,22 +61,15 @@ public class SchemaEditView {
return this; return this;
} }
@Step
public SchemaRegistryList removeSchema() {
$(By.xpath("//*[contains(text(),'Remove')]")).click();
$(By.xpath("//*[text()='Confirm']")).shouldBe(Condition.visible).click();
return new SchemaRegistryList();
}
@Step @Step
public boolean isSchemaDropDownDisabled(){ public boolean isSchemaDropDownDisabled(){
boolean disabled = false; boolean disabled = false;
try{ try{
String attribute = schemaTypeDropDown.getAttribute("disabled"); String attribute = schemaTypeDropDown.getAttribute("disabled");
disabled = true; disabled = true;
} }
catch (Throwable ignored){ catch (Throwable ignored){
} }
return disabled; return disabled;
} }
} }

View file

@ -1,38 +0,0 @@
package com.provectus.kafka.ui.pages.schema;
import com.codeborne.selenide.SelenideElement;
import com.provectus.kafka.ui.api.model.SchemaType;
import io.qameta.allure.Step;
import org.openqa.selenium.By;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$x;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
public class SchemaCreateView {
private final SelenideElement subjectName = $(By.xpath("//input[@name='subject']"));
private final SelenideElement schemaField = $(By.xpath("//textarea[@name='schema']"));
private final SelenideElement submitSchemaButton = $(By.xpath("//button[@type='submit']"));
@Step
public SchemaCreateView selectSchemaTypeFromDropdown(SchemaType schemaType) {
$("ul[role='listbox']").click();
$x("//li[text()='" + schemaType.getValue() + "']").click();
return this;
}
@Step
public SchemaView clickSubmit() {
clickByJavaScript(submitSchemaButton);
return new SchemaView();
}
@Step
public SchemaCreateView setSubjectName(String name) {
subjectName.setValue(name);
return this;
}
@Step
public SchemaCreateView setSchemaField(String text) {
schemaField.setValue(text);
return this;
}
}

View file

@ -8,12 +8,12 @@ import org.openqa.selenium.By;
import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.Selenide.*;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
public class SchemaView { public class SchemaDetails {
protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first(); protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first();
@Step @Step
public SchemaView waitUntilScreenReady() { public SchemaDetails waitUntilScreenReady() {
$("div#schema").shouldBe(Condition.visible); $("div#schema").shouldBe(Condition.visible);
return this; return this;
} }
@ -24,10 +24,11 @@ public class SchemaView {
} }
@Step @Step
public SchemaEditView openEditSchema(){ public SchemaDetails openEditSchema(){
$x("//button[text()= 'Edit Schema']").click(); $x("//button[text()= 'Edit Schema']").click();
return new SchemaEditView(); return this;
} }
@Step @Step
public SchemaRegistryList removeSchema() { public SchemaRegistryList removeSchema() {
clickByJavaScript(dotMenuBtn); clickByJavaScript(dotMenuBtn);

View file

@ -5,24 +5,25 @@ import com.codeborne.selenide.SelenideElement;
import io.qameta.allure.Step; import io.qameta.allure.Step;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.Selenide.$;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible; import static com.codeborne.selenide.Selenide.$x;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
public class SchemaRegistryList { public class SchemaRegistryList {
private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]")); private final SelenideElement schemaButton = $(By.xpath("//*[contains(text(),'Create Schema')]"));
@Step @Step
public SchemaCreateView clickCreateSchema() { public SchemaCreateForm clickCreateSchema() {
clickByJavaScript(schemaButton); clickByJavaScript(schemaButton);
return new SchemaCreateView(); return new SchemaCreateForm();
} }
@Step @Step
public SchemaView openSchema(String schemaName) { public SchemaDetails openSchema(String schemaName) {
$(By.xpath("//*[contains(text(),'" + schemaName + "')]")).click(); $(By.xpath("//*[contains(text(),'" + schemaName + "')]")).click();
return new SchemaView(); return new SchemaDetails();
} }
@Step @Step

View file

@ -39,10 +39,10 @@ public class ProduceMessagePanel {
} }
@Step @Step
public TopicView submitProduceMessage() { public TopicDetails submitProduceMessage() {
submitBtn.shouldBe(Condition.enabled).click(); submitBtn.shouldBe(Condition.enabled).click();
submitBtn.shouldBe(Condition.disappear); submitBtn.shouldBe(Condition.disappear);
refresh(); refresh();
return new TopicView().waitUntilScreenReady(); return new TopicDetails().waitUntilScreenReady();
} }
} }

View file

@ -11,48 +11,55 @@ import static com.codeborne.selenide.Selenide.*;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
public class TopicCreateEditSettingsView { public class TopicCreateEditForm {
private final SelenideElement timeToRetain = $(By.cssSelector("input#timeToRetain")); private final SelenideElement timeToRetain = $(By.cssSelector("input#timeToRetain"));
private final SelenideElement maxMessageBytes = $(By.name("maxMessageBytes")); private final SelenideElement maxMessageBytes = $(By.name("maxMessageBytes"));
@Step @Step
public TopicCreateEditSettingsView setTopicName(String topicName) { public TopicCreateEditForm setTopicName(String topicName) {
$("input#topicFormName").setValue(topicName); $("input#topicFormName").setValue(topicName);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setMinInsyncReplicas(Integer minInsyncReplicas) { public TopicCreateEditForm setMinInsyncReplicas(Integer minInsyncReplicas) {
$("input[name=minInSyncReplicas]").setValue(minInsyncReplicas.toString()); $("input[name=minInSyncReplicas]").setValue(minInsyncReplicas.toString());
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setTimeToRetainDataInMs(Long ms) { public TopicCreateEditForm setTimeToRetainDataInMs(Long ms) {
timeToRetain.setValue(ms.toString()); timeToRetain.setValue(ms.toString());
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setTimeToRetainDataInMs(String ms) { public TopicCreateEditForm setTimeToRetainDataInMs(String ms) {
timeToRetain.setValue(ms); timeToRetain.setValue(ms);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setMaxSizeOnDiskInGB(String value) { public TopicCreateEditForm setMaxSizeOnDiskInGB(String value) {
KafkaUISelectElement kafkaUISelectElement = new KafkaUISelectElement("retentionBytes"); KafkaUISelectElement kafkaUISelectElement = new KafkaUISelectElement("retentionBytes");
kafkaUISelectElement.selectByVisibleText(value); kafkaUISelectElement.selectByVisibleText(value);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setMaxMessageBytes(Long bytes) { public TopicCreateEditForm setMaxMessageBytes(Long bytes) {
maxMessageBytes.setValue(bytes.toString()); maxMessageBytes.setValue(bytes.toString());
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView setMaxMessageBytes(String bytes) { public TopicCreateEditForm setMaxMessageBytes(String bytes) {
return setMaxMessageBytes(Long.parseLong(bytes)); return setMaxMessageBytes(Long.parseLong(bytes));
} }
@Step @Step
public TopicCreateEditSettingsView setTimeToRetainDataInMsUsingButtons(String value) { public TopicCreateEditForm setTimeToRetainDataInMsUsingButtons(String value) {
timeToRetain timeToRetain
.parent() .parent()
.parent() .parent()
@ -63,32 +70,37 @@ public class TopicCreateEditSettingsView {
} }
@Step @Step
public TopicCreateEditSettingsView selectCleanupPolicy(CleanupPolicyValue cleanupPolicyValue) { public TopicCreateEditForm selectCleanupPolicy(CleanupPolicyValue cleanupPolicyValue) {
return selectFromDropDownByOptionValue("cleanupPolicy", return selectFromDropDownByOptionValue("cleanupPolicy",
cleanupPolicyValue.getOptionValue()); cleanupPolicyValue.getOptionValue());
} }
@Step @Step
public TopicCreateEditSettingsView selectCleanupPolicy(String cleanupPolicyOptionValue) { public TopicCreateEditForm selectCleanupPolicy(String cleanupPolicyOptionValue) {
$("ul#topicFormCleanupPolicy").click(); $("ul#topicFormCleanupPolicy").click();
$x("//li[text()='" + cleanupPolicyOptionValue + "']").click(); $x("//li[text()='" + cleanupPolicyOptionValue + "']").click();
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView selectRetentionBytes(String visibleValue) { public TopicCreateEditForm selectRetentionBytes(String visibleValue) {
return selectFromDropDownByVisibleText("retentionBytes", visibleValue); return selectFromDropDownByVisibleText("retentionBytes", visibleValue);
} }
@Step @Step
public TopicCreateEditSettingsView selectRetentionBytes(Long optionValue) { public TopicCreateEditForm selectRetentionBytes(Long optionValue) {
return selectFromDropDownByOptionValue("retentionBytes", optionValue.toString()); return selectFromDropDownByOptionValue("retentionBytes", optionValue.toString());
} }
@Step @Step
public TopicView sendData() { public TopicDetails sendData() {
clickByJavaScript($x("//button[@type='submit']")); clickByJavaScript($x("//button[@type='submit']"));
return new TopicView(); return new TopicDetails();
} }
@Step @Step
public TopicCreateEditSettingsView addCustomParameter(String customParameterName, public TopicCreateEditForm addCustomParameter(String customParameterName,
String customParameterValue) { String customParameterValue) {
ElementsCollection customParametersElements = ElementsCollection customParametersElements =
$$("ul[role=listbox][name^=customParams][name$=name]"); $$("ul[role=listbox][name^=customParams][name$=name]");
KafkaUISelectElement kafkaUISelectElement = null; KafkaUISelectElement kafkaUISelectElement = null;
@ -110,9 +122,10 @@ public class TopicCreateEditSettingsView {
.setValue(customParameterValue); .setValue(customParameterValue);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView updateCustomParameter(String customParameterName, public TopicCreateEditForm updateCustomParameter(String customParameterName,
String customParameterValue) { String customParameterValue) {
SelenideElement selenideElement = $$("ul[role=listbox][name^=customParams][name$=name]") SelenideElement selenideElement = $$("ul[role=listbox][name^=customParams][name$=name]")
.find(Condition.exactText(customParameterName)); .find(Condition.exactText(customParameterName));
String name = selenideElement.getAttribute("name"); String name = selenideElement.getAttribute("name");
@ -122,8 +135,9 @@ public class TopicCreateEditSettingsView {
$(String.format("input[name^=%s]", name)).setValue(customParameterValue); $(String.format("input[name^=%s]", name)).setValue(customParameterValue);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView cleanupPolicyIs(String value) { public TopicCreateEditForm cleanupPolicyIs(String value) {
String cleanupPolicy = new KafkaUISelectElement("cleanupPolicy") String cleanupPolicy = new KafkaUISelectElement("cleanupPolicy")
.getCurrentValue(); .getCurrentValue();
assertThat(cleanupPolicy) assertThat(cleanupPolicy)
@ -131,14 +145,16 @@ public class TopicCreateEditSettingsView {
.isEqualToIgnoringCase(value); .isEqualToIgnoringCase(value);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView timeToRetainIs(String time) { public TopicCreateEditForm timeToRetainIs(String time) {
String value = timeToRetain.getValue(); String value = timeToRetain.getValue();
assertThat(value) assertThat(value)
.as("Time to retain data (in ms) should be " + time) .as("Time to retain data (in ms) should be " + time)
.isEqualTo(time); .isEqualTo(time);
return this; return this;
} }
@Step @Step
public String getCleanupPolicy() { public String getCleanupPolicy() {
return new KafkaUISelectElement("cleanupPolicy").getCurrentValue(); return new KafkaUISelectElement("cleanupPolicy").getCurrentValue();
@ -215,15 +231,15 @@ public class TopicCreateEditSettingsView {
} }
} }
private TopicCreateEditSettingsView selectFromDropDownByOptionValue(String dropDownElementName, private TopicCreateEditForm selectFromDropDownByOptionValue(String dropDownElementName,
String optionValue) { String optionValue) {
KafkaUISelectElement select = new KafkaUISelectElement(dropDownElementName); KafkaUISelectElement select = new KafkaUISelectElement(dropDownElementName);
select.selectByOptionValue(optionValue); select.selectByOptionValue(optionValue);
return this; return this;
} }
private TopicCreateEditSettingsView selectFromDropDownByVisibleText(String dropDownElementName, private TopicCreateEditForm selectFromDropDownByVisibleText(String dropDownElementName,
String visibleText) { String visibleText) {
KafkaUISelectElement select = new KafkaUISelectElement(dropDownElementName); KafkaUISelectElement select = new KafkaUISelectElement(dropDownElementName);
select.selectByVisibleText(visibleText); select.selectByVisibleText(visibleText);
return this; return this;

View file

@ -3,8 +3,8 @@ package com.provectus.kafka.ui.pages.topic;
import com.codeborne.selenide.Condition; import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide; import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.SelenideElement; import com.codeborne.selenide.SelenideElement;
import com.provectus.kafka.ui.utilities.WaitUtils;
import com.provectus.kafka.ui.settings.Source; import 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 lombok.experimental.ExtensionMethod;
import org.openqa.selenium.By; import org.openqa.selenium.By;
@ -13,32 +13,32 @@ import static com.codeborne.selenide.Selenide.*;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
@ExtensionMethod({WaitUtils.class}) @ExtensionMethod({WaitUtils.class})
public class TopicView { public class TopicDetails {
private static final String URL_PATH = "/ui/clusters/%s/topics/%s"; private static final String URL_PATH = "/ui/clusters/%s/topics/%s";
protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first(); protected SelenideElement dotMenuBtn = $$x("//button[@aria-label='Dropdown Toggle']").first();
@Step @Step
public TopicView goTo(String cluster, String topic) { public TopicDetails goTo(String cluster, String topic) {
Selenide.open(Source.BASE_WEB_URL + String.format(URL_PATH, cluster, topic)); Selenide.open(Source.BASE_WEB_URL + String.format(URL_PATH, cluster, topic));
return this; return this;
} }
@Step @Step
public TopicView waitUntilScreenReady() { public TopicDetails waitUntilScreenReady() {
$(By.linkText("Overview")).shouldBe(Condition.visible); $(By.linkText("Overview")).shouldBe(Condition.visible);
return this; return this;
} }
@Step @Step
public TopicCreateEditSettingsView openEditSettings() { public TopicCreateEditForm openEditSettings() {
clickByJavaScript(dotMenuBtn); clickByJavaScript(dotMenuBtn);
$x("//li[@role][text()='Edit settings']").click(); $x("//li[@role][text()='Edit settings']").click();
return new TopicCreateEditSettingsView(); return new TopicCreateEditForm();
} }
@Step @Step
public TopicView openTopicMenu(TopicMenu menu) { public TopicDetails openTopicMenu(TopicMenu menu) {
$(By.linkText(menu.getValue())).shouldBe(Condition.visible).click(); $(By.linkText(menu.getValue())).shouldBe(Condition.visible).click();
return this; return this;
} }

View file

@ -3,15 +3,15 @@ package com.provectus.kafka.ui.pages.topic;
import com.codeborne.selenide.CollectionCondition; import com.codeborne.selenide.CollectionCondition;
import com.codeborne.selenide.Condition; import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide; import com.codeborne.selenide.Selenide;
import com.provectus.kafka.ui.utilities.WaitUtils;
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 lombok.experimental.ExtensionMethod;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.Selenide.*;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript; import static com.provectus.kafka.ui.utilities.WebUtils.clickByJavaScript;
import static com.provectus.kafka.ui.utilities.WebUtils.isVisible;
@ExtensionMethod(WaitUtils.class) @ExtensionMethod(WaitUtils.class)
public class TopicsList { public class TopicsList {
@ -32,9 +32,9 @@ public class TopicsList {
} }
@Step @Step
public TopicCreateEditSettingsView pressCreateNewTopic() { public TopicCreateEditForm pressCreateNewTopic() {
clickByJavaScript($x("//button[normalize-space(text()) ='Add a Topic']")); clickByJavaScript($x("//button[normalize-space(text()) ='Add a Topic']"));
return new TopicCreateEditSettingsView(); return new TopicCreateEditForm();
} }
@Step @Step
@ -44,9 +44,9 @@ public class TopicsList {
} }
@Step @Step
public TopicView openTopic(String topicName) { public TopicDetails openTopic(String topicName) {
$(By.linkText(topicName)).click(); $(By.linkText(topicName)).click();
return new TopicView(); return new TopicDetails();
} }
@Step @Step

View file

@ -2,30 +2,28 @@ package com.provectus.kafka.ui.base;
import com.provectus.kafka.ui.helpers.ApiHelper; import com.provectus.kafka.ui.helpers.ApiHelper;
import com.provectus.kafka.ui.pages.MainPage; import com.provectus.kafka.ui.pages.MainPage;
import com.provectus.kafka.ui.pages.connector.ConnectorCreateView; import com.provectus.kafka.ui.pages.connector.ConnectorCreateForm;
import com.provectus.kafka.ui.pages.connector.ConnectorsList; import com.provectus.kafka.ui.pages.connector.ConnectorDetails;
import com.provectus.kafka.ui.pages.connector.ConnectorsView; import com.provectus.kafka.ui.pages.connector.KafkaConnectList;
import com.provectus.kafka.ui.pages.schema.SchemaCreateView; import com.provectus.kafka.ui.pages.schema.SchemaCreateForm;
import com.provectus.kafka.ui.pages.schema.SchemaEditView; import com.provectus.kafka.ui.pages.schema.SchemaDetails;
import com.provectus.kafka.ui.pages.schema.SchemaRegistryList; 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.ProduceMessagePanel;
import com.provectus.kafka.ui.pages.topic.TopicCreateEditSettingsView; import com.provectus.kafka.ui.pages.topic.TopicCreateEditForm;
import com.provectus.kafka.ui.pages.topic.TopicView; import com.provectus.kafka.ui.pages.topic.TopicDetails;
import com.provectus.kafka.ui.pages.topic.TopicsList; import com.provectus.kafka.ui.pages.topic.TopicsList;
public abstract class Facade { public abstract class Facade {
protected MainPage mainPage = new MainPage(); protected MainPage mainPage = new MainPage();
protected ApiHelper apiHelper = new ApiHelper(); protected ApiHelper apiHelper = new ApiHelper();
protected ConnectorCreateView connectorCreateView = new ConnectorCreateView(); protected ConnectorCreateForm connectorCreateForm = new ConnectorCreateForm();
protected ConnectorsList connectorsList = new ConnectorsList(); protected KafkaConnectList kafkaConnectList = new KafkaConnectList();
protected ConnectorsView connectorsView = new ConnectorsView(); protected ConnectorDetails connectorDetails = new ConnectorDetails();
protected SchemaCreateView schemaCreateView = new SchemaCreateView(); protected SchemaCreateForm schemaCreateForm = new SchemaCreateForm();
protected SchemaEditView schemaEditView = new SchemaEditView(); protected SchemaDetails schemaDetails = new SchemaDetails();
protected SchemaView schemaView = new SchemaView();
protected SchemaRegistryList schemaRegistryList = new SchemaRegistryList(); protected SchemaRegistryList schemaRegistryList = new SchemaRegistryList();
protected ProduceMessagePanel produceMessagePanel = new ProduceMessagePanel(); protected ProduceMessagePanel produceMessagePanel = new ProduceMessagePanel();
protected TopicCreateEditSettingsView topicCreateEditSettingsView = new TopicCreateEditSettingsView(); protected TopicCreateEditForm topicCreateEditForm = new TopicCreateEditForm();
protected TopicsList topicsList = new TopicsList(); protected TopicsList topicsList = new TopicsList();
protected TopicView topicView = new TopicView(); protected TopicDetails topicDetails = new TopicDetails();
} }

View file

@ -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"));
connectorsList.goTo(CLUSTER_NAME) kafkaConnectList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.clickCreateConnectorButton() .clickCreateConnectorButton()
.waitUntilScreenReady() .waitUntilScreenReady()
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig()); .setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
connectorsList.goTo(CLUSTER_NAME) kafkaConnectList.goTo(CLUSTER_NAME)
.waitUntilScreenReady(); .waitUntilScreenReady();
Assertions.assertTrue(connectorsList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()"); Assertions.assertTrue(kafkaConnectList.isConnectorVisible(connectorForCreate.getName()),"isConnectorVisible()");
CONNECTOR_LIST.add(connectorForCreate); CONNECTOR_LIST.add(connectorForCreate);
} }
@ -77,14 +77,14 @@ public class ConnectorsTests extends BaseTest {
@CaseId(196) @CaseId(196)
@Test @Test
public void updateConnector() { public void updateConnector() {
connectorsList.goTo(CLUSTER_NAME) kafkaConnectList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openConnector(CONNECTOR_FOR_UPDATE.getName()); .openConnector(CONNECTOR_FOR_UPDATE.getName());
connectorsView.waitUntilScreenReady() connectorDetails.waitUntilScreenReady()
.openConfigTab() .openConfigTab()
.setConfig(CONNECTOR_FOR_UPDATE.getConfig()); .setConfig(CONNECTOR_FOR_UPDATE.getConfig());
connectorsList.goTo(CLUSTER_NAME); kafkaConnectList.goTo(CLUSTER_NAME);
Assertions.assertTrue(connectorsList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()"); Assertions.assertTrue(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_UPDATE.getName()),"isConnectorVisible()");
} }
@DisplayName("should delete connector") @DisplayName("should delete connector")
@ -93,16 +93,16 @@ public class ConnectorsTests extends BaseTest {
@CaseId(195) @CaseId(195)
@Test @Test
public void deleteConnector() { public void deleteConnector() {
connectorsList.goTo(CLUSTER_NAME) kafkaConnectList.goTo(CLUSTER_NAME)
.waitUntilScreenReady() .waitUntilScreenReady()
.openConnector(CONNECTOR_FOR_DELETE.getName()); .openConnector(CONNECTOR_FOR_DELETE.getName());
connectorsView connectorDetails
.waitUntilScreenReady() .waitUntilScreenReady()
.openDotMenu() .openDotMenu()
.clickDeleteButton() .clickDeleteButton()
.clickConfirmButton(); .clickConfirmButton();
connectorsList.goTo(CLUSTER_NAME); kafkaConnectList.goTo(CLUSTER_NAME);
Assertions.assertFalse(connectorsList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()"); Assertions.assertFalse(kafkaConnectList.isConnectorVisible(CONNECTOR_FOR_DELETE.getName()), "isConnectorVisible()");
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE); CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
} }

View file

@ -4,7 +4,7 @@ import com.provectus.kafka.ui.api.model.CompatibilityLevel;
import com.provectus.kafka.ui.base.BaseTest; import com.provectus.kafka.ui.base.BaseTest;
import com.provectus.kafka.ui.models.Schema; import com.provectus.kafka.ui.models.Schema;
import com.provectus.kafka.ui.pages.MainPage; import com.provectus.kafka.ui.pages.MainPage;
import com.provectus.kafka.ui.pages.schema.SchemaView; import com.provectus.kafka.ui.pages.schema.SchemaDetails;
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status; import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
@ -69,12 +69,12 @@ public class SchemasTests extends BaseTest {
schemaRegistryList.openSchema(AVRO_API.getName()) schemaRegistryList.openSchema(AVRO_API.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.openEditSchema(); .openEditSchema();
Assertions.assertTrue(schemaEditView.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()"); Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
schemaEditView.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE) schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
.setNewSchemaValue(fileToString(AVRO_API.getValuePath())) .setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
.clickSubmit() .clickSubmit()
.waitUntilScreenReady(); .waitUntilScreenReady();
Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaView().getCompatibility(), "getCompatibility()"); Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaDetails().getCompatibility(), "getCompatibility()");
} }
@DisplayName("should delete AVRO schema") @DisplayName("should delete AVRO schema")

View file

@ -3,7 +3,7 @@ package com.provectus.kafka.ui.tests;
import com.provectus.kafka.ui.base.BaseTest; import com.provectus.kafka.ui.base.BaseTest;
import com.provectus.kafka.ui.models.Topic; import com.provectus.kafka.ui.models.Topic;
import com.provectus.kafka.ui.pages.MainPage; import com.provectus.kafka.ui.pages.MainPage;
import com.provectus.kafka.ui.pages.topic.TopicView; import com.provectus.kafka.ui.pages.topic.TopicDetails;
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite; import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status; import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
@ -81,10 +81,10 @@ public class TopicTests extends BaseTest {
.waitUntilScreenReady() .waitUntilScreenReady()
.openEditSettings(); .openEditSettings();
SoftAssertions softly = new SoftAssertions(); SoftAssertions softly = new SoftAssertions();
softly.assertThat(topicCreateEditSettingsView.getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue()); softly.assertThat(topicCreateEditForm.getCleanupPolicy()).as("Cleanup Policy").isEqualTo(TOPIC_FOR_UPDATE.getCompactPolicyValue());
softly.assertThat(topicCreateEditSettingsView.getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData()); softly.assertThat(topicCreateEditForm.getTimeToRetain()).as("Time to retain").isEqualTo(TOPIC_FOR_UPDATE.getTimeToRetainData());
softly.assertThat(topicCreateEditSettingsView.getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk()); softly.assertThat(topicCreateEditForm.getMaxSizeOnDisk()).as("Max size on disk").isEqualTo(TOPIC_FOR_UPDATE.getMaxSizeOnDisk());
softly.assertThat(topicCreateEditSettingsView.getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes()); softly.assertThat(topicCreateEditForm.getMaxMessageBytes()).as("Max message bytes").isEqualTo(TOPIC_FOR_UPDATE.getMaxMessageBytes());
softly.assertAll(); softly.assertAll();
} }
@ -115,14 +115,14 @@ public class TopicTests extends BaseTest {
.waitUntilScreenReady() .waitUntilScreenReady()
.openTopic(TOPIC_FOR_UPDATE.getName()) .openTopic(TOPIC_FOR_UPDATE.getName())
.waitUntilScreenReady() .waitUntilScreenReady()
.openTopicMenu(TopicView.TopicMenu.MESSAGES) .openTopicMenu(TopicDetails.TopicMenu.MESSAGES)
.clickOnButton("Produce Message") .clickOnButton("Produce Message")
.setContentFiled(TOPIC_FOR_UPDATE.getMessageContent()) .setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey()) .setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
.submitProduceMessage(); .submitProduceMessage();
SoftAssertions softly = new SoftAssertions(); SoftAssertions softly = new SoftAssertions();
softly.assertThat(topicView.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue(); softly.assertThat(topicDetails.isKeyMessageVisible((TOPIC_FOR_UPDATE.getMessageKey()))).withFailMessage("isKeyMessageVisible()").isTrue();
softly.assertThat(topicView.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue(); softly.assertThat(topicDetails.isContentMessageVisible((TOPIC_FOR_UPDATE.getMessageContent()).trim())).withFailMessage("isContentMessageVisible()").isTrue();
softly.assertAll(); softly.assertAll();
} }