@@ -127,11 +127,6 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
127
127
Capabilities capabilities =
128
128
sessionCapabilitiesMutator .apply (sessionRequest .getDesiredCapabilities ());
129
129
130
- Optional <Platform > platformName = Optional .ofNullable (capabilities .getPlatformName ());
131
- if (platformName .isPresent ()) {
132
- capabilities = removePlatform (capabilities );
133
- }
134
-
135
130
CAPABILITIES .accept (span , capabilities );
136
131
CAPABILITIES_EVENT .accept (attributeMap , capabilities );
137
132
attributeMap .put (
@@ -145,6 +140,17 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
145
140
capabilities = setBrowserBinary (capabilities , result .getBrowserPath ());
146
141
}
147
142
}
143
+
144
+ Optional <Platform > platformName = Optional .ofNullable (capabilities .getPlatformName ());
145
+ if (platformName .isPresent ()) {
146
+ capabilities = removeCapability (capabilities , "platformName" );
147
+ }
148
+
149
+ Optional <String > browserVersion = Optional .ofNullable (capabilities .getBrowserVersion ());
150
+ if (browserVersion .isPresent ()) {
151
+ capabilities = removeCapability (capabilities , "browserVersion" );
152
+ }
153
+
148
154
try {
149
155
service .start ();
150
156
@@ -179,7 +185,10 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
179
185
180
186
Capabilities caps = new ImmutableCapabilities ((Map <?, ?>) response .getValue ());
181
187
if (platformName .isPresent ()) {
182
- caps = setInitialPlatform (caps , platformName .get ());
188
+ caps = setInitialCapabilityValue (caps , "platformName" , platformName .get ());
189
+ }
190
+ if (browserVersion .isPresent ()) {
191
+ caps = setInitialCapabilityValue (caps , "browserVersion" , browserVersion .get ());
183
192
}
184
193
185
194
caps = readDevToolsEndpointAndVersion (caps );
@@ -319,16 +328,17 @@ private Capabilities readVncEndpoint(Capabilities requestedCaps, Capabilities re
319
328
return returnedCaps ;
320
329
}
321
330
322
- // We remove the platform before sending the caps to the driver because some drivers will
323
- // reject session requests when they cannot parse the platform.
324
- private Capabilities removePlatform (Capabilities caps ) {
331
+ // We remove a capability before sending the caps to the driver because some drivers will
332
+ // reject session requests when they cannot parse the specific capabilities (like platform or
333
+ // browser version).
334
+ private Capabilities removeCapability (Capabilities caps , String capability ) {
325
335
MutableCapabilities noPlatformName = new MutableCapabilities (new HashMap <>(caps .asMap ()));
326
- noPlatformName .setCapability ("platformName" , (String ) null );
336
+ noPlatformName .setCapability (capability , (String ) null );
327
337
return new PersistentCapabilities (noPlatformName );
328
338
}
329
339
330
- private Capabilities setInitialPlatform (Capabilities caps , Platform platform ) {
331
- return new PersistentCapabilities (caps ).setCapability ("platformName" , platform );
340
+ private Capabilities setInitialCapabilityValue (Capabilities caps , String key , Object value ) {
341
+ return new PersistentCapabilities (caps ).setCapability (key , value );
332
342
}
333
343
334
344
private String getHost () {
0 commit comments