Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions config/gif-recording.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ gif.tempFolderToStoreRecording = target/gifs/
# If false: the gif recordings do not get deleted after being added to the allure report
gif.deleteRecordingsAfterAddingToAllureReport = true

# Will control if temp video recordings will be deleted. Doesn't delete the recording from the report but clears the temp directory.
# If true: all video recordings in the temp directory get deleted (after adding the necessary recordings to the report)
# If false: the video recordings don't get deleted
gif.deleteTempRecordings = false

# If true: all gif recordings are added to the allure report
# If false: only gif recordings of failed tests are added to the allure report
gif.appendAllRecordingsToAllureReport = true
Expand Down
7 changes: 6 additions & 1 deletion config/video-recording.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ video.tempFolderToStoreRecording = target/videos/
# If false: the video recordings don't get deleted after being added to the allure report
video.deleteRecordingsAfterAddingToAllureReport = true

# Will control if temp video recordings will be deleted. Doesn't delete the recording from the report but clears the temp directory.
# If true: all video recordings in the temp directory get deleted (after adding the necessary recordings to the report)
# If false: the video recordings don't get deleted
video.deleteTempRecordings = false

# If true: all video recordings are added to the allure report
# If false: only video recordings of failed tests are added to the allure report
video.appendAllRecordingsToAllureReport = true
Expand All @@ -37,4 +42,4 @@ video.format = mp4
video.ffmpegBinaryPath = ffmpeg

# Defines the path where the logfile is saved
video.ffmpegLogFile = target/ffmpeg_output_msg.txt
video.ffmpegLogFile = target/ffmpeg_output_msg.txt
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ public synchronized void run()
writer.stop();
try
{
File tempRecording = new File(fileName);
if (recordingConfigurations.appendAllRecordingsToAllureReport() || testFailed)
{

Expand All @@ -161,9 +162,15 @@ public synchronized void run()

if (recordingConfigurations.deleteRecordingsAfterAddingToAllureReport())
{
new File(fileName).delete();
tempRecording.delete();
}
}

// delete the file when configured and only if it wasn't deleted already
if (recordingConfigurations.deleteTempRecordings() && tempRecording.exists())
{
tempRecording.delete();
}
}
catch (IOException e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ public interface GifRecordingConfigurations extends RecordingConfigurations
@DefaultValue("true")
public boolean deleteRecordingsAfterAddingToAllureReport();

@Override
@Key("gif.deleteTempRecordings")
@DefaultValue("true")
public boolean deleteTempRecordings();

@Override
@Key("gif.appendAllRecordingsToAllureReport")
@DefaultValue("true")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ public abstract interface RecordingConfigurations extends Mutable

public boolean deleteRecordingsAfterAddingToAllureReport();

public boolean deleteTempRecordings();

public boolean appendAllRecordingsToAllureReport();

public double imageQuality();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ public interface VideoRecordingConfigurations extends RecordingConfigurations
@DefaultValue("true")
public boolean deleteRecordingsAfterAddingToAllureReport();

@Override
@Key("video.deleteTempRecordings")
@DefaultValue("true")
public boolean deleteTempRecordings();

@Override
@Key("video.appendAllRecordingsToAllureReport")
@DefaultValue("true")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.xceptance.neodymium.junit4.tests.recording;

import com.codeborne.selenide.Selenide;
import com.xceptance.neodymium.common.browser.Browser;
import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.RecordingConfigurations;
import com.xceptance.neodymium.junit4.NeodymiumRunner;
import com.xceptance.neodymium.junit4.tests.NeodymiumTest;
import org.aeonbits.owner.ConfigFactory;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Browser("Chrome_headless")
@RunWith(NeodymiumRunner.class)
public abstract class AbstractRecordingDeletionTest extends NeodymiumTest
{
protected static String uuid;

public static Class<? extends RecordingConfigurations> configurationsClass;

private boolean isGif;

protected AbstractRecordingDeletionTest(boolean isGif)
{
this.isGif = isGif;
}

public static void beforeClass(String format, boolean filmAutomatically)
{
FilmTestExecution.clearThreadContexts();

Map<String, String> properties1 = new HashMap<>();
properties1.put(format + ".filmAutomatically", Boolean.toString(filmAutomatically));
properties1.put(format + ".enableFilming", "true");
properties1.put(format + ".deleteRecordingsAfterAddingToAllureReport", "false");
properties1.put(format + ".deleteTempRecordings", "true");

final String fileLocation = "config/temp-" + format + "-" + filmAutomatically + ".properties";
File tempConfigFile1 = new File("./" + fileLocation);

writeMapToPropertiesFile(properties1, tempConfigFile1);
ConfigFactory.setProperty(FilmTestExecution.TEMPORARY_CONFIG_FILE_PROPERTY_NAME, "file:" + fileLocation);
tempFiles.add(tempConfigFile1);
}

@Test
public void test()
{
List<String> uuids = isGif ? FilmTestExecution.getNamesOfAllCurrentGifRecordings() : FilmTestExecution.getNamesOfAllCurrentVideoRecordings();
Assert.assertEquals(1, uuids.size());
uuid = uuids.get(0);
Selenide.open("https://www.xceptance.com/en/");
Selenide.sleep(FilmTestExecution.getContext(configurationsClass).oneImagePerMilliseconds());
}

@AfterClass
public static void assertRecordingFileWasDeleted()
{
File recordingFile = new File(FilmTestExecution.getContext(configurationsClass).tempFolderToStoreRecording() + uuid + "."
+ FilmTestExecution.getContext(configurationsClass).format());
Assert.assertFalse("the recording file wasn't deleted", recordingFile.exists());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.xceptance.neodymium.junit4.tests.recording.config;

import com.xceptance.neodymium.common.recording.config.GifRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingDeletionTest;
import org.junit.BeforeClass;

public class DeleteGifRecordingTest extends AbstractRecordingDeletionTest
{
public DeleteGifRecordingTest()
{
super(true);
}

@BeforeClass
public static void form()
{
beforeClass("gif", true);
configurationsClass = GifRecordingConfigurations.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.xceptance.neodymium.junit4.tests.recording.config;

import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.VideoRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingDeletionTest;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;

import java.io.File;

public class DeleteVideoRecordingTest extends AbstractRecordingDeletionTest
{
public DeleteVideoRecordingTest()
{
super(false);
}

@BeforeClass
public static void form()
{
beforeClass("video", true);
configurationsClass = VideoRecordingConfigurations.class;
}

/*
@Override
@Test
public void test()
{
super.test();
}
*/

@AfterClass
public static void assertLogFileExists()
{
File logFile = new File(FilmTestExecution.getContextVideo().ffmpegLogFile());
Assert.assertTrue("the logfile for the automatic video recording test exists", logFile.exists());
logFile.delete();
Assert.assertFalse("the logfile for the automatic video recording test wasn't deleted", logFile.exists());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.xceptance.neodymium.junit5.tests.recording;

import com.codeborne.selenide.Selenide;
import com.xceptance.neodymium.common.browser.Browser;
import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.RecordingConfigurations;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.AbstractNeodymiumTest;
import org.aeonbits.owner.ConfigFactory;
import org.junit.Assert;
import org.junit.jupiter.api.AfterAll;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Browser("Chrome_headless")
public abstract class AbstractRecordingDeletionTest extends AbstractNeodymiumTest
{
protected static String uuid;

public static Class<? extends RecordingConfigurations> configurationsClass;

private boolean isGif;

protected AbstractRecordingDeletionTest(boolean isGif)
{
this.isGif = isGif;
}

public static void beforeClass(String format, boolean filmAutomatically)
{
FilmTestExecution.clearThreadContexts();

Map<String, String> properties1 = new HashMap<>();
properties1.put(format + ".filmAutomatically", Boolean.toString(filmAutomatically));
properties1.put(format + ".enableFilming", "true");
properties1.put(format + ".deleteRecordingsAfterAddingToAllureReport", "false");
properties1.put(format + ".deleteTempRecordings", "true");

final String fileLocation = "config/temp-" + format + "-" + filmAutomatically + ".properties";
File tempConfigFile1 = new File("./" + fileLocation);

writeMapToPropertiesFile(properties1, tempConfigFile1);

ConfigFactory.setProperty(FilmTestExecution.TEMPORARY_CONFIG_FILE_PROPERTY_NAME, "file:" + fileLocation);

tempFiles.add(tempConfigFile1);
}

@NeodymiumTest
public void test()
{
List<String> uuids = isGif ? FilmTestExecution.getNamesOfAllCurrentGifRecordings() : FilmTestExecution.getNamesOfAllCurrentVideoRecordings();
Assert.assertEquals(1, uuids.size());
uuid = uuids.get(0);
Selenide.open("https://www.xceptance.com/en/");
Selenide.sleep(FilmTestExecution.getContext(configurationsClass).oneImagePerMilliseconds());
}

@AfterAll
public static void assertRecordingFileWasDeleted()
{
File recordingFile = new File(FilmTestExecution.getContext(configurationsClass).tempFolderToStoreRecording() + uuid + "."
+ FilmTestExecution.getContext(configurationsClass).format());
Assert.assertFalse("the recording file wasn't deleted", recordingFile.exists());
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package com.xceptance.neodymium.junit5.tests.recording.automatic;

import org.junit.jupiter.api.BeforeAll;

import com.xceptance.neodymium.common.recording.config.GifRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingTest;
import com.xceptance.neodymium.junit5.tests.recording.AbstractRecordingTest;
import org.junit.jupiter.api.BeforeAll;

public class AutomaticGifRecordingTest extends AbstractRecordingTest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package com.xceptance.neodymium.junit5.tests.recording.automatic;

import java.io.File;
import java.io.IOException;

import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.VideoRecordingConfigurations;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.recording.AbstractRecordingTest;
import org.junit.Assert;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;

import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.VideoRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingTest;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import java.io.File;
import java.io.IOException;

public class AutomaticVideoRecordingTest extends AbstractRecordingTest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package com.xceptance.neodymium.junit5.tests.recording.config;

import org.junit.jupiter.api.BeforeAll;

import com.xceptance.neodymium.common.recording.config.GifRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingTest;
import com.xceptance.neodymium.junit5.tests.recording.AbstractRecordingTest;
import org.junit.jupiter.api.BeforeAll;

public class AutomaticGifRecordingTest extends AbstractRecordingTest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.xceptance.neodymium.junit5.tests.recording.config;

import java.io.File;

import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.VideoRecordingConfigurations;
import com.xceptance.neodymium.junit5.tests.recording.AbstractRecordingTest;
import org.junit.Assert;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;

import com.xceptance.neodymium.common.recording.FilmTestExecution;
import com.xceptance.neodymium.common.recording.config.VideoRecordingConfigurations;
import com.xceptance.neodymium.junit4.tests.recording.AbstractRecordingTest;
import java.io.File;

public class AutomaticVideoRecordingTest extends AbstractRecordingTest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.xceptance.neodymium.junit5.tests.recording.config;

import com.xceptance.neodymium.common.recording.config.GifRecordingConfigurations;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.recording.AbstractRecordingDeletionTest;
import org.junit.jupiter.api.BeforeAll;

public class DeleteGifRecordingTest extends AbstractRecordingDeletionTest
{
public DeleteGifRecordingTest()
{
super(true);
}

@BeforeAll
public static void form()
{
beforeClass("gif", true);
configurationsClass = GifRecordingConfigurations.class;
}

@Override
@NeodymiumTest
public void test()
{
super.test();
}
}
Loading