Skip to content

Commit 0178bb1

Browse files
committed
[grid] Removing browserVersion before sending payload to driver
Fixes #12663
1 parent cc41a88 commit 0178bb1

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,6 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
127127
Capabilities capabilities =
128128
sessionCapabilitiesMutator.apply(sessionRequest.getDesiredCapabilities());
129129

130-
Optional<Platform> platformName = Optional.ofNullable(capabilities.getPlatformName());
131-
if (platformName.isPresent()) {
132-
capabilities = removePlatform(capabilities);
133-
}
134-
135130
CAPABILITIES.accept(span, capabilities);
136131
CAPABILITIES_EVENT.accept(attributeMap, capabilities);
137132
attributeMap.put(
@@ -145,6 +140,17 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
145140
capabilities = setBrowserBinary(capabilities, result.getBrowserPath());
146141
}
147142
}
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+
148154
try {
149155
service.start();
150156

@@ -179,7 +185,10 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
179185

180186
Capabilities caps = new ImmutableCapabilities((Map<?, ?>) response.getValue());
181187
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());
183192
}
184193

185194
caps = readDevToolsEndpointAndVersion(caps);
@@ -319,16 +328,17 @@ private Capabilities readVncEndpoint(Capabilities requestedCaps, Capabilities re
319328
return returnedCaps;
320329
}
321330

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) {
325335
MutableCapabilities noPlatformName = new MutableCapabilities(new HashMap<>(caps.asMap()));
326-
noPlatformName.setCapability("platformName", (String) null);
336+
noPlatformName.setCapability(capability, (String) null);
327337
return new PersistentCapabilities(noPlatformName);
328338
}
329339

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);
332342
}
333343

334344
private String getHost() {

java/src/org/openqa/selenium/manager/SeleniumManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.Arrays;
3232
import java.util.List;
3333
import java.util.Map;
34-
import java.util.Optional;
3534
import java.util.logging.Level;
3635
import java.util.logging.Logger;
3736
import org.openqa.selenium.Beta;
@@ -258,7 +257,11 @@ public Result getDriverPath(Capabilities options, boolean offline) {
258257
if (!options.getBrowserVersion().isEmpty()) {
259258
arguments.add("--browser-version");
260259
arguments.add(options.getBrowserVersion());
261-
((MutableCapabilities) options).setCapability("browserVersion", Optional.empty());
260+
// We know the browser binary path, we don't need the browserVersion.
261+
// Useful when "beta" is specified as browserVersion, but the browser driver cannot match it.
262+
if (options instanceof MutableCapabilities) {
263+
((MutableCapabilities) options).setCapability("browserVersion", (String) null);
264+
}
262265
}
263266

264267
String browserBinary = getBrowserBinary(options);

0 commit comments

Comments
 (0)