Skip to content

Commit 3334607

Browse files
committed
[java] Removing deprecated caps from response
and temporarily excluding some non W3C caps from checks since they are returned by browser drivers. Fixes #10711
1 parent 14651c7 commit 3334607

File tree

5 files changed

+66
-78
lines changed

5 files changed

+66
-78
lines changed

java/src/org/openqa/selenium/AcceptedW3CCapabilityKeys.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ public class AcceptedW3CCapabilityKeys implements Predicate<String> {
3333
"^proxy$",
3434
"^setWindowRect$",
3535
"^strictFileInteractability$",
36+
// TODO: Needs to be removed when ChromeDriver issue is resolved. Not a W3C capability
37+
// https://bugs.chromium.org/p/chromedriver/issues/detail?id=4129
38+
"^networkConnectionEnabled$",
39+
// TODO: Needs to be removed when ChromeDriver issue is resolved. Not a W3C capability
40+
// https://bugs.chromium.org/p/chromedriver/issues/detail?id=4129
41+
"^chrome$",
42+
// TODO: Needs to be removed when GeckoDriver issue is resolved. Not a W3C capability
43+
// https://github.com/mozilla/geckodriver/issues/2023
44+
"^platformVersion$",
3645
"^timeouts$",
3746
"^unhandledPromptBehavior$",
3847
"^webSocketUrl$") // from webdriver-bidi

java/src/org/openqa/selenium/remote/RemoteWebDriver.java

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@
9494
import static java.util.concurrent.TimeUnit.SECONDS;
9595
import static java.util.logging.Level.SEVERE;
9696
import static org.openqa.selenium.remote.CapabilityType.LOGGING_PREFS;
97-
import static org.openqa.selenium.remote.CapabilityType.PLATFORM;
9897
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
9998
import static org.openqa.selenium.remote.CapabilityType.SUPPORTS_JAVASCRIPT;
10099

@@ -256,20 +255,18 @@ protected void startSession(Capabilities capabilities) {
256255
if (responseValue == null) {
257256
throw new SessionNotCreatedException(
258257
"The underlying command executor returned a response without payload: " +
259-
response.toString());
258+
response);
260259
}
261260

262261
if (!(responseValue instanceof Map)) {
263262
throw new SessionNotCreatedException(
264263
"The underlying command executor returned a response with a non well formed payload: " +
265-
response.toString());
264+
response);
266265
}
267266

268267
@SuppressWarnings("unchecked") Map<String, Object> rawCapabilities = (Map<String, Object>) responseValue;
269268
MutableCapabilities returnedCapabilities = new MutableCapabilities(rawCapabilities);
270-
String platformString = (String) rawCapabilities.getOrDefault(
271-
PLATFORM,
272-
rawCapabilities.get(PLATFORM_NAME));
269+
String platformString = (String) rawCapabilities.get(PLATFORM_NAME);
273270
Platform platform;
274271
try {
275272
if (platformString == null || "".equals(platformString)) {
@@ -282,20 +279,8 @@ protected void startSession(Capabilities capabilities) {
282279
// system property. Try to recover and parse this.
283280
platform = Platform.extractFromSysProperty(platformString);
284281
}
285-
returnedCapabilities.setCapability(PLATFORM, platform);
286282
returnedCapabilities.setCapability(PLATFORM_NAME, platform);
287283

288-
if (rawCapabilities.containsKey(SUPPORTS_JAVASCRIPT)) {
289-
Object raw = rawCapabilities.get(SUPPORTS_JAVASCRIPT);
290-
if (raw instanceof String) {
291-
returnedCapabilities.setCapability(SUPPORTS_JAVASCRIPT, Boolean.parseBoolean((String) raw));
292-
} else if (raw instanceof Boolean) {
293-
returnedCapabilities.setCapability(SUPPORTS_JAVASCRIPT, ((Boolean) raw).booleanValue());
294-
}
295-
} else {
296-
returnedCapabilities.setCapability(SUPPORTS_JAVASCRIPT, true);
297-
}
298-
299284
this.capabilities = returnedCapabilities;
300285
sessionId = new SessionId(response.getSessionId());
301286
}
@@ -734,20 +719,16 @@ public String toString() {
734719
return super.toString();
735720
}
736721

737-
// w3c name first
738-
Object platform = caps.getCapability(PLATFORM_NAME);
739-
if (!(platform instanceof String)) {
740-
platform = caps.getCapability(PLATFORM);
741-
}
742-
if (platform == null) {
743-
platform = "unknown";
722+
Object platformName = caps.getCapability(PLATFORM_NAME);
723+
if (platformName == null) {
724+
platformName = "unknown";
744725
}
745726

746727
return String.format(
747728
"%s: %s on %s (%s)",
748729
getClass().getSimpleName(),
749730
caps.getBrowserName(),
750-
platform,
731+
platformName,
751732
getSessionId());
752733
}
753734

java/test/org/openqa/selenium/JavascriptEnabledDriverTest.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,21 @@
1717

1818
package org.openqa.selenium;
1919

20+
import org.junit.Test;
21+
import org.openqa.selenium.interactions.Locatable;
22+
import org.openqa.selenium.support.ui.ExpectedConditions;
23+
import org.openqa.selenium.testing.JUnit4TestBase;
24+
import org.openqa.selenium.testing.NoDriverAfterTest;
25+
import org.openqa.selenium.testing.NotYetImplemented;
26+
2027
import static org.assertj.core.api.Assertions.assertThat;
2128
import static org.junit.Assume.assumeTrue;
2229
import static org.openqa.selenium.WaitingConditions.elementTextToEqual;
2330
import static org.openqa.selenium.WaitingConditions.elementValueToEqual;
2431
import static org.openqa.selenium.WaitingConditions.windowToBeSwitchedToWithName;
25-
import static org.openqa.selenium.remote.CapabilityType.SUPPORTS_JAVASCRIPT;
2632
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
2733
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
2834

29-
import org.junit.Test;
30-
import org.openqa.selenium.interactions.Locatable;
31-
import org.openqa.selenium.support.ui.ExpectedConditions;
32-
import org.openqa.selenium.testing.JUnit4TestBase;
33-
import org.openqa.selenium.testing.NoDriverAfterTest;
34-
import org.openqa.selenium.testing.NotYetImplemented;
35-
3635
public class JavascriptEnabledDriverTest extends JUnit4TestBase {
3736

3837
@Test
@@ -189,7 +188,6 @@ public void testShouldBeAbleToClickIfEvenSomethingHorribleHappens() {
189188
@Test
190189
public void testShouldBeAbleToGetTheLocationOfAnElement() {
191190
assumeTrue(driver instanceof JavascriptExecutor);
192-
assumeTrue(((HasCapabilities) driver).getCapabilities().is(SUPPORTS_JAVASCRIPT));
193191

194192
driver.get(pages.javascriptPage);
195193

java/test/org/openqa/selenium/remote/RemoteWebDriverInitializationTest.java

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,6 @@
1717

1818
package org.openqa.selenium.remote;
1919

20-
import static java.util.Collections.emptyMap;
21-
import static java.util.Collections.singletonMap;
22-
import static org.assertj.core.api.Assertions.assertThat;
23-
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
24-
import static org.mockito.ArgumentMatchers.any;
25-
import static org.mockito.ArgumentMatchers.argThat;
26-
import static org.mockito.Mockito.mock;
27-
import static org.mockito.Mockito.verify;
28-
import static org.mockito.Mockito.verifyNoMoreInteractions;
29-
import static org.mockito.Mockito.when;
30-
import static org.openqa.selenium.remote.WebDriverFixture.echoCapabilities;
31-
import static org.openqa.selenium.remote.WebDriverFixture.exceptionResponder;
32-
import static org.openqa.selenium.remote.WebDriverFixture.nullResponder;
33-
import static org.openqa.selenium.remote.WebDriverFixture.nullValueResponder;
34-
import static org.openqa.selenium.remote.WebDriverFixture.valueResponder;
35-
3620
import com.google.common.collect.ImmutableMap;
3721

3822
import org.junit.Test;
@@ -55,6 +39,22 @@
5539
import java.time.Duration;
5640
import java.util.UUID;
5741

42+
import static java.util.Collections.emptyMap;
43+
import static java.util.Collections.singletonMap;
44+
import static org.assertj.core.api.Assertions.assertThat;
45+
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
46+
import static org.mockito.ArgumentMatchers.any;
47+
import static org.mockito.ArgumentMatchers.argThat;
48+
import static org.mockito.Mockito.mock;
49+
import static org.mockito.Mockito.verify;
50+
import static org.mockito.Mockito.verifyNoMoreInteractions;
51+
import static org.mockito.Mockito.when;
52+
import static org.openqa.selenium.remote.WebDriverFixture.echoCapabilities;
53+
import static org.openqa.selenium.remote.WebDriverFixture.exceptionResponder;
54+
import static org.openqa.selenium.remote.WebDriverFixture.nullResponder;
55+
import static org.openqa.selenium.remote.WebDriverFixture.nullValueResponder;
56+
import static org.openqa.selenium.remote.WebDriverFixture.valueResponder;
57+
5858
@Category(UnitTests.class)
5959
public class RemoteWebDriverInitializationTest {
6060
private boolean quitCalled = false;
@@ -172,24 +172,7 @@ public void canHandleNonStandardCapabilitiesReturnedByRemoteEnd() throws IOExcep
172172
CommandExecutor executor = mock(CommandExecutor.class);
173173
when(executor.execute(any())).thenReturn(resp);
174174
RemoteWebDriver driver = new RemoteWebDriver(executor, new ImmutableCapabilities());
175-
assertThat(driver.getCapabilities().getCapability("platform")).isEqualTo(Platform.UNIX);
176-
}
177-
178-
private class BadStartSessionRemoteWebDriver extends RemoteWebDriver {
179-
public BadStartSessionRemoteWebDriver(CommandExecutor executor,
180-
Capabilities desiredCapabilities) {
181-
super(executor, desiredCapabilities);
182-
}
183-
184-
@Override
185-
protected void startSession(Capabilities desiredCapabilities) {
186-
throw new RuntimeException("Stub session that should fail");
187-
}
188-
189-
@Override
190-
public void quit() {
191-
quitCalled = true;
192-
}
175+
assertThat(driver.getCapabilities().getCapability("platformName")).isEqualTo(Platform.UNIX);
193176
}
194177

195178
@Test
@@ -225,4 +208,21 @@ public void verifyNoCommands(CommandExecutor executor) {
225208
}
226209
verifyNoMoreInteractions(executor);
227210
}
211+
212+
private class BadStartSessionRemoteWebDriver extends RemoteWebDriver {
213+
public BadStartSessionRemoteWebDriver(CommandExecutor executor,
214+
Capabilities desiredCapabilities) {
215+
super(executor, desiredCapabilities);
216+
}
217+
218+
@Override
219+
protected void startSession(Capabilities desiredCapabilities) {
220+
throw new RuntimeException("Stub session that should fail");
221+
}
222+
223+
@Override
224+
public void quit() {
225+
quitCalled = true;
226+
}
227+
}
228228
}

java/test/org/openqa/selenium/support/ui/WebDriverWaitTest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@
1717

1818
package org.openqa.selenium.support.ui;
1919

20-
import static org.assertj.core.api.Assertions.assertThat;
21-
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
22-
import static org.mockito.ArgumentMatchers.any;
23-
import static org.mockito.Mockito.mock;
24-
import static org.mockito.Mockito.when;
25-
import static org.mockito.Mockito.withSettings;
26-
2720
import org.junit.Before;
2821
import org.junit.Test;
2922
import org.junit.experimental.categories.Category;
@@ -49,6 +42,13 @@
4942
import java.io.IOException;
5043
import java.time.Duration;
5144

45+
import static org.assertj.core.api.Assertions.assertThat;
46+
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
47+
import static org.mockito.ArgumentMatchers.any;
48+
import static org.mockito.Mockito.mock;
49+
import static org.mockito.Mockito.when;
50+
import static org.mockito.Mockito.withSettings;
51+
5252
@Category(UnitTests.class)
5353
public class WebDriverWaitTest {
5454

@@ -77,8 +77,8 @@ public void shouldIncludeRemoteInfoForWrappedDriverTimeout() throws IOException
7777
new WebDriverWait(testDriver, Duration.ofSeconds(1), Duration.ofMillis(200), clock, clock);
7878

7979
assertThatExceptionOfType(TimeoutException.class)
80-
.isThrownBy(() -> wait.until(d -> false))
81-
.withMessageContaining("Capabilities {javascriptEnabled: true, platform: ANY, platformName: ANY}")
80+
.isThrownBy(() -> wait.until(d -> false))
81+
.withMessageContaining("Capabilities {platformName: ANY}")
8282
.withMessageContaining("Session ID: foo");
8383
}
8484

0 commit comments

Comments
 (0)