get rid of SheakyThrows annotation (#2470)
* Fix unstable e2e test #2373
* Fix unstable e2e test #2373
* Prepare steps for Schema Registry and Connector fixed #2288
* Fix unstable e2e test #2373
* Revert "Prepare steps for Schema Registry and Connector fixed #2288"
This reverts commit cfeb224e99
.
* fix FileUtils
* Update FileUtils #2431
* Resolved MConflicts #2431Сopy
* Resolved MConflicts part2 #2431Сopy
* Updated ApiHelper and added annotations #2431Сopy
* Revert Objects.requireNonNull #2431Сopy
* Last update #2431Сopy
* Delete KaffkaSteps
* Update ApiHelper
Co-authored-by: anezboretskiy <anezboretskiy@modeln.com>
This commit is contained in:
parent
d63c25e317
commit
c0d64d7c56
12 changed files with 184 additions and 200 deletions
|
@ -5,11 +5,23 @@ import org.testcontainers.shaded.org.apache.commons.io.IOUtils;
|
|||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.apache.kafka.common.utils.Utils.readFileAsString;
|
||||
|
||||
public class FileUtils {
|
||||
|
||||
public static String getResourceAsString(String resourceFileName) throws IOException {
|
||||
return IOUtils.resourceToString("/" + resourceFileName, StandardCharsets.UTF_8);
|
||||
public static String getResourceAsString(String resourceFileName) {
|
||||
try {
|
||||
return IOUtils.resourceToString("/" + resourceFileName, StandardCharsets.UTF_8);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String fileToString(String path) {
|
||||
try {
|
||||
return readFileAsString(path);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,11 +3,10 @@ package com.provectus.kafka.ui.pages;
|
|||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.pages.topic.TopicsList;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
|
@ -32,7 +31,6 @@ public class MainPage {
|
|||
return this;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public void topicIsVisible(String topicName) {
|
||||
new TopicsList().isTopicVisible(topicName);
|
||||
|
@ -43,18 +41,18 @@ public class MainPage {
|
|||
}
|
||||
|
||||
|
||||
public enum SideMenuOptions {
|
||||
BROKERS("Brokers"),
|
||||
TOPICS("Topics"),
|
||||
CONSUMERS("Consumers"),
|
||||
SCHEMA_REGISTRY("Schema Registry");
|
||||
public enum SideMenuOptions {
|
||||
BROKERS("Brokers"),
|
||||
TOPICS("Topics"),
|
||||
CONSUMERS("Consumers"),
|
||||
SCHEMA_REGISTRY("Schema Registry");
|
||||
|
||||
final String value;
|
||||
final String value;
|
||||
|
||||
SideMenuOptions(String value) {
|
||||
this.value = value;
|
||||
SideMenuOptions(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,15 +2,15 @@ package com.provectus.kafka.ui.pages.connector;
|
|||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.$;
|
||||
import static com.codeborne.selenide.Selenide.sleep;
|
||||
import static com.provectus.kafka.ui.screenshots.Screenshooter.log;
|
||||
import static java.lang.Thread.sleep;
|
||||
|
||||
@ExtensionMethod(WaitUtils.class)
|
||||
public class ConnectorCreateView {
|
||||
|
@ -22,7 +22,7 @@ public class ConnectorCreateView {
|
|||
private static final String path = "/ui/clusters/secondLocal/connectors/create_new";
|
||||
|
||||
@Step("Set connector config JSON")
|
||||
public ConnectorsView setConnectorConfig(String connectName, String configJson) throws InterruptedException {
|
||||
public ConnectorsView setConnectorConfig(String connectName, String configJson) {
|
||||
nameField.setValue(connectName);
|
||||
$("#config").click();
|
||||
contentTextArea.setValue("");
|
||||
|
|
|
@ -2,11 +2,10 @@ package com.provectus.kafka.ui.pages.connector;
|
|||
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
|
@ -35,14 +34,14 @@ public class ConnectorsList {
|
|||
return new ConnectorCreateView();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
|
||||
@Step
|
||||
public ConnectorsList openConnector(String connectorName) {
|
||||
$(By.linkText(connectorName)).click();
|
||||
return this;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
|
||||
@Step
|
||||
public ConnectorsList isNotVisible(String connectorName) {
|
||||
$(By.xpath("//table")).shouldBe(Condition.visible);
|
||||
|
@ -52,8 +51,8 @@ public class ConnectorsList {
|
|||
|
||||
@Step("Verify that connector {connectorName} is visible in the list")
|
||||
public ConnectorsList connectorIsVisibleInList(String connectorName, String topicName) {
|
||||
$x("//table//a[@href='/ui/clusters/local/connects/first/connectors/" + connectorName +"']").shouldBe(Condition.visible);
|
||||
$$(By.linkText(topicName));
|
||||
$x("//table//a[@href='/ui/clusters/local/connects/first/connectors/" + connectorName + "']").shouldBe(Condition.visible);
|
||||
$$(By.linkText(topicName));
|
||||
return this;
|
||||
}
|
||||
@Step
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.codeborne.selenide.Condition;
|
|||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.SneakyThrows;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
import static com.codeborne.selenide.Selenide.*;
|
||||
|
@ -23,10 +22,9 @@ public class SchemaRegistryList {
|
|||
return new SchemaView();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public SchemaRegistryList isNotVisible(String schemaName) {
|
||||
$x(String.format("//*[contains(text(),'%s')]",schemaName)).shouldNotBe(Condition.visible);
|
||||
$x(String.format("//*[contains(text(),'%s')]", schemaName)).shouldNotBe(Condition.visible);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,11 @@ package com.provectus.kafka.ui.pages.topic;
|
|||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.codeborne.selenide.SelenideElement;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.pages.ProduceMessagePage;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
|
@ -34,7 +33,6 @@ public class TopicView {
|
|||
return this;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public TopicCreateEditSettingsView openEditSettings() {
|
||||
BrowserUtils.javaExecutorClick(dotMenuHeader);
|
||||
|
@ -48,7 +46,6 @@ public class TopicView {
|
|||
return this;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public TopicsList deleteTopic() {
|
||||
BrowserUtils.javaExecutorClick(dotMenuHeader);
|
||||
|
@ -57,7 +54,6 @@ public class TopicView {
|
|||
return new TopicsList();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public ProduceMessagePage clickOnButton(String buttonName) {
|
||||
BrowserUtils.javaExecutorClick($(By.xpath(String.format("//div//button[text()='%s']", buttonName))));
|
||||
|
|
|
@ -3,11 +3,10 @@ package com.provectus.kafka.ui.pages.topic;
|
|||
import com.codeborne.selenide.CollectionCondition;
|
||||
import com.codeborne.selenide.Condition;
|
||||
import com.codeborne.selenide.Selenide;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.extensions.WaitUtils;
|
||||
import com.provectus.kafka.ui.helpers.TestConfiguration;
|
||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||
import io.qameta.allure.Step;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.ExtensionMethod;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
|
@ -32,7 +31,7 @@ public class TopicsList {
|
|||
}
|
||||
|
||||
@Step
|
||||
public TopicCreateEditSettingsView pressCreateNewTopic(){
|
||||
public TopicCreateEditSettingsView pressCreateNewTopic() {
|
||||
BrowserUtils.javaExecutorClick($x("//button[normalize-space(text()) ='Add a Topic']"));
|
||||
return new TopicCreateEditSettingsView();
|
||||
}
|
||||
|
@ -46,14 +45,12 @@ public class TopicsList {
|
|||
return this;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public TopicView openTopic(String topicName) {
|
||||
$(By.linkText(topicName)).click();
|
||||
return new TopicView();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Step
|
||||
public TopicsList isTopicNotVisible(String topicName) {
|
||||
$$x("//table/tbody/tr/td[2]")
|
||||
|
|
|
@ -16,6 +16,7 @@ import javax.imageio.ImageIO;
|
|||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -23,131 +24,139 @@ import static com.codeborne.selenide.WebDriverRunner.getWebDriver;
|
|||
|
||||
public class Screenshooter {
|
||||
|
||||
public static Logger log = LoggerFactory.getLogger(Screenshooter.class);
|
||||
public static Logger log = LoggerFactory.getLogger(Screenshooter.class);
|
||||
|
||||
private static final int PIXELS_THRESHOLD =
|
||||
Integer.parseInt(System.getProperty("PIXELS_THRESHOLD", "200"));
|
||||
private static final String SCREENSHOTS_FOLDER =
|
||||
System.getProperty("SCREENSHOTS_FOLDER", "com/provectus/kafka/ui/screenshots/");
|
||||
private static final String DIFF_SCREENSHOTS_FOLDER =
|
||||
System.getProperty("DIFF_SCREENSHOTS_FOLDER", "build/__diff__/");
|
||||
private static final String ACTUAL_SCREENSHOTS_FOLDER =
|
||||
System.getProperty("ACTUAL_SCREENSHOTS_FOLDER", "build/__actual__/");
|
||||
private static final boolean SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST =
|
||||
Boolean.parseBoolean(System.getProperty("SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST", "true"));
|
||||
private static final boolean TURN_OFF_SCREENSHOTS =
|
||||
Boolean.parseBoolean(System.getProperty("TURN_OFF_SCREENSHOTS", "false"));
|
||||
private static final boolean USE_LOCAL_BROWSER =
|
||||
Boolean.parseBoolean(System.getProperty("USE_LOCAL_BROWSER", "false"));
|
||||
private static final int PIXELS_THRESHOLD =
|
||||
Integer.parseInt(System.getProperty("PIXELS_THRESHOLD", "200"));
|
||||
private static final String SCREENSHOTS_FOLDER =
|
||||
System.getProperty("SCREENSHOTS_FOLDER", "com/provectus/kafka/ui/screenshots/");
|
||||
private static final String DIFF_SCREENSHOTS_FOLDER =
|
||||
System.getProperty("DIFF_SCREENSHOTS_FOLDER", "build/__diff__/");
|
||||
private static final String ACTUAL_SCREENSHOTS_FOLDER =
|
||||
System.getProperty("ACTUAL_SCREENSHOTS_FOLDER", "build/__actual__/");
|
||||
private static final boolean SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST =
|
||||
Boolean.parseBoolean(System.getProperty("SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST", "true"));
|
||||
private static final boolean TURN_OFF_SCREENSHOTS =
|
||||
Boolean.parseBoolean(System.getProperty("TURN_OFF_SCREENSHOTS", "false"));
|
||||
private static final boolean USE_LOCAL_BROWSER =
|
||||
Boolean.parseBoolean(System.getProperty("USE_LOCAL_BROWSER", "false"));
|
||||
|
||||
private File newFile(String name) {
|
||||
var file = new File(name);
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
private File newFile(String name) {
|
||||
var file = new File(name);
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
return file;
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
public Screenshooter() {
|
||||
List.of(SCREENSHOTS_FOLDER, DIFF_SCREENSHOTS_FOLDER, ACTUAL_SCREENSHOTS_FOLDER)
|
||||
.forEach(this::newFile);
|
||||
}
|
||||
|
||||
public void compareScreenshots(String name) {
|
||||
compareScreenshots(name, false);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public void compareScreenshots(String name, boolean shouldUpdateScreenshotIfDiffer) {
|
||||
if (TURN_OFF_SCREENSHOTS || USE_LOCAL_BROWSER) {
|
||||
log.warn(String.format("compareScreenshots turned off due TURN_OFF_SCREENSHOTS || USE_LOCAL_BROWSER: %b || %b"
|
||||
, TURN_OFF_SCREENSHOTS,USE_LOCAL_BROWSER));
|
||||
return;
|
||||
public Screenshooter() {
|
||||
List.of(SCREENSHOTS_FOLDER, DIFF_SCREENSHOTS_FOLDER, ACTUAL_SCREENSHOTS_FOLDER)
|
||||
.forEach(this::newFile);
|
||||
}
|
||||
if (!doesScreenshotExist(name)) {
|
||||
if (SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST) {
|
||||
updateActualScreenshot(name);
|
||||
} else {
|
||||
throw new NoReferenceScreenshotFoundException(name);
|
||||
}
|
||||
} else {
|
||||
makeImageDiff(name, shouldUpdateScreenshotIfDiffer);
|
||||
|
||||
public void compareScreenshots(String name) {
|
||||
compareScreenshots(name, false);
|
||||
}
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private void updateActualScreenshot(String name) {
|
||||
Screenshot actual =
|
||||
new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(getWebDriver());
|
||||
File file= newFile(SCREENSHOTS_FOLDER + name + ".png");
|
||||
ImageIO.write(actual.getImage(), "png", file);
|
||||
log.debug(String.format("created screenshot: %s \n at %s", name, file.getAbsolutePath()));
|
||||
}
|
||||
|
||||
private static boolean doesScreenshotExist(String name) {
|
||||
return new File(SCREENSHOTS_FOLDER + name + ".png").exists();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private void makeImageDiff(String expectedName, boolean shouldUpdateScreenshotIfDiffer) {
|
||||
String fullPathNameExpected = SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
String fullPathNameActual = ACTUAL_SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
String fullPathNameDiff = DIFF_SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
|
||||
// activating allure plugin for showing diffs in report
|
||||
Allure.label("testType", "screenshotDiff");
|
||||
|
||||
Screenshot actual =
|
||||
new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(getWebDriver());
|
||||
ImageIO.write(actual.getImage(), "png", newFile(fullPathNameActual));
|
||||
|
||||
Screenshot expected = new Screenshot(ImageIO.read(newFile(fullPathNameExpected)));
|
||||
ImageDiff diff = new ImageDiffer().makeDiff(actual, expected);
|
||||
BufferedImage diffImage = diff.getMarkedImage();
|
||||
ImageIO.write(diffImage, "png", newFile(fullPathNameDiff));
|
||||
// adding to report
|
||||
diff(fullPathNameDiff);
|
||||
// adding to report
|
||||
actual(fullPathNameActual);
|
||||
// adding to report
|
||||
expected(fullPathNameExpected);
|
||||
|
||||
if (shouldUpdateScreenshotIfDiffer) {
|
||||
if (diff.getDiffSize() > PIXELS_THRESHOLD) {
|
||||
updateActualScreenshot(expectedName);
|
||||
}
|
||||
} else {
|
||||
Assertions.assertTrue(
|
||||
PIXELS_THRESHOLD >= diff.getDiffSize(),
|
||||
String.format("Amount of differing pixels should be less or equals than %s, actual %s\n"+
|
||||
"diff file: %s",
|
||||
PIXELS_THRESHOLD, diff.getDiffSize(), FileSystems.getDefault().getPath(fullPathNameDiff).normalize().toAbsolutePath()));
|
||||
public void compareScreenshots(String name, boolean shouldUpdateScreenshotIfDiffer) {
|
||||
if (TURN_OFF_SCREENSHOTS || USE_LOCAL_BROWSER) {
|
||||
log.warn(String.format("compareScreenshots turned off due TURN_OFF_SCREENSHOTS || USE_LOCAL_BROWSER: %b || %b"
|
||||
, TURN_OFF_SCREENSHOTS, USE_LOCAL_BROWSER));
|
||||
return;
|
||||
}
|
||||
if (!doesScreenshotExist(name)) {
|
||||
if (SHOULD_SAVE_SCREENSHOTS_IF_NOT_EXIST) {
|
||||
updateActualScreenshot(name);
|
||||
} else {
|
||||
try {
|
||||
throw new NoReferenceScreenshotFoundException(name);
|
||||
} catch (NoReferenceScreenshotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
makeImageDiff(name, shouldUpdateScreenshotIfDiffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private byte[] imgToBytes(String filename) {
|
||||
BufferedImage bImage2 = ImageIO.read(new File(filename));
|
||||
var bos2 = new ByteArrayOutputStream();
|
||||
ImageIO.write(bImage2, "png", bos2);
|
||||
return bos2.toByteArray();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Attachment
|
||||
private byte[] actual(String actualFileName) {
|
||||
return imgToBytes(actualFileName);
|
||||
}
|
||||
private void updateActualScreenshot(String name) {
|
||||
Screenshot actual =
|
||||
new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(getWebDriver());
|
||||
File file = newFile(SCREENSHOTS_FOLDER + name + ".png");
|
||||
try {
|
||||
ImageIO.write(actual.getImage(), "png", file);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
log.debug(String.format("created screenshot: %s \n at %s", name, file.getAbsolutePath()));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Attachment
|
||||
private byte[] expected(String expectedFileName) {
|
||||
return imgToBytes(expectedFileName);
|
||||
}
|
||||
private static boolean doesScreenshotExist(String name) {
|
||||
return new File(SCREENSHOTS_FOLDER + name + ".png").exists();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Attachment
|
||||
private byte[] diff(String diffFileName) {
|
||||
return imgToBytes(diffFileName);
|
||||
}
|
||||
@SneakyThrows
|
||||
private void makeImageDiff(String expectedName, boolean shouldUpdateScreenshotIfDiffer) {
|
||||
String fullPathNameExpected = SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
String fullPathNameActual = ACTUAL_SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
String fullPathNameDiff = DIFF_SCREENSHOTS_FOLDER + expectedName + ".png";
|
||||
|
||||
// activating allure plugin for showing diffs in report
|
||||
Allure.label("testType", "screenshotDiff");
|
||||
|
||||
Screenshot actual =
|
||||
new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(getWebDriver());
|
||||
ImageIO.write(actual.getImage(), "png", newFile(fullPathNameActual));
|
||||
|
||||
Screenshot expected = new Screenshot(ImageIO.read(newFile(fullPathNameExpected)));
|
||||
ImageDiff diff = new ImageDiffer().makeDiff(actual, expected);
|
||||
BufferedImage diffImage = diff.getMarkedImage();
|
||||
ImageIO.write(diffImage, "png", newFile(fullPathNameDiff));
|
||||
// adding to report
|
||||
diff(fullPathNameDiff);
|
||||
// adding to report
|
||||
actual(fullPathNameActual);
|
||||
// adding to report
|
||||
expected(fullPathNameExpected);
|
||||
|
||||
if (shouldUpdateScreenshotIfDiffer) {
|
||||
if (diff.getDiffSize() > PIXELS_THRESHOLD) {
|
||||
updateActualScreenshot(expectedName);
|
||||
}
|
||||
} else {
|
||||
Assertions.assertTrue(
|
||||
PIXELS_THRESHOLD >= diff.getDiffSize(),
|
||||
String.format("Amount of differing pixels should be less or equals than %s, actual %s\n" +
|
||||
"diff file: %s",
|
||||
PIXELS_THRESHOLD, diff.getDiffSize(), FileSystems.getDefault().getPath(fullPathNameDiff).normalize().toAbsolutePath()));
|
||||
}
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private byte[] imgToBytes(String filename) {
|
||||
BufferedImage bImage2 = ImageIO.read(new File(filename));
|
||||
var bos2 = new ByteArrayOutputStream();
|
||||
ImageIO.write(bImage2, "png", bos2);
|
||||
return bos2.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
@Attachment
|
||||
private byte[] actual(String actualFileName) {
|
||||
return imgToBytes(actualFileName);
|
||||
}
|
||||
|
||||
|
||||
@Attachment
|
||||
private byte[] expected(String expectedFileName) {
|
||||
return imgToBytes(expectedFileName);
|
||||
}
|
||||
|
||||
|
||||
@Attachment
|
||||
private byte[] diff(String diffFileName) {
|
||||
return imgToBytes(diffFileName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.provectus.kafka.ui.base.BaseTest;
|
|||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -12,7 +11,6 @@ public class SmokeTests extends BaseTest {
|
|||
@Test
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
@CaseId(198)
|
||||
@SneakyThrows
|
||||
@DisplayName("main page should load")
|
||||
void mainPageLoads() {
|
||||
pages.open()
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
package com.provectus.kafka.ui.tests;
|
||||
|
||||
import com.provectus.kafka.ui.base.BaseTest;
|
||||
import com.provectus.kafka.ui.extensions.FileUtils;
|
||||
import com.provectus.kafka.ui.helpers.ApiHelper;
|
||||
import com.provectus.kafka.ui.helpers.Helpers;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||
|
||||
import static com.provectus.kafka.ui.extensions.FileUtils.getResourceAsString;
|
||||
|
||||
public class ConnectorsTests extends BaseTest {
|
||||
|
||||
|
@ -28,13 +28,12 @@ public class ConnectorsTests extends BaseTest {
|
|||
public static final String CONNECTOR_FOR_UPDATE = "sink_postgres_activities_e2e_checks_for_update";
|
||||
|
||||
@BeforeAll
|
||||
@SneakyThrows
|
||||
public static void beforeAll() {
|
||||
ApiHelper apiHelper = Helpers.INSTANCE.apiHelper;
|
||||
|
||||
String connectorToDelete = FileUtils.getResourceAsString("delete_connector_config.json");
|
||||
String connectorToUpdate = FileUtils.getResourceAsString("config_for_create_connector_via_api.json");
|
||||
String message = FileUtils.getResourceAsString("message_content_create_topic.json");
|
||||
String connectorToDelete = getResourceAsString("delete_connector_config.json");
|
||||
String connectorToUpdate = getResourceAsString("config_for_create_connector_via_api.json");
|
||||
String message = getResourceAsString("message_content_create_topic.json");
|
||||
|
||||
apiHelper.deleteTopic(LOCAL_CLUSTER, CONNECTOR_FOR_DELETE);
|
||||
|
||||
|
@ -52,7 +51,6 @@ public class ConnectorsTests extends BaseTest {
|
|||
}
|
||||
|
||||
@AfterAll
|
||||
@SneakyThrows
|
||||
public static void afterAll() {
|
||||
ApiHelper apiHelper = Helpers.INSTANCE.apiHelper;
|
||||
apiHelper.deleteConnector(LOCAL_CLUSTER, FIRST_CONNECTOR, SINK_CONNECTOR);
|
||||
|
@ -62,7 +60,6 @@ public class ConnectorsTests extends BaseTest {
|
|||
apiHelper.deleteTopic(LOCAL_CLUSTER, TOPIC_FOR_UPDATE_CONNECTOR);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should create a connector")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -75,13 +72,12 @@ public class ConnectorsTests extends BaseTest {
|
|||
.waitUntilScreenReady()
|
||||
.setConnectorConfig(
|
||||
SINK_CONNECTOR,
|
||||
FileUtils.getResourceAsString("config_for_create_connector.json"));
|
||||
getResourceAsString("config_for_create_connector.json"));
|
||||
pages.openConnectorsList(LOCAL_CLUSTER)
|
||||
.waitUntilScreenReady()
|
||||
.connectorIsVisibleInList(SINK_CONNECTOR, TOPIC_FOR_CONNECTOR);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should update a connector")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -93,12 +89,11 @@ public class ConnectorsTests extends BaseTest {
|
|||
.openConnector(CONNECTOR_FOR_UPDATE);
|
||||
pages.connectorsView.connectorIsVisibleOnOverview();
|
||||
pages.connectorsView.openEditConfig()
|
||||
.updConnectorConfig(FileUtils.getResourceAsString("config_for_update_connector.json"));
|
||||
.updConnectorConfig(getResourceAsString("config_for_update_connector.json"));
|
||||
pages.openConnectorsList(LOCAL_CLUSTER)
|
||||
.connectorIsVisibleInList(CONNECTOR_FOR_UPDATE, TOPIC_FOR_UPDATE_CONNECTOR);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should delete connector")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
|
|
@ -8,14 +8,11 @@ import com.provectus.kafka.ui.pages.MainPage;
|
|||
import com.provectus.kafka.ui.pages.schema.SchemaCreateView;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.*;
|
||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.apache.kafka.common.utils.Utils.readFileAsString;
|
||||
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
||||
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
public class SchemasTests extends BaseTest {
|
||||
|
@ -36,16 +33,14 @@ public class SchemasTests extends BaseTest {
|
|||
private static final String PATH_JSON_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_Json_Value.json";
|
||||
|
||||
@BeforeAll
|
||||
@SneakyThrows
|
||||
public static void beforeAll() {
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_JSON_API, SchemaType.JSON, readFileAsString(PATH_JSON_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API, SchemaType.PROTOBUF, readFileAsString(PATH_PROTOBUF_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE, SchemaType.AVRO, fileToString(PATH_AVRO_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API, SchemaType.AVRO, fileToString(PATH_AVRO_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_JSON_API, SchemaType.JSON, fileToString(PATH_JSON_VALUE));
|
||||
Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API, SchemaType.PROTOBUF, fileToString(PATH_PROTOBUF_VALUE));
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
@SneakyThrows
|
||||
public static void afterAll() {
|
||||
Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_CREATE);
|
||||
Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_JSON_CREATE);
|
||||
|
@ -63,12 +58,12 @@ public class SchemasTests extends BaseTest {
|
|||
@CaseId(43)
|
||||
@Test
|
||||
@Order(1)
|
||||
void createSchemaAvro() throws IOException {
|
||||
void createSchemaAvro() {
|
||||
pages.openMainPage()
|
||||
.goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
pages.schemaRegistry.clickCreateSchema()
|
||||
.setSubjectName(SCHEMA_AVRO_CREATE)
|
||||
.setSchemaField(readFileAsString(PATH_AVRO_VALUE))
|
||||
.setSchemaField(fileToString(PATH_AVRO_VALUE))
|
||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.AVRO)
|
||||
.clickSubmit()
|
||||
.waitUntilScreenReady();
|
||||
|
@ -77,7 +72,6 @@ public class SchemasTests extends BaseTest {
|
|||
pages.schemaRegistry.isSchemaVisible(SCHEMA_AVRO_CREATE);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should update AVRO schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -91,13 +85,12 @@ public class SchemasTests extends BaseTest {
|
|||
.waitUntilScreenReady()
|
||||
.openEditSchema()
|
||||
.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
||||
.setNewSchemaValue(readFileAsString(PATH_AVRO_FOR_UPDATE))
|
||||
.setNewSchemaValue(fileToString(PATH_AVRO_FOR_UPDATE))
|
||||
.clickSubmit()
|
||||
.waitUntilScreenReady()
|
||||
.isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should delete AVRO schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -113,7 +106,6 @@ public class SchemasTests extends BaseTest {
|
|||
.isNotVisible(SCHEMA_AVRO_API);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should create JSON schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -125,7 +117,7 @@ public class SchemasTests extends BaseTest {
|
|||
.goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
pages.schemaRegistry.clickCreateSchema()
|
||||
.setSubjectName(SCHEMA_JSON_CREATE)
|
||||
.setSchemaField(readFileAsString(PATH_JSON_VALUE))
|
||||
.setSchemaField(fileToString(PATH_JSON_VALUE))
|
||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.JSON)
|
||||
.clickSubmit()
|
||||
.waitUntilScreenReady();
|
||||
|
@ -134,7 +126,6 @@ public class SchemasTests extends BaseTest {
|
|||
pages.schemaRegistry.isSchemaVisible(SCHEMA_JSON_CREATE);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should delete JSON schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -150,7 +141,6 @@ public class SchemasTests extends BaseTest {
|
|||
.isNotVisible(SCHEMA_JSON_API);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should create PROTOBUF schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -162,7 +152,7 @@ public class SchemasTests extends BaseTest {
|
|||
.goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||
pages.schemaRegistry.clickCreateSchema()
|
||||
.setSubjectName(SCHEMA_PROTOBUF_CREATE)
|
||||
.setSchemaField(readFileAsString(PATH_PROTOBUF_VALUE))
|
||||
.setSchemaField(fileToString(PATH_PROTOBUF_VALUE))
|
||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.PROTOBUF)
|
||||
.clickSubmit()
|
||||
.waitUntilScreenReady();
|
||||
|
@ -171,7 +161,6 @@ public class SchemasTests extends BaseTest {
|
|||
pages.schemaRegistry.isSchemaVisible(SCHEMA_PROTOBUF_CREATE);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should delete PROTOBUF schema")
|
||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
|
|
@ -9,10 +9,9 @@ import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
|||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||
import io.qameta.allure.Issue;
|
||||
import io.qase.api.annotation.CaseId;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
import static org.apache.kafka.common.utils.Utils.readFileAsString;
|
||||
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
||||
|
||||
public class TopicTests extends BaseTest {
|
||||
|
||||
|
@ -29,21 +28,18 @@ public class TopicTests extends BaseTest {
|
|||
|
||||
|
||||
@BeforeAll
|
||||
@SneakyThrows
|
||||
public static void beforeAll() {
|
||||
Helpers.INSTANCE.apiHelper.createTopic(SECOND_LOCAL, TOPIC_TO_UPDATE);
|
||||
Helpers.INSTANCE.apiHelper.createTopic(SECOND_LOCAL, TOPIC_TO_DELETE);
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
@SneakyThrows
|
||||
public static void afterAll() {
|
||||
Helpers.INSTANCE.apiHelper.deleteTopic(SECOND_LOCAL, TOPIC_TO_UPDATE);
|
||||
Helpers.INSTANCE.apiHelper.deleteTopic(SECOND_LOCAL, TOPIC_TO_DELETE);
|
||||
Helpers.INSTANCE.apiHelper.deleteTopic(SECOND_LOCAL, NEW_TOPIC);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should create a topic")
|
||||
@Suite(suiteId = 4, title = "Create new Topic")
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -65,7 +61,6 @@ public class TopicTests extends BaseTest {
|
|||
.topicIsNotVisible(NEW_TOPIC);
|
||||
}
|
||||
@Disabled("Due to issue https://github.com/provectus/kafka-ui/issues/1500 ignore this test")
|
||||
@SneakyThrows
|
||||
@DisplayName("should update a topic")
|
||||
@Issue("1500")
|
||||
@Suite(suiteId = 2, title = "Topics")
|
||||
|
@ -97,7 +92,6 @@ public class TopicTests extends BaseTest {
|
|||
.maxMessageBytesIs(UPDATED_MAX_MESSAGE_BYTES);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("should delete topic")
|
||||
@Suite(suiteId = 2, title = "Topics")
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -113,7 +107,6 @@ public class TopicTests extends BaseTest {
|
|||
.isTopicNotVisible(TOPIC_TO_DELETE);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@DisplayName("produce message")
|
||||
@Suite(suiteId = 2, title = "Topics")
|
||||
@AutomationStatus(status = Status.AUTOMATED)
|
||||
|
@ -126,10 +119,10 @@ public class TopicTests extends BaseTest {
|
|||
.waitUntilScreenReady()
|
||||
.openTopicMenu(TopicView.TopicMenu.MESSAGES)
|
||||
.clickOnButton("Produce Message")
|
||||
.setContentFiled(readFileAsString(CONTENT_TO_PRODUCE_MESSAGE))
|
||||
.setKeyField(readFileAsString(KEY_TO_PRODUCE_MESSAGE))
|
||||
.setContentFiled(fileToString(CONTENT_TO_PRODUCE_MESSAGE))
|
||||
.setKeyField(fileToString(KEY_TO_PRODUCE_MESSAGE))
|
||||
.submitProduceMessage();
|
||||
Assertions.assertTrue(pages.topicView.isKeyMessageVisible(readFileAsString(KEY_TO_PRODUCE_MESSAGE)));
|
||||
Assertions.assertTrue(pages.topicView.isContentMessageVisible(readFileAsString(CONTENT_TO_PRODUCE_MESSAGE).trim()));
|
||||
Assertions.assertTrue(pages.topicView.isKeyMessageVisible(fileToString(KEY_TO_PRODUCE_MESSAGE)));
|
||||
Assertions.assertTrue(pages.topicView.isContentMessageVisible(fileToString(CONTENT_TO_PRODUCE_MESSAGE).trim()));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue