Skip to content

Commit d33f647

Browse files
kiviewbsideup
andauthored
Make default file recording directory of BrowserWebDriverContainer platform independent (#2562)
Co-authored-by: Sergei Egorov <[email protected]>
1 parent 6adb23b commit d33f647

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828
import org.testcontainers.lifecycle.TestLifecycleAware;
2929

3030
import java.io.File;
31+
import java.io.IOException;
3132
import java.net.MalformedURLException;
3233
import java.net.URL;
34+
import java.nio.file.Files;
3335
import java.time.Duration;
3436
import java.util.Optional;
3537
import java.util.Set;
@@ -52,6 +54,7 @@ public class BrowserWebDriverContainer<SELF extends BrowserWebDriverContainer<SE
5254
private static final int VNC_PORT = 5900;
5355

5456
private static final String NO_PROXY_KEY = "no_proxy";
57+
private static final String TC_TEMP_DIR_PREFIX = "tc";
5558

5659
@Nullable
5760
private Capabilities capabilities;
@@ -61,7 +64,7 @@ public class BrowserWebDriverContainer<SELF extends BrowserWebDriverContainer<SE
6164
private RemoteWebDriver driver;
6265
private VncRecordingMode recordingMode = VncRecordingMode.RECORD_FAILING;
6366
private RecordingFileFactory recordingFileFactory;
64-
private File vncRecordingDirectory = new File("/tmp");
67+
private File vncRecordingDirectory;
6568

6669
private VncRecordingContainer vncRecordingContainer = null;
6770

@@ -140,6 +143,14 @@ protected void configure() {
140143
}
141144

142145
if (recordingMode != VncRecordingMode.SKIP) {
146+
try {
147+
vncRecordingDirectory = Files.createTempDirectory(TC_TEMP_DIR_PREFIX).toFile();
148+
} catch (IOException e) {
149+
// should never happen as per javadoc, since we use valid prefix
150+
logger().error("Exception while trying to create temp directory " + vncRecordingDirectory.getAbsolutePath(), e);
151+
throw new ContainerLaunchException("Exception while trying to create temp directory", e);
152+
}
153+
143154
if (getNetwork() == null) {
144155
withNetwork(Network.SHARED);
145156
}

modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import org.openqa.selenium.chrome.ChromeOptions;
88
import org.testcontainers.containers.BrowserWebDriverContainer;
99
import org.testcontainers.containers.DefaultRecordingFileFactory;
10+
import org.testcontainers.lifecycle.TestDescription;
1011

1112
import java.io.File;
13+
import java.util.Optional;
1214

1315
import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL;
1416

@@ -36,8 +38,24 @@ public static class ChromeThatRecordsFailingTests {
3638
.withCapabilities(new ChromeOptions());
3739

3840
@Test
39-
public void recordingTestThatShouldBeRecordedButDeleted() {
41+
public void recordingTestThatShouldBeRecordedButNotPersisted() {
4042
doSimpleExplore(chrome);
4143
}
44+
45+
@Test
46+
public void recordingTestThatShouldBeRecordedAndRetained() {
47+
doSimpleExplore(chrome);
48+
chrome.afterTest(new TestDescription() {
49+
@Override
50+
public String getTestId() {
51+
return getFilesystemFriendlyName();
52+
}
53+
54+
@Override
55+
public String getFilesystemFriendlyName() {
56+
return "ChromeThatRecordsFailingTests-recordingTestThatShouldBeRecordedAndRetained";
57+
}
58+
}, Optional.of(new RuntimeException("Force writing of video file.")));
59+
}
4260
}
4361
}

0 commit comments

Comments
 (0)