Skip to content

Commit 2bcc382

Browse files
appium#319 fix: Inproved capabilities forming
- the different capability forming for Windows and UNIX-like OSs - test cleaning of deprecated code
1 parent bae106f commit 2bcc382

6 files changed

Lines changed: 60 additions & 12 deletions

File tree

src/main/java/io/appium/java_client/remote/AndroidMobileCapabilityType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public interface AndroidMobileCapabilityType extends CapabilityType {
138138
String INTENT_ACTION = "intentAction";
139139

140140
/**
141-
* ntent category which will be used to start activity (default android.intent.category.LAUNCHER)
141+
* Intent category which will be used to start activity (default android.intent.category.LAUNCHER)
142142
*/
143143
String INTENT_CATEGORY = "intentCategory";
144144

src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,9 @@ public AppiumServiceBuilder withCapabilities(DesiredCapabilities capabilities) {
252252
this.capabilities = capabilities;
253253
}
254254
else {
255-
this.capabilities.merge(capabilities);
255+
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
256+
desiredCapabilities.merge(this.capabilities).merge(capabilities);
257+
this.capabilities = desiredCapabilities;
256258
}
257259
return this;
258260
}
@@ -306,8 +308,8 @@ void checkAppiumJS(){
306308
this.appiumJS = findNodeInCurrentFileSystem();
307309
}
308310

309-
@SuppressWarnings("unchecked")
310-
private String parseCapabilities() {
311+
312+
private String parseCapabilitiesIfWindows() {
311313
String result = StringUtils.EMPTY;
312314

313315
if (capabilities != null) {
@@ -344,6 +346,46 @@ private String parseCapabilities() {
344346
return "{" + result + "}";
345347
}
346348

349+
private String parseCapabilitiesIfUNIX() {
350+
String result = StringUtils.EMPTY;
351+
352+
if (capabilities != null) {
353+
Map<String, Object> capabilitiesMap = (Map<String, Object>) capabilities.asMap();
354+
Set<Map.Entry<String, Object>> entries = capabilitiesMap.entrySet();
355+
356+
for (Map.Entry<String, Object> entry : entries) {
357+
Object value = entry.getValue();
358+
359+
if (value == null) {
360+
continue;
361+
}
362+
363+
if (String.class.isAssignableFrom(value.getClass())) {
364+
value = "\"" + String.valueOf(value) + "\"";
365+
} else {
366+
value = String.valueOf(value);
367+
}
368+
369+
String key = "\"" + String.valueOf(entry.getKey()) + "\"";
370+
if (StringUtils.isBlank(result)) {
371+
result = key + ": " + value;
372+
} else {
373+
result = result + ", " + key + ": " + value;
374+
}
375+
}
376+
}
377+
378+
return "'{" + result + "}'";
379+
}
380+
381+
@SuppressWarnings("unchecked")
382+
private String parseCapabilities() {
383+
if (Platform.getCurrent().is(Platform.WINDOWS)) {
384+
return parseCapabilitiesIfWindows();
385+
}
386+
return parseCapabilitiesIfUNIX();
387+
}
388+
347389
@Override
348390
protected ImmutableList<String> createArgs() {
349391
List<String> argList = new ArrayList<>();

src/test/java/io/appium/java_client/pagefactory_tests/SelendroidModeTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.appium.java_client.android.AndroidDriver;
2020
import io.appium.java_client.android.AndroidElement;
2121
import io.appium.java_client.pagefactory.*;
22+
import io.appium.java_client.remote.AndroidMobileCapabilityType;
2223
import io.appium.java_client.remote.AutomationName;
2324
import io.appium.java_client.remote.MobileCapabilityType;
2425
import io.appium.java_client.service.local.AppiumDriverLocalService;
@@ -89,7 +90,7 @@ public class SelendroidModeTest {
8990

9091
@BeforeClass
9192
public static void beforeClass() throws Exception {
92-
AppiumServiceBuilder builder = new AppiumServiceBuilder().withArgument(GeneralServerFlag.AUTOMATION_NAME, AutomationName.SELENDROID);
93+
AppiumServiceBuilder builder = new AppiumServiceBuilder();
9394
service = builder.build();
9495
service.start();
9596

@@ -98,7 +99,8 @@ public static void beforeClass() throws Exception {
9899
DesiredCapabilities capabilities = new DesiredCapabilities();
99100
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
100101
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
101-
capabilities.setCapability(MobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
102+
capabilities.setCapability(AndroidMobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
103+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.SELENDROID);
102104
driver = new AndroidDriver<WebElement>(service.getUrl(), capabilities);
103105
}
104106

src/test/java/io/appium/java_client/pagefactory_tests/widgets/SelendroidOverrideWidgetTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.appium.java_client.android.AndroidDriver;
44
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
55
import io.appium.java_client.pagefactory.TimeOutDuration;
6+
import io.appium.java_client.remote.AndroidMobileCapabilityType;
67
import io.appium.java_client.remote.AutomationName;
78
import io.appium.java_client.remote.MobileCapabilityType;
89
import io.appium.java_client.service.local.AppiumDriverLocalService;
@@ -30,7 +31,7 @@ public class SelendroidOverrideWidgetTest implements WidgetTest{
3031

3132
@BeforeClass
3233
public static void beforeClass() throws Exception {
33-
AppiumServiceBuilder builder = new AppiumServiceBuilder().withArgument(GeneralServerFlag.AUTOMATION_NAME, AutomationName.SELENDROID);
34+
AppiumServiceBuilder builder = new AppiumServiceBuilder();
3435
service = builder.build();
3536
service.start();
3637
}
@@ -42,7 +43,8 @@ public void setUp() throws Exception {
4243
DesiredCapabilities capabilities = new DesiredCapabilities();
4344
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
4445
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
45-
capabilities.setCapability(MobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
46+
capabilities.setCapability(AndroidMobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
47+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.SELENDROID);
4648
driver = new AndroidDriver<>(service.getUrl(), capabilities);
4749

4850
duration = new TimeOutDuration(20, TimeUnit.SECONDS);

src/test/java/io/appium/java_client/pagefactory_tests/widgets/combined/SelendroidCombinedWidgetTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class SelendroidCombinedWidgetTest implements WidgetTest{
3232

3333
@BeforeClass
3434
public static void beforeClass() throws Exception {
35-
AppiumServiceBuilder builder = new AppiumServiceBuilder().withArgument(GeneralServerFlag.AUTOMATION_NAME, AutomationName.SELENDROID);
35+
AppiumServiceBuilder builder = new AppiumServiceBuilder();
3636
service = builder.build();
3737
service.start();
3838
}
@@ -44,7 +44,7 @@ public void setUp() throws Exception {
4444
DesiredCapabilities capabilities = new DesiredCapabilities();
4545
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
4646
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
47-
capabilities.setCapability(MobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
47+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.SELENDROID);
4848
driver = new AndroidDriver<>(service.getUrl(), capabilities);
4949

5050
duration = new TimeOutDuration(20, TimeUnit.SECONDS);

src/test/java/io/appium/java_client/pagefactory_tests/widgets/selendroid/SelendroidWidgetTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.appium.java_client.pagefactory.TimeOutDuration;
66
import io.appium.java_client.pagefactory_tests.widgets.Movie;
77
import io.appium.java_client.pagefactory_tests.widgets.WidgetTest;
8+
import io.appium.java_client.remote.AndroidMobileCapabilityType;
89
import io.appium.java_client.remote.AutomationName;
910
import io.appium.java_client.remote.MobileCapabilityType;
1011
import io.appium.java_client.service.local.AppiumDriverLocalService;
@@ -32,7 +33,7 @@ public class SelendroidWidgetTest implements WidgetTest{
3233

3334
@BeforeClass
3435
public static void beforeClass() throws Exception {
35-
AppiumServiceBuilder builder = new AppiumServiceBuilder().withArgument(GeneralServerFlag.AUTOMATION_NAME, AutomationName.SELENDROID);
36+
AppiumServiceBuilder builder = new AppiumServiceBuilder();
3637
service = builder.build();
3738
service.start();
3839
}
@@ -44,7 +45,8 @@ public void setUp() throws Exception {
4445
DesiredCapabilities capabilities = new DesiredCapabilities();
4546
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
4647
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
47-
capabilities.setCapability(MobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
48+
capabilities.setCapability(AndroidMobileCapabilityType.SELENDROID_PORT, SELENDROID_PORT);
49+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.SELENDROID);
4850
driver = new AndroidDriver<>(service.getUrl(), capabilities);
4951

5052
duration = new TimeOutDuration(20, TimeUnit.SECONDS);

0 commit comments

Comments
 (0)