From 5f90acaeb3a6f2e7ca6f48ed84a8dc4aa43b4760 Mon Sep 17 00:00:00 2001 From: Stefan Rempfer Date: Tue, 14 Apr 2020 12:23:56 +0200 Subject: [PATCH] Regard specified VNC recording directory for BrowserWebDriverContainer again --- .../containers/BrowserWebDriverContainer.java | 15 ++++++----- ...ChromeRecordingWebDriverContainerTest.java | 26 +++++++++++++++++-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java index 22a4b9d47a5..9b154f06152 100644 --- a/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java +++ b/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java @@ -143,12 +143,15 @@ protected void configure() { } if (recordingMode != VncRecordingMode.SKIP) { - try { - vncRecordingDirectory = Files.createTempDirectory(TC_TEMP_DIR_PREFIX).toFile(); - } catch (IOException e) { - // should never happen as per javadoc, since we use valid prefix - logger().error("Exception while trying to create temp directory " + vncRecordingDirectory.getAbsolutePath(), e); - throw new ContainerLaunchException("Exception while trying to create temp directory", e); + + if(vncRecordingDirectory == null){ + try { + vncRecordingDirectory = Files.createTempDirectory(TC_TEMP_DIR_PREFIX).toFile(); + } catch (IOException e) { + // should never happen as per javadoc, since we use valid prefix + logger().error("Exception while trying to create temp directory " + vncRecordingDirectory.getAbsolutePath(), e); + throw new ContainerLaunchException("Exception while trying to create temp directory", e); + } } if (getNetwork() == null) { diff --git a/modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java b/modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java index 7e77f63a051..2b3c14a3ef7 100644 --- a/modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java +++ b/modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java @@ -1,5 +1,7 @@ package org.testcontainers.junit; + +import com.google.common.io.PatternFilenameFilter; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.runners.Enclosed; @@ -11,7 +13,7 @@ import java.io.File; import java.util.Optional; - +import static org.junit.Assert.assertTrue; import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL; @RunWith(Enclosed.class) @@ -19,15 +21,35 @@ public class ChromeRecordingWebDriverContainerTest extends BaseWebDriverContaine public static class ChromeThatRecordsAllTests { + public File vncRecordingDirectory = new File("./build/"); + @Rule public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer() .withCapabilities(new ChromeOptions()) - .withRecordingMode(RECORD_ALL, new File("./build/")) + .withRecordingMode(RECORD_ALL, vncRecordingDirectory) .withRecordingFileFactory(new DefaultRecordingFileFactory()); @Test public void recordingTestThatShouldBeRecordedAndRetained() { + + final String testName = "ChromeThatRecordsAllTests-recordingTestThatShouldBeRecordedAndRetained-" + + System.currentTimeMillis(); + doSimpleExplore(chrome); + chrome.afterTest(new TestDescription() { + @Override + public String getTestId() { + return getFilesystemFriendlyName(); + } + + @Override + public String getFilesystemFriendlyName() { + return testName; + } + }, Optional.empty()); + + String[] files = vncRecordingDirectory.list(new PatternFilenameFilter("PASSED-" + testName + "-.*\\.flv")); + assertTrue("Recorded file not found", files.length == 1); } }