HtmlReportConsumer.java
package io.github.giulong.spectrum.utils.web_driver_events;
import com.aventstack.extentreports.ExtentTest;
import io.github.giulong.spectrum.enums.Frame;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.HtmlUtils;
import io.github.giulong.spectrum.utils.StatefulExtentTest;
import io.github.giulong.spectrum.utils.video.Video;
import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.event.Level;
import static com.aventstack.extentreports.Status.INFO;
import static com.aventstack.extentreports.Status.WARNING;
import static org.slf4j.event.Level.WARN;
@Slf4j
@SuperBuilder
public class HtmlReportConsumer extends WebDriverEventConsumer {
private final HtmlUtils htmlUtils = HtmlUtils.getInstance();
private StatefulExtentTest statefulExtentTest;
private TestData testData;
private Video video;
@Override
public void accept(final WebDriverEvent webDriverEvent) {
final ExtentTest currentNode = statefulExtentTest.getCurrentNode();
final Frame frame = webDriverEvent.getFrame();
final int frameNumber = video.getAndIncrementFrameNumberFor(testData, frame);
final String message = webDriverEvent.getMessage();
final Level level = webDriverEvent.getLevel();
final String details = video.shouldRecord(frame) ? htmlUtils.buildFrameTagFor(frameNumber, message, testData) : message;
log.trace("Logging {}:'{}' at {} level", frameNumber, message, level);
currentNode.log(WARN.equals(webDriverEvent.getLevel()) ? WARNING : INFO, details);
}
}