Skip to content

Commit 837efa6

Browse files
committed
Implementing ability to set an arbitrary platform capability even if it can't be converted to Platform enum in DesiredCapability constructor from Map. Fixes issue 8333
1 parent f8c8e25 commit 837efa6

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Diff for: java/client/src/org/openqa/selenium/remote/DesiredCapabilities.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ public DesiredCapabilities(Map<String, ?> rawMap) {
6565
capabilities.putAll(rawMap);
6666
Object value = capabilities.get(PLATFORM);
6767
if (value instanceof String) {
68-
capabilities.put(PLATFORM, Platform.valueOf((String) value));
68+
try {
69+
capabilities.put(PLATFORM, Platform.fromString((String) value));
70+
} catch (WebDriverException ex) {
71+
// unrecognized platform, fallback to string
72+
}
6973
}
7074
}
7175

Diff for: java/client/test/org/openqa/selenium/remote/DesiredCapabilitiesTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,14 @@ public void shouldNotAutomaticallyConvertPlatformIfItNotConvertible() {
111111
assertEquals(caps.getCapability(CapabilityType.PLATFORM), "FreeBSD");
112112
}
113113

114+
@Test
115+
public void shouldNotAutomaticallyConvertPlatformIfItNotConvertibleInConstructor() {
116+
Map<String, Object> capabilitiesMap = new HashMap<String, Object>() {{
117+
put(CapabilityType.PLATFORM, "FreeBSD");
118+
}};
119+
120+
DesiredCapabilities caps = new DesiredCapabilities(capabilitiesMap);
121+
assertEquals(caps.getCapability(CapabilityType.PLATFORM), "FreeBSD");
122+
}
123+
114124
}

0 commit comments

Comments
 (0)