Skip to content

Commit 57a8fcc

Browse files
authored
Merge pull request #60 from AutomateThePlanet/appium-version-upgrade
Upgraded appium version
2 parents bf3294a + 3cfae63 commit 57a8fcc

File tree

16 files changed

+116
-97
lines changed

16 files changed

+116
-97
lines changed

bellatrix.android/src/main/java/solutions/bellatrix/android/configuration/GridSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ public class GridSettings {
2323
@Getter @Setter private String providerName;
2424
@Getter @Setter private String optionsName;
2525
@Getter @Setter private String url;
26-
@Getter @Setter private List<HashMap<String, String>> arguments;
26+
@Getter @Setter private List<HashMap<String, Object>> arguments;
2727
}

bellatrix.android/src/main/java/solutions/bellatrix/android/infrastructure/AppConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class AppConfiguration {
3232
@Getter private String androidVersion;
3333
@Setter @Getter private String testName;
3434
@Getter private final Boolean isMobileWebExecution;
35-
@Getter HashMap<String, String> appiumOptions;
35+
@Getter HashMap<String, Object> appiumOptions;
3636

3737
@Override
3838
public boolean equals(Object o) {

bellatrix.android/src/main/java/solutions/bellatrix/android/infrastructure/DriverService.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313

1414
package solutions.bellatrix.android.infrastructure;
1515

16-
1716
import io.appium.java_client.android.AndroidDriver;
18-
import io.appium.java_client.remote.AndroidMobileCapabilityType;
19-
import io.appium.java_client.remote.MobileCapabilityType;
17+
import io.appium.java_client.android.options.UiAutomator2Options;
18+
import io.appium.java_client.remote.AutomationName;
19+
import io.appium.java_client.remote.MobilePlatform;
2020
import lombok.SneakyThrows;
2121
import org.openqa.selenium.MutableCapabilities;
22-
import org.openqa.selenium.remote.DesiredCapabilities;
2322
import solutions.bellatrix.android.configuration.AndroidSettings;
2423
import solutions.bellatrix.android.configuration.GridSettings;
2524
import solutions.bellatrix.core.configuration.ConfigurationService;
@@ -37,7 +36,7 @@
3736
public class DriverService {
3837
private static final ThreadLocal<Boolean> DISPOSED;
3938
private static final ThreadLocal<AppConfiguration> APP_CONFIGURATION;
40-
private static final ThreadLocal<HashMap<String, String>> CUSTOM_DRIVER_OPTIONS;
39+
private static final ThreadLocal<HashMap<String, Object>> CUSTOM_DRIVER_OPTIONS;
4140
private static final ThreadLocal<AndroidDriver> WRAPPED_ANDROID_DRIVER;
4241
private static boolean isBuildNameSet = false;
4342
private static String buildName;
@@ -51,7 +50,7 @@ public class DriverService {
5150
DISPOSED.set(false);
5251
}
5352

54-
public static HashMap<String, String> getCustomDriverOptions() {
53+
public static HashMap<String, Object> getCustomDriverOptions() {
5554
return CUSTOM_DRIVER_OPTIONS.get();
5655
}
5756

@@ -89,22 +88,23 @@ public static AndroidDriver start(AppConfiguration configuration) {
8988
}
9089

9190
private static AndroidDriver initializeDriverGridMode(GridSettings gridSettings, String testName) {
92-
var caps = new DesiredCapabilities();
93-
HashMap<String, Object> options = new HashMap<String, Object>();
94-
options.put(MobileCapabilityType.PLATFORM_NAME, "Android");
95-
options.put(MobileCapabilityType.PLATFORM_VERSION, getAppConfiguration().getAndroidVersion());
96-
options.put(MobileCapabilityType.DEVICE_NAME, getAppConfiguration().getDeviceName());
91+
var caps = new UiAutomator2Options();
92+
caps.setPlatformName(MobilePlatform.ANDROID);
93+
caps.setAutomationName(AutomationName.ANDROID_UIAUTOMATOR2);
94+
caps.setPlatformVersion(getAppConfiguration().getAndroidVersion());
95+
caps.setDeviceName(getAppConfiguration().getDeviceName());
9796

9897
if (getAppConfiguration().getIsMobileWebExecution()) {
99-
options.put(MobileCapabilityType.BROWSER_NAME, ConfigurationService.get(AndroidSettings.class).getDefaultBrowser());
98+
caps.withBrowserName(ConfigurationService.get(AndroidSettings.class).getDefaultBrowser());
10099
} else {
101-
options.put(MobileCapabilityType.APP, getAppConfiguration().getAppPath().replace("\\", "/"));
102-
options.put(AndroidMobileCapabilityType.APP_PACKAGE, getAppConfiguration().getAppPackage());
103-
options.put(AndroidMobileCapabilityType.APP_ACTIVITY, getAppConfiguration().getAppActivity());
100+
caps.setApp(getAppConfiguration().getAppPath().replace("\\", "/"));
101+
caps.setAppPackage(getAppConfiguration().getAppPackage());
102+
caps.setAppActivity(getAppConfiguration().getAppActivity());
104103
}
105104

106-
options.put("name", testName);
105+
var options = new HashMap<String, Object>();
107106
addGridOptions(options, gridSettings);
107+
options.put("name", testName);
108108
caps.setCapability(gridSettings.getOptionsName(), options);
109109

110110
AndroidDriver driver = null;
@@ -120,17 +120,18 @@ private static AndroidDriver initializeDriverGridMode(GridSettings gridSettings,
120120

121121
@SneakyThrows
122122
private static AndroidDriver initializeDriverRegularMode(String serviceUrl) {
123-
var caps = new DesiredCapabilities();
124-
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
125-
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, getAppConfiguration().getAndroidVersion());
126-
caps.setCapability(MobileCapabilityType.DEVICE_NAME, getAppConfiguration().getDeviceName());
123+
var caps = new UiAutomator2Options();
124+
caps.setPlatformName(MobilePlatform.ANDROID);
125+
caps.setAutomationName(AutomationName.ANDROID_UIAUTOMATOR2);
126+
caps.setPlatformVersion(getAppConfiguration().getAndroidVersion());
127+
caps.setDeviceName(getAppConfiguration().getDeviceName());
127128

128129
if (getAppConfiguration().getIsMobileWebExecution()) {
129-
caps.setCapability(MobileCapabilityType.BROWSER_NAME, ConfigurationService.get(AndroidSettings.class).getDefaultBrowser());
130+
caps.withBrowserName(ConfigurationService.get(AndroidSettings.class).getDefaultBrowser());
130131
} else {
131-
caps.setCapability(MobileCapabilityType.APP, getAppConfiguration().getAppPath());
132-
caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, getAppConfiguration().getAppPackage());
133-
caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, getAppConfiguration().getAppActivity());
132+
caps.setApp(getAppConfiguration().getAppPath().replace("\\", "/"));
133+
caps.setAppPackage(getAppConfiguration().getAppPackage());
134+
caps.setAppActivity(getAppConfiguration().getAppActivity());
134135
}
135136

136137
addDriverConfigOptions(caps);

bellatrix.android/src/main/java/solutions/bellatrix/android/services/AppService.java

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
package solutions.bellatrix.android.services;
1515

16-
import io.appium.java_client.android.Activity;
16+
import com.google.common.collect.ImmutableMap;
1717
import lombok.SneakyThrows;
1818
import org.openqa.selenium.ContextAware;
1919
import org.openqa.selenium.support.ui.WebDriverWait;
@@ -23,7 +23,7 @@
2323
import solutions.bellatrix.core.utilities.RuntimeInformation;
2424

2525
import java.time.Duration;
26-
import java.util.List;
26+
import java.util.*;
2727
import java.util.concurrent.atomic.AtomicBoolean;
2828
import java.util.function.BooleanSupplier;
2929

@@ -35,38 +35,60 @@ public String getCurrentActivity() {
3535
public void startActivity(
3636
String appPackage,
3737
String appActivity,
38-
String appWaitPackage,
39-
String appWaitActivity,
40-
boolean stopApp) {
38+
boolean shouldWait,
39+
boolean stopApp
40+
) {
4141
try {
4242
getWrappedAndroidDriver().hideKeyboard();
4343
} catch (Exception ignore) {}
44-
var activity = new Activity(appPackage, appActivity);
45-
activity.setAppWaitActivity(appWaitActivity);
46-
activity.setAppWaitPackage(appWaitPackage);
47-
activity.setStopApp(stopApp);
48-
getWrappedAndroidDriver().startActivity(activity);
44+
var activity = ImmutableMap.of(
45+
"package", appPackage,
46+
"component", appActivity,
47+
"wait", shouldWait,
48+
"stop", stopApp
49+
);
50+
51+
getWrappedAndroidDriver().execute("mobile: startActivity", activity);
4952
}
5053

5154
public void startActivity(
5255
String appPackage,
53-
String appActivity) {
54-
var activity = new Activity(appPackage, appActivity);
55-
getWrappedAndroidDriver().startActivity(activity);
56+
String appActivity
57+
) {
58+
var activity = ImmutableMap.of(
59+
"package", appPackage,
60+
"component", appActivity
61+
);
62+
63+
getWrappedAndroidDriver().execute("mobile: startActivity", activity);
5664
}
5765

58-
public void startActivityWithIntent(String appPackage, String appActivity, String intentAction, String appWaitPackage, String appWaitActivity, String intentCategory, String intentFlags, String intentOptionalArgs, boolean stopApp) {
66+
public void startActivityWithIntent(
67+
String appPackage,
68+
String appActivity,
69+
String intentAction,
70+
boolean shouldWait,
71+
String intentCategory,
72+
String intentFlags,
73+
List<List<String>> intentOptionalArgs,
74+
boolean stopApp
75+
) {
5976
try {
6077
getWrappedAndroidDriver().hideKeyboard();
6178
} catch (Exception ignore) {}
62-
var activity = new Activity(appPackage, appActivity);
63-
activity.setAppWaitActivity(appWaitActivity);
64-
activity.setAppWaitPackage(appWaitPackage);
65-
activity.setStopApp(stopApp);
66-
activity.setIntentCategory(intentCategory);
67-
activity.setIntentFlags(intentFlags);
68-
activity.setOptionalIntentArguments(intentOptionalArgs);
69-
getWrappedAndroidDriver().startActivity(activity);
79+
80+
var activity = ImmutableMap.of(
81+
"package", appPackage,
82+
"component", appActivity,
83+
"action", intentAction,
84+
"wait", shouldWait,
85+
"categories", intentCategory,
86+
"flags", intentFlags,
87+
"extras", intentOptionalArgs,
88+
"stop", stopApp
89+
);
90+
91+
getWrappedAndroidDriver().execute("mobile: startActivity", activity);
7092
}
7193

7294
public String getContext() {
@@ -157,7 +179,7 @@ private void switchToWebView(BooleanSupplier filterConditionToSwitchWebView) {
157179
var timeoutInterval = ConfigurationService.get(AndroidSettings.class).getTimeoutSettings().getImplicitWaitTimeout();
158180
var sleepInterval = ConfigurationService.get(AndroidSettings.class).getTimeoutSettings().getSleepInterval();
159181
var webDriverWait = new WebDriverWait(DriverService.getWrappedAndroidDriver(), Duration.ofSeconds(timeoutInterval), Duration.ofSeconds(sleepInterval));
160-
webDriverWait.until(d ->{
182+
webDriverWait.until(d -> {
161183
var contexts = ((ContextAware)getWrappedAndroidDriver()).getContextHandles();
162184
contexts.stream().forEach(c -> {
163185
try {

bellatrix.core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
<properties>
2727
<selenium.version>4.27.0</selenium.version>
28-
<appium.version>8.3.0</appium.version>
28+
<appium.version>9.4.0</appium.version>
2929
<testng.version>7.7.0</testng.version>
3030
<junit.version>5.9.2</junit.version>
3131
<rest.assured.version>5.3.0</rest.assured.version>

bellatrix.desktop/src/main/java/solutions/bellatrix/desktop/configuration/GridSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@
2222
public class GridSettings {
2323
@Getter @Setter private String providerName;
2424
@Getter @Setter private String url;
25-
@Getter @Setter private List<HashMap<String, String>> arguments;
25+
@Getter @Setter private List<HashMap<String, Object>> arguments;
2626
}

bellatrix.desktop/src/main/java/solutions/bellatrix/desktop/findstrategies/AutomationIdFindStrategy.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
package solutions.bellatrix.desktop.findstrategies;
1515

16-
import io.appium.java_client.AppiumBy;
17-
import io.appium.java_client.pagefactory.WindowsBy;
1816
import io.appium.java_client.windows.WindowsDriver;
1917
import org.openqa.selenium.By;
2018
import org.openqa.selenium.WebElement;

bellatrix.desktop/src/main/java/solutions/bellatrix/desktop/infrastructure/AppConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public class AppConfiguration {
2020
private final Lifecycle lifecycle;
2121
private int height;
2222
private int width;
23-
final HashMap<String, String> appiumOptions;
23+
final HashMap<String, Object> appiumOptions;
2424

25-
public HashMap<String, String> getAppiumOptions() {
25+
public HashMap<String, Object> getAppiumOptions() {
2626
return appiumOptions;
2727
}
2828

bellatrix.desktop/src/main/java/solutions/bellatrix/desktop/infrastructure/DriverService.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@
1414
package solutions.bellatrix.desktop.infrastructure;
1515

1616
import io.appium.java_client.windows.WindowsDriver;
17+
import io.appium.java_client.windows.options.WindowsOptions;
1718
import lombok.SneakyThrows;
1819
import org.openqa.selenium.Dimension;
1920
import org.openqa.selenium.MutableCapabilities;
20-
import org.openqa.selenium.Platform;
2121
import org.openqa.selenium.WebDriver;
22-
import org.openqa.selenium.remote.DesiredCapabilities;
2322
import solutions.bellatrix.core.configuration.ConfigurationService;
2423
import solutions.bellatrix.core.utilities.DebugInformation;
2524
import solutions.bellatrix.desktop.configuration.DesktopSettings;
@@ -34,7 +33,7 @@
3433
public class DriverService {
3534
private static final ThreadLocal<Boolean> DISPOSED;
3635
private static final ThreadLocal<AppConfiguration> APP_CONFIGURATION;
37-
private static final ThreadLocal<HashMap<String, String>> CUSTOM_DRIVER_OPTIONS;
36+
private static final ThreadLocal<HashMap<String, Object>> CUSTOM_DRIVER_OPTIONS;
3837
private static final ThreadLocal<WindowsDriver> WRAPPED_DRIVER;
3938

4039
static {
@@ -46,7 +45,7 @@ public class DriverService {
4645
DISPOSED.set(false);
4746
}
4847

49-
public static HashMap<String, String> getCustomDriverOptions() {
48+
public static HashMap<String, Object> getCustomDriverOptions() {
5049
return CUSTOM_DRIVER_OPTIONS.get();
5150
}
5251

@@ -85,9 +84,9 @@ public static WindowsDriver start(AppConfiguration configuration) {
8584
}
8685

8786
private static WindowsDriver initializeDriverGridMode(GridSettings gridSettings) {
88-
var caps = new DesiredCapabilities();
89-
caps.setCapability("platform", Platform.WIN10);
90-
caps.setCapability("version", "latest");
87+
var caps = new WindowsOptions();
88+
caps.setApp(getAppConfiguration().getAppPath().replace("\\", "/"));
89+
caps.setAppWorkingDir(new File(getAppConfiguration().getAppPath()).getParent());
9190

9291
WindowsDriver driver = null;
9392
try {
@@ -101,11 +100,9 @@ private static WindowsDriver initializeDriverGridMode(GridSettings gridSettings)
101100

102101
@SneakyThrows
103102
private static WindowsDriver initializeDriverRegularMode(String serviceUrl) {
104-
var caps = new DesiredCapabilities();
105-
caps.setCapability("app", getAppConfiguration().getAppPath());
106-
caps.setCapability("deviceName", "WindowsPC");
107-
caps.setCapability("platformName", "Windows");
108-
caps.setCapability("appWorkingDir", new File(getAppConfiguration().getAppPath()).getParent());
103+
var caps = new WindowsOptions();
104+
caps.setApp(getAppConfiguration().getAppPath().replace("\\", "/"));
105+
caps.setAppWorkingDir(new File(getAppConfiguration().getAppPath()).getParent());
109106
addDriverOptions(caps);
110107
var driver = new WindowsDriver(new URL(serviceUrl), caps);
111108

bellatrix.ios/src/main/java/solutions/bellatrix/ios/configuration/GridSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@
2222
public class GridSettings {
2323
@Getter @Setter private String providerName;
2424
@Getter @Setter private String url;
25-
@Getter @Setter private List<HashMap<String, String>> arguments;
25+
@Getter @Setter private List<HashMap<String, Object>> arguments;
2626
}

0 commit comments

Comments
 (0)