Skip to content

Commit 5255e05

Browse files
authored
Merge branch 'master' into partitions_reassignment
2 parents 4cf8f7a + 7e82e74 commit 5255e05

File tree

30 files changed

+475
-383
lines changed

30 files changed

+475
-383
lines changed

charts/kafka-ui/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ apiVersion: v2
22
name: kafka-ui
33
description: A Helm chart for kafka-UI
44
type: application
5-
version: 0.4.5
5+
version: 0.4.6
66
appVersion: v0.4.0
77
icon: https://github.com/provectus/kafka-ui/raw/master/documentation/images/kafka-ui-logo.png

charts/kafka-ui/templates/deployment.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ spec:
8787
{{- $contextPath := .Values.envs.config.SERVER_SERVLET_CONTEXT_PATH | default "" | printf "%s/actuator/health" | urlParse }}
8888
path: {{ get $contextPath "path" }}
8989
port: http
90+
{{- if .Values.probes.useHttpsScheme }}
91+
scheme: HTTPS
92+
{{- end }}
9093
initialDelaySeconds: 60
9194
periodSeconds: 30
9295
timeoutSeconds: 10
@@ -95,6 +98,9 @@ spec:
9598
{{- $contextPath := .Values.envs.config.SERVER_SERVLET_CONTEXT_PATH | default "" | printf "%s/actuator/health" | urlParse }}
9699
path: {{ get $contextPath "path" }}
97100
port: http
101+
{{- if .Values.probes.useHttpsScheme }}
102+
scheme: HTTPS
103+
{{- end }}
98104
initialDelaySeconds: 60
99105
periodSeconds: 30
100106
timeoutSeconds: 10

charts/kafka-ui/values.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ podLabels: {}
7373
##
7474
annotations: {}
7575

76+
## Set field schema as HTTPS for readines and liveness probe
77+
##
78+
probes:
79+
useHttpsScheme: false
80+
7681
podSecurityContext:
7782
{}
7883
# fsGroup: 2000

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/BasePage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public abstract class BasePage extends WebUtils {
1818
protected SelenideElement alertMessage = $x("//div[@role='alert']//div[@role='contentinfo']");
1919
protected String summaryCellLocator = "//div[contains(text(),'%s')]";
2020
protected String tableElementNameLocator = "//tbody//a[contains(text(),'%s')]";
21-
protected String сolumnHeaderLocator = "//table//tr/th/div[text()='%s']";
21+
protected String columnHeaderLocator = "//table//tr/th/div[text()='%s']";
2222

2323
protected void waitUntilSpinnerDisappear() {
2424
log.debug("\nwaitUntilSpinnerDisappear");

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/brokers/BrokersDetails.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ public BrokersDetails waitUntilScreenReady() {
2626

2727
private List<SelenideElement> getVisibleColumnHeaders() {
2828
return Stream.of("Name", "Topics", "Error", "Partitions")
29-
.map(name -> $x(String.format(сolumnHeaderLocator, name)))
29+
.map(name -> $x(String.format(columnHeaderLocator, name)))
3030
.collect(Collectors.toList());
3131
}
3232

3333
private List<SelenideElement> getEnabledColumnHeaders() {
3434
return Stream.of("Name", "Error")
35-
.map(name -> $x(String.format(сolumnHeaderLocator, name)))
35+
.map(name -> $x(String.format(columnHeaderLocator, name)))
3636
.collect(Collectors.toList());
3737
}
3838

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/connector/KafkaConnectList.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
import com.codeborne.selenide.Condition;
66
import com.codeborne.selenide.SelenideElement;
77
import com.provectus.kafka.ui.pages.BasePage;
8-
import com.provectus.kafka.ui.utilities.WaitUtils;
98
import io.qameta.allure.Step;
10-
import lombok.experimental.ExtensionMethod;
119

1210

13-
@ExtensionMethod(WaitUtils.class)
1411
public class KafkaConnectList extends BasePage {
1512

1613
protected SelenideElement createConnectorBtn = $x("//button[contains(text(),'Create Connector')]");

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaCreateForm.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.provectus.kafka.ui.pages.schema;
22

33
import static com.codeborne.selenide.Selenide.$;
4+
import static com.codeborne.selenide.Selenide.$$x;
45
import static com.codeborne.selenide.Selenide.$x;
56

67
import com.codeborne.selenide.Condition;
@@ -9,6 +10,7 @@
910
import com.provectus.kafka.ui.api.model.SchemaType;
1011
import com.provectus.kafka.ui.pages.BasePage;
1112
import io.qameta.allure.Step;
13+
import java.util.List;
1214

1315
public class SchemaCreateForm extends BasePage {
1416

@@ -19,7 +21,10 @@ public class SchemaCreateForm extends BasePage {
1921
protected SelenideElement schemaTypeDdl = $x("//ul[@name='schemaType']");
2022
protected SelenideElement compatibilityLevelList = $x("//ul[@name='compatibilityLevel']");
2123
protected SelenideElement newSchemaTextArea = $x("//div[@id='newSchema']");
22-
protected String elementLocatorDdl = "//li[@value='%s']";
24+
protected SelenideElement schemaVersionDdl = $$x("//ul[@role='listbox']/li[text()='Version 2']").first();
25+
protected List<SelenideElement> visibleMarkers = $$x("//div[@class='ace_scroller']//div[contains(@class,'codeMarker')]");
26+
protected List<SelenideElement> elementsCompareVersionDdl = $$x("//ul[@role='listbox']/ul/li");
27+
protected String ddlElementLocator = "//li[@value='%s']";
2328

2429
@Step
2530
public SchemaCreateForm waitUntilScreenReady(){
@@ -43,7 +48,7 @@ public SchemaCreateForm setSchemaField(String text) {
4348
@Step
4449
public SchemaCreateForm selectSchemaTypeFromDropdown(SchemaType schemaType) {
4550
schemaTypeDdl.shouldBe(Condition.enabled).click();
46-
$x(String.format(elementLocatorDdl, schemaType.getValue())).shouldBe(Condition.visible).click();
51+
$x(String.format(ddlElementLocator, schemaType.getValue())).shouldBe(Condition.visible).click();
4752
return this;
4853
}
4954

@@ -56,10 +61,32 @@ public SchemaCreateForm clickSubmitButton() {
5661
@Step
5762
public SchemaCreateForm selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum level) {
5863
compatibilityLevelList.shouldBe(Condition.enabled).click();
59-
$x(String.format(elementLocatorDdl, level.getValue())).shouldBe(Condition.visible).click();
64+
$x(String.format(ddlElementLocator, level.getValue())).shouldBe(Condition.visible).click();
6065
return this;
6166
}
6267

68+
@Step
69+
public SchemaCreateForm openSchemaVersionDdl(){
70+
schemaVersionDdl.shouldBe(Condition.enabled).click();
71+
return this;
72+
}
73+
74+
@Step
75+
public int getVersionsNumberFromList(){
76+
return elementsCompareVersionDdl.size();
77+
}
78+
79+
@Step
80+
public SchemaCreateForm selectVersionFromDropDown(int versionNumberDd){
81+
$x(String.format(ddlElementLocator,versionNumberDd)).shouldBe(Condition.visible).click();
82+
return this;
83+
}
84+
85+
@Step
86+
public int getMarkedLinesNumber(){
87+
return visibleMarkers.size();
88+
}
89+
6390
@Step
6491
public SchemaCreateForm setNewSchemaValue(String configJson) {
6592
newSchemaTextArea.shouldBe(Condition.visible).click();

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/schema/SchemaDetails.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ public class SchemaDetails extends BasePage {
1414
protected SelenideElement editSchemaBtn = $x("//button[contains(text(),'Edit Schema')]");
1515
protected SelenideElement removeBtn = $x("//*[contains(text(),'Remove')]");
1616
protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
17-
protected SelenideElement schemaTypeDdl = $x("//h4[contains(text(),'Type')]/../p");
17+
protected SelenideElement schemaTypeField = $x("//h4[contains(text(),'Type')]/../p");
18+
protected SelenideElement latestVersionField = $x("//h4[contains(text(),'Latest version')]/../p");
19+
protected SelenideElement compareVersionBtn = $x("//button[text()='Compare Versions']");
1820
protected String schemaHeaderLocator = "//h1[contains(text(),'%s')]";
1921

2022
@Step
@@ -34,9 +36,14 @@ public boolean isSchemaHeaderVisible(String schemaName) {
3436
return isVisible($x(String.format(schemaHeaderLocator,schemaName)));
3537
}
3638

39+
@Step
40+
public int getLatestVersion(){
41+
return Integer.parseInt(latestVersionField.getText());
42+
}
43+
3744
@Step
3845
public String getSchemaType() {
39-
return schemaTypeDdl.getText();
46+
return schemaTypeField.getText();
4047
}
4148

4249
@Step
@@ -45,6 +52,12 @@ public SchemaDetails openEditSchema(){
4552
return this;
4653
}
4754

55+
@Step
56+
public SchemaDetails openCompareVersionMenu(){
57+
compareVersionBtn.shouldBe(Condition.enabled).click();
58+
return this;
59+
}
60+
4861
@Step
4962
public SchemaDetails removeSchema() {
5063
clickByJavaScript(dotMenuBtn);

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicDetails.java

Lines changed: 79 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,26 @@
1010
import com.codeborne.selenide.ElementsCollection;
1111
import com.codeborne.selenide.SelenideElement;
1212
import com.provectus.kafka.ui.pages.BasePage;
13-
import com.provectus.kafka.ui.utilities.WaitUtils;
1413
import io.qameta.allure.Step;
1514
import java.util.ArrayList;
15+
import java.util.Arrays;
1616
import java.util.List;
17-
import lombok.experimental.ExtensionMethod;
1817
import org.openqa.selenium.By;
1918

20-
@ExtensionMethod({WaitUtils.class})
2119
public class TopicDetails extends BasePage {
2220

2321
protected SelenideElement clearMessagesBtn = $x(("//div[contains(text(), 'Clear messages')]"));
2422
protected SelenideElement messageAmountCell = $x("//tbody/tr/td[5]");
2523
protected SelenideElement overviewTab = $x("//a[contains(text(),'Overview')]");
2624
protected SelenideElement messagesTab = $x("//a[contains(text(),'Messages')]");
25+
protected SelenideElement addFiltersBtn = $x("//button[text()='Add Filters']");
26+
protected SelenideElement savedFiltersField = $x("//div[text()='Saved Filters']");
27+
protected SelenideElement addFilterCodeModalTitle = $x("//label[text()='Filter code']");
28+
protected SelenideElement addFilterCodeInput = $x("//div[@id='ace-editor']//textarea");
29+
protected SelenideElement saveThisFilterCheckBoxAddFilterMdl = $x("//input[@name='saveFilter']");
30+
protected SelenideElement displayNameInputAddFilterMdl = $x("//input[@placeholder='Enter Name']");
31+
protected SelenideElement cancelBtnAddFilterMdl = $x("//button[text()='Cancel']");
32+
protected SelenideElement addFilterBtnAddFilterMdl = $x("//button[text()='Add filter']");
2733
protected SelenideElement editSettingsMenu = $x("//li[@role][contains(text(),'Edit settings')]");
2834
protected SelenideElement removeTopicBtn = $x("//ul[@role='menu']//div[contains(text(),'Remove Topic')]");
2935
protected SelenideElement confirmBtn = $x("//div[@role='dialog']//button[contains(text(),'Confirm')]");
@@ -34,6 +40,7 @@ public class TopicDetails extends BasePage {
3440
protected ElementsCollection messageGridItems = $$x("//tbody//tr");
3541
protected String consumerIdLocator = "//a[@title='%s']";
3642
protected String topicHeaderLocator = "//h1[contains(text(),'%s')]";
43+
protected String filterNameLocator = "//*[@data-testid='activeSmartFilter']";
3744

3845
@Step
3946
public TopicDetails waitUntilScreenReady() {
@@ -106,6 +113,58 @@ public TopicDetails clickProduceMessageBtn() {
106113
return this;
107114
}
108115

116+
@Step
117+
public TopicDetails clickMessagesAddFiltersBtn() {
118+
addFiltersBtn.shouldBe(Condition.enabled).click();
119+
return this;
120+
}
121+
122+
@Step
123+
public TopicDetails waitUntilAddFiltersMdlVisible() {
124+
addFilterCodeModalTitle.shouldBe(Condition.visible);
125+
return this;
126+
}
127+
128+
@Step
129+
public TopicDetails clickAddFilterBtnAddFilterMdl() {
130+
addFilterBtnAddFilterMdl.shouldBe(Condition.enabled).click();
131+
addFilterCodeModalTitle.shouldBe(Condition.hidden);
132+
return this;
133+
}
134+
135+
@Step
136+
public TopicDetails setFilterCodeFieldAddFilterMdl(String filterCode) {
137+
addFilterCodeInput.shouldBe(Condition.enabled).sendKeys(filterCode);
138+
return this;
139+
}
140+
141+
@Step
142+
public boolean isSaveThisFilterCheckBoxSelected() {
143+
return isSelected(saveThisFilterCheckBoxAddFilterMdl);
144+
}
145+
146+
@Step
147+
public boolean isAddFilterBtnAddFilterMdlEnabled() {
148+
return isEnabled(addFilterBtnAddFilterMdl);
149+
}
150+
151+
@Step
152+
public String getFilterName() {
153+
return $x(filterNameLocator).getText();
154+
}
155+
156+
public List<SelenideElement> getAllAddFilterModalVisibleElements() {
157+
return Arrays.asList(savedFiltersField, displayNameInputAddFilterMdl, addFilterBtnAddFilterMdl, cancelBtnAddFilterMdl);
158+
}
159+
160+
public List<SelenideElement> getAllAddFilterModalEnabledElements() {
161+
return Arrays.asList(displayNameInputAddFilterMdl, cancelBtnAddFilterMdl);
162+
}
163+
164+
public List<SelenideElement> getAllAddFilterModalDisabledElements() {
165+
return Arrays.asList(addFilterBtnAddFilterMdl);
166+
}
167+
109168
@Step
110169
public TopicDetails openConsumerGroup(String consumerId) {
111170
$x(String.format(consumerIdLocator, consumerId)).click();
@@ -146,6 +205,23 @@ public TopicDetails.MessageGridItem getRandomMessage() {
146205
return getMessage(nextInt(initItems().size() - 1));
147206
}
148207

208+
public enum TopicMenu {
209+
OVERVIEW("Overview"),
210+
MESSAGES("Messages"),
211+
CONSUMERS("Consumers"),
212+
SETTINGS("Settings");
213+
214+
private final String value;
215+
216+
TopicMenu(String value) {
217+
this.value = value;
218+
}
219+
220+
public String toString() {
221+
return value;
222+
}
223+
}
224+
149225
public static class MessageGridItem extends BasePage {
150226

151227
private final SelenideElement element;
@@ -211,21 +287,4 @@ public MessageGridItem clickSaveAsFile() {
211287
return this;
212288
}
213289
}
214-
215-
public enum TopicMenu {
216-
OVERVIEW("Overview"),
217-
MESSAGES("Messages"),
218-
CONSUMERS("Consumers"),
219-
SETTINGS("Settings");
220-
221-
private final String value;
222-
223-
TopicMenu(String value) {
224-
this.value = value;
225-
}
226-
227-
public String toString() {
228-
return value;
229-
}
230-
}
231290
}

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/topic/TopicsList.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,16 @@
55
import com.codeborne.selenide.Condition;
66
import com.codeborne.selenide.SelenideElement;
77
import com.provectus.kafka.ui.pages.BasePage;
8-
import com.provectus.kafka.ui.utilities.WaitUtils;
98
import io.qameta.allure.Step;
109
import java.util.ArrayList;
1110
import java.util.Arrays;
1211
import java.util.List;
1312
import java.util.stream.Collectors;
1413
import java.util.stream.Stream;
15-
import lombok.experimental.ExtensionMethod;
1614

17-
@ExtensionMethod(WaitUtils.class)
1815
public class TopicsList extends BasePage {
1916

20-
protected SelenideElement topicListHeader = $x("//h1[text()='Topics']");
17+
protected SelenideElement topicListHeader = $x("//*[text()='Topics']");
2118
protected SelenideElement addTopicBtn = $x("//button[normalize-space(text()) ='Add a Topic']");
2219
protected SelenideElement searchField = $x("//input[@placeholder='Search by Topic Name']");
2320
protected SelenideElement showInternalRadioBtn = $x("//input[@name='ShowInternalTopics']");
@@ -56,13 +53,13 @@ private List<SelenideElement> getActionButtons() {
5653

5754
private List<SelenideElement> getVisibleColumnHeaders() {
5855
return Stream.of("Replication Factor","Number of messages","Topic Name", "Partitions", "Out of sync replicas", "Size")
59-
.map(name -> $x(String.format(сolumnHeaderLocator, name)))
56+
.map(name -> $x(String.format(columnHeaderLocator, name)))
6057
.collect(Collectors.toList());
6158
}
6259

6360
private List<SelenideElement> getEnabledColumnHeaders(){
6461
return Stream.of("Topic Name", "Partitions", "Out of sync replicas", "Size")
65-
.map(name -> $x(String.format(сolumnHeaderLocator, name)))
62+
.map(name -> $x(String.format(columnHeaderLocator, name)))
6663
.collect(Collectors.toList());
6764
}
6865

0 commit comments

Comments
 (0)