Skip to content

Commit a253333

Browse files
VietND96sandeepsuryaprasad
authored andcommitted
[java][grid]: Set test name to video file name in dynamic grid (SeleniumHQ#13907)
* [java][grid]: Set test name to video file name in dynamic grid Signed-off-by: Viet Nguyen Duc <[email protected]> * Revert unexpected changes Signed-off-by: Viet Nguyen Duc <[email protected]> --------- Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent f34732e commit a253333

File tree

1 file changed

+41
-16
lines changed

1 file changed

+41
-16
lines changed

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

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -301,23 +301,34 @@ private Container createBrowserContainer(int port, Capabilities sessionCapabilit
301301
}
302302

303303
private Map<String, String> getBrowserContainerEnvVars(Capabilities sessionRequestCapabilities) {
304-
Optional<Dimension> screenResolution =
305-
ofNullable(getScreenResolution(sessionRequestCapabilities));
306304
Map<String, String> envVars = new HashMap<>();
307-
if (screenResolution.isPresent()) {
308-
envVars.put("SE_SCREEN_WIDTH", String.valueOf(screenResolution.get().getWidth()));
309-
envVars.put("SE_SCREEN_HEIGHT", String.valueOf(screenResolution.get().getHeight()));
310-
}
311-
Optional<TimeZone> timeZone = ofNullable(getTimeZone(sessionRequestCapabilities));
312-
timeZone.ifPresent(zone -> envVars.put("TZ", zone.getID()));
313305
// Passing env vars set to the child container
306+
setEnvVarsToContainer(envVars);
307+
// Capabilities set to env vars with higher precedence
308+
setCapsToEnvVars(sessionRequestCapabilities, envVars);
309+
return envVars;
310+
}
311+
312+
private void setEnvVarsToContainer(Map<String, String> envVars) {
314313
Map<String, String> seEnvVars = System.getenv();
315314
seEnvVars.entrySet().stream()
316315
.filter(
317316
entry ->
318317
entry.getKey().startsWith("SE_") || entry.getKey().equalsIgnoreCase("LANGUAGE"))
319318
.forEach(entry -> envVars.put(entry.getKey(), entry.getValue()));
320-
return envVars;
319+
}
320+
321+
private void setCapsToEnvVars(
322+
Capabilities sessionRequestCapabilities, Map<String, String> envVars) {
323+
Optional<Dimension> screenResolution =
324+
ofNullable(getScreenResolution(sessionRequestCapabilities));
325+
screenResolution.ifPresent(
326+
dimension -> {
327+
envVars.put("SE_SCREEN_WIDTH", String.valueOf(dimension.getWidth()));
328+
envVars.put("SE_SCREEN_HEIGHT", String.valueOf(dimension.getHeight()));
329+
});
330+
Optional<TimeZone> timeZone = ofNullable(getTimeZone(sessionRequestCapabilities));
331+
timeZone.ifPresent(zone -> envVars.put("TZ", zone.getID()));
321332
}
322333

323334
private Container startVideoContainer(
@@ -357,17 +368,31 @@ private Container startVideoContainer(
357368
private Map<String, String> getVideoContainerEnvVars(
358369
Capabilities sessionRequestCapabilities, String containerIp) {
359370
Map<String, String> envVars = new HashMap<>();
371+
// Passing env vars set to the child container
372+
setEnvVarsToContainer(envVars);
373+
// Capabilities set to env vars with higher precedence
374+
setCapsToEnvVars(sessionRequestCapabilities, envVars);
360375
envVars.put("DISPLAY_CONTAINER_NAME", containerIp);
361-
Optional<Dimension> screenResolution =
362-
ofNullable(getScreenResolution(sessionRequestCapabilities));
363-
screenResolution.ifPresent(
364-
dimension -> {
365-
envVars.put("SE_SCREEN_WIDTH", String.valueOf(dimension.getWidth()));
366-
envVars.put("SE_SCREEN_HEIGHT", String.valueOf(dimension.getHeight()));
367-
});
376+
Optional<String> testName = ofNullable(getTestName(sessionRequestCapabilities));
377+
testName.ifPresent(name -> envVars.put("SE_VIDEO_FILE_NAME", String.format("%s.mp4", name)));
368378
return envVars;
369379
}
370380

381+
private String getTestName(Capabilities sessionRequestCapabilities) {
382+
Optional<Object> testName = ofNullable(sessionRequestCapabilities.getCapability("se:name"));
383+
if (testName.isPresent()) {
384+
String name = testName.get().toString();
385+
if (!name.isEmpty()) {
386+
name = name.replaceAll(" ", "_").replaceAll("[^a-zA-Z0-9_-]", "");
387+
if (name.length() > 251) {
388+
name = name.substring(0, 251);
389+
}
390+
return name;
391+
}
392+
}
393+
return null;
394+
}
395+
371396
private TimeZone getTimeZone(Capabilities sessionRequestCapabilities) {
372397
Optional<Object> timeZone = ofNullable(sessionRequestCapabilities.getCapability("se:timeZone"));
373398
if (timeZone.isPresent()) {

0 commit comments

Comments
 (0)