@@ -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