package org.arquillian.cube.docker.impl.client.reporter; import org.arquillian.cube.docker.drone.event.AfterVideoRecorded; import org.arquillian.reporter.api.builder.Reporter; import org.arquillian.reporter.api.event.SectionEvent; import org.arquillian.reporter.api.event.TestMethodSection; import org.arquillian.reporter.api.model.entry.FileEntry; import org.arquillian.reporter.api.model.report.TestMethodReport; import org.arquillian.reporter.config.ReporterConfiguration; import org.jboss.arquillian.core.api.Event; import org.jboss.arquillian.core.api.annotation.Inject; import org.jboss.arquillian.core.api.annotation.Observes; import java.lang.reflect.Method; import java.nio.file.Path; import java.nio.file.Paths; public class TakeVncDroneVideo { @Inject Event<SectionEvent> reportEvent; // Executes after drone recording has finished and file is generated public void reportScreencastRecording(@Observes AfterVideoRecorded event, ReporterConfiguration reporterConfiguration) { Path videoLocation = event.getVideoLocation(); if (videoLocation != null) { videoLocation = Paths.get(videoLocation.toString().replace("flv", "mp4")); final Path rootDir = Paths.get(reporterConfiguration.getRootDirectory()); final Path relativize = rootDir.relativize(videoLocation); final Method testMethod = getTestMethod(event); Reporter.createReport(new TestMethodReport(testMethod.getName())) .addKeyValueEntry(DockerEnvironmentReportKey.VIDEO_PATH, new FileEntry(relativize)) .inSection(new TestMethodSection(testMethod)) .fire(reportEvent); } } private Method getTestMethod(@Observes AfterVideoRecorded event) { return event.getAfter().getTestMethod(); } }