Всем привет! Пишу тесты, использую стек:
Java + JUnit5 + Selenide + Log4j + ReportPortal
Добавил в ресурсы конфиги для Log4J
Добавил создание скриншота:
package ru.alfabank.helpers;
import com.codeborne.selenide.Selenide;
import org.openqa.selenium.OutputType;
import java.io.File;
public class AttachScreen {
public static byte[] createScreenBytes() {
return Selenide.screenshot(OutputType.BYTES);
}
public static File createScreenFile() {
return Selenide.screenshot(OutputType.FILE);
}
}
Прикрепление скриншотов в RP
package ru.alfabank.utils;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.WebDriverRunner;
import com.codeborne.selenide.commands.TakeScreenshot;
import com.codeborne.selenide.Screenshots;
import com.epam.reportportal.message.ReportPortalMessage;
import lombok.SneakyThrows;
import lombok.experimental.UtilityClass;
import lombok.extern.log4j.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Base64;
@Log4j2
@UtilityClass
public class LoggingUtils {
private static final Logger LOGGER = LoggerFactory.getLogger("binary_data_logger");
private static final String RP_BASE64 = "RP_MESSAGE#BASE64#{}#{}";
public static void attachScreen(byte[] bytes, String message) {
log.info(RP_BASE64, Base64.getEncoder().encodeToString(bytes), message);
}
public static void attachScreen(File file, String message) {
log.info(RP_BASE64, file.getAbsolutePath(), message);
}
}
И вызываю функцию для прикрепления скриншота в RP
package ru.alfabank.pages;
import com.codeborne.selenide.*;
import com.codeborne.selenide.ex.ElementNotFound;
import com.epam.reportportal.annotations.Step;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;
import ru.alfabank.helpers.AttachScreen;
import ru.alfabank.utils.LoggingUtils;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Condition.visible;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
@Log4j2
@Component
public class ITTicketsPage {
private static final ElementsCollection TICKETS_COLLECTION = $$(".application__cell p");
private static final SelenideElement TICKETS_NOT_ACCESS = $(".application__row").find("p");
@Step("Проверяем, содержится ли номер заявки {extend} в группе заявок")
public boolean isNumTicket(String extend) {
LoggingUtils.attachScreen(AttachScreen.createScreenFile(), "");
String numberTicket;
try {
TICKETS_COLLECTION.findBy(text(extend)).shouldBe(visible);
numberTicket = TICKETS_COLLECTION.findBy(text(extend)).getText();
return numberTicket.substring(0, numberTicket.indexOf(" ")).length() == extend.length();
} catch (ElementNotFound e) {
numberTicket = TICKETS_NOT_ACCESS.shouldHave(text(extend)).getText();
String actualNumber = numberTicket.substring(numberTicket.indexOf("'") + 2);
return actualNumber.substring(0, actualNumber.indexOf(" ")).length() == extend.length();
}
}
}
Но в RP нет скриншотов.