Skip to content

Commit e309cde

Browse files
committed
[grid] Dynamic Grid is able to disable video container spawn up
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
1 parent 7425162 commit e309cde

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

java/src/org/openqa/selenium/grid/node/docker/DockerAssetsPath.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public DockerAssetsPath(String hostPath, String containerPath) {
3030
this.containerPath = containerPath;
3131
}
3232

33+
public String getHostPath() {
34+
return this.hostPath;
35+
}
36+
3337
public String getHostPath(SessionId id) {
3438
return this.hostPath + File.separator + id;
3539
}

java/src/org/openqa/selenium/grid/node/docker/DockerOptions.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ public Map<Capabilities, Collection<SessionFactory>> getDockerSessionFactories(
159159

160160
loadImages(docker, kinds.keySet().toArray(new String[0]));
161161
Image videoImage = getVideoImage(docker);
162-
loadImages(docker, videoImage.getName());
162+
if (videoImage != null) {
163+
loadImages(docker, videoImage.getName());
164+
}
163165

164166
// Hard coding the config section value "node" to avoid an extra dependency
165167
int maxContainerCount =
@@ -224,6 +226,9 @@ protected List<Device> getDevicesMapping() {
224226

225227
private Image getVideoImage(Docker docker) {
226228
String videoImage = config.get(DOCKER_SECTION, "video-image").orElse(DEFAULT_VIDEO_IMAGE);
229+
if (videoImage.equalsIgnoreCase("false")) {
230+
return null;
231+
}
227232
return docker.getImage(videoImage);
228233
}
229234

java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,15 @@ private Capabilities addForwardCdpEndpoint(
287287

288288
private Container createBrowserContainer(int port, Capabilities sessionCapabilities) {
289289
Map<String, String> browserContainerEnvVars = getBrowserContainerEnvVars(sessionCapabilities);
290+
// Enable env var to trigger video recording if session capabilities request and external video
291+
// container is disabled
292+
if (videoImage == null && recordVideoForSession(sessionCapabilities)) {
293+
browserContainerEnvVars.put("SE_RECORD_VIDEO", "true");
294+
browserContainerEnvVars.put("SE_VIDEO_FILE_NAME", "auto");
295+
if (runningInDocker) {
296+
browserContainerEnvVars.put("SE_VIDEO_RECORD_STANDALONE", "true");
297+
}
298+
}
290299
long browserContainerShmMemorySize = 2147483648L; // 2GB
291300
ContainerConfig containerConfig =
292301
image(browserImage)
@@ -295,6 +304,10 @@ private Container createBrowserContainer(int port, Capabilities sessionCapabilit
295304
.network(networkName)
296305
.devices(devices)
297306
.applyHostConfig(hostConfig, hostConfigKeys);
307+
Optional<DockerAssetsPath> path = ofNullable(this.assetsPath);
308+
if (path.isPresent() && videoImage == null && recordVideoForSession(sessionCapabilities)) {
309+
containerConfig.bind(Collections.singletonMap(this.assetsPath.getHostPath(), "/videos"));
310+
}
298311
if (!runningInDocker) {
299312
containerConfig = containerConfig.map(Port.tcp(4444), Port.tcp(port));
300313
}
@@ -335,7 +348,7 @@ private void setCapsToEnvVars(
335348

336349
private Container startVideoContainer(
337350
Capabilities sessionCapabilities, String browserContainerIp, String hostPath) {
338-
if (!recordVideoForSession(sessionCapabilities)) {
351+
if (videoImage == null || !recordVideoForSession(sessionCapabilities)) {
339352
return null;
340353
}
341354
int videoPort = 9000;

0 commit comments

Comments
 (0)