ScreenshotConsumer.java
package io.github.giulong.spectrum.utils.events.html_report;
import static io.github.giulong.spectrum.extensions.resolvers.StatefulExtentTestResolver.STATEFUL_EXTENT_TEST;
import static io.github.giulong.spectrum.extensions.resolvers.TestDataResolver.TEST_DATA;
import static org.junit.jupiter.api.extension.ExtensionContext.Namespace.GLOBAL;
import java.nio.file.Path;
import com.aventstack.extentreports.ExtentTest;
import io.github.giulong.spectrum.pojos.events.Event;
import io.github.giulong.spectrum.utils.*;
import io.github.giulong.spectrum.utils.events.EventsConsumer;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
@Slf4j
public abstract class ScreenshotConsumer extends EventsConsumer {
protected final FileUtils fileUtils = FileUtils.getInstance();
protected final HtmlUtils htmlUtils = HtmlUtils.getInstance();
protected final Configuration configuration = Configuration.getInstance();
protected final ContextManager contextManager = ContextManager.getInstance();
protected ExtensionContext.Store store;
protected TestData testData;
protected ExtentTest currentNode;
protected byte[] screenshot;
@Override
protected boolean shouldAccept(final Event event) {
this.store = event.getContext().getStore(GLOBAL);
this.testData = store.get(TEST_DATA, TestData.class);
this.currentNode = store.get(STATEFUL_EXTENT_TEST, StatefulExtentTest.class).getCurrentNode();
this.screenshot = event.getPayload().getScreenshot();
return true;
}
protected void addScreenshot(final Path path) {
contextManager.getScreenshots().put(path.toString(), screenshot);
fileUtils.write(path, screenshot);
}
}