Skip to content

Commit d07ae8f

Browse files
author
ivaylo.dimitrov
committed
Upgraded Appium version
1 parent 06dbc66 commit d07ae8f

File tree

9 files changed

+99
-79
lines changed

9 files changed

+99
-79
lines changed

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: 23 additions & 22 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;
@@ -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/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/DriverService.java

Lines changed: 7 additions & 10 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;
@@ -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/infrastructure/DriverService.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515

1616

1717
import io.appium.java_client.ios.IOSDriver;
18-
import io.appium.java_client.remote.MobileCapabilityType;
18+
import io.appium.java_client.ios.options.XCUITestOptions;
19+
import io.appium.java_client.remote.AutomationName;
20+
import io.appium.java_client.remote.MobilePlatform;
1921
import lombok.SneakyThrows;
2022
import org.openqa.selenium.MutableCapabilities;
21-
import org.openqa.selenium.Platform;
22-
import org.openqa.selenium.remote.DesiredCapabilities;
2323
import solutions.bellatrix.core.configuration.ConfigurationService;
2424
import solutions.bellatrix.core.utilities.DebugInformation;
2525
import solutions.bellatrix.ios.configuration.GridSettings;
@@ -83,32 +83,34 @@ public static IOSDriver start(AppConfiguration configuration) {
8383
}
8484

8585
private static IOSDriver initializeDriverGridMode(GridSettings gridSettings) {
86-
var caps = new DesiredCapabilities();
87-
caps.setCapability("platform", Platform.WIN10);
88-
caps.setCapability("version", "latest");
86+
var caps = new XCUITestOptions();
87+
caps.setPlatformName(MobilePlatform.IOS);
88+
caps.setAutomationName(AutomationName.IOS_XCUI_TEST);
89+
caps.setPlatformVersion(getAppConfiguration().getIosVersion());
90+
caps.setDeviceName(getAppConfiguration().getDeviceName());
8991

90-
IOSDriver driver = null;
9192
try {
92-
driver = new IOSDriver(new URL(gridSettings.getUrl()), caps);
93+
var driver = new IOSDriver(new URL(gridSettings.getUrl()), caps);
9394
solutions.bellatrix.web.infrastructure.DriverService.setWrappedDriver(driver);
95+
return driver;
9496
} catch (MalformedURLException e) {
9597
DebugInformation.printStackTrace(e);
98+
return null;
9699
}
97-
98-
return driver;
99100
}
100101

101102
@SneakyThrows
102103
private static IOSDriver initializeDriverRegularMode(String serviceUrl) {
103-
var caps = new DesiredCapabilities();
104-
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "IOS");
105-
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, getAppConfiguration().getIosVersion());
106-
caps.setCapability(MobileCapabilityType.DEVICE_NAME, getAppConfiguration().getDeviceName());
104+
var caps = new XCUITestOptions();
105+
caps.setPlatformName(MobilePlatform.IOS);
106+
caps.setAutomationName(AutomationName.IOS_XCUI_TEST);
107+
caps.setPlatformVersion(getAppConfiguration().getIosVersion());
108+
caps.setDeviceName(getAppConfiguration().getDeviceName());
107109

108110
if (getAppConfiguration().getIsMobileWebExecution()) {
109-
caps.setCapability(MobileCapabilityType.BROWSER_NAME, ConfigurationService.get(IOSSettings.class).getDefaultBrowser());
111+
caps.withBrowserName(ConfigurationService.get(IOSSettings.class).getDefaultBrowser());
110112
} else {
111-
caps.setCapability(MobileCapabilityType.APP, getAppConfiguration().getAppPath());
113+
caps.setApp(getAppConfiguration().getAppPath().replace("\\", "/"));
112114
}
113115

114116
addDriverOptions(caps);

framework-tests/bellatrix.android.tests/src/main/resources/testFrameworkSettings.dev.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"defaultDeviceName": "pixel5-test-device",
1010
"defaultAndroidVersion": "10.0",
1111
"defaultBrowser": "Chrome",
12-
"defaultAppPackage": "com.nuvolo.mobius",
12+
"defaultAppPackage": "com.example.android.apis",
1313
"defaultAppActivity": ".MainActivity",
14-
"defaultAppPath": "${APPDATA}/nuvolo-mobius.apk",
14+
"defaultAppPath": "${APPDATA}/ApiDemos.apk",
1515
"artificialDelayBeforeAction": "0",
1616
"automaticallyScrollToVisible": "false",
1717
"waitUntilReadyOnElementFound": "false",

framework-tests/bellatrix.android.tests/src/main/resources/testFrameworkSettings.qa.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"defaultDeviceName": "pixel5-test-device",
1010
"defaultAndroidVersion": "10.0",
1111
"defaultBrowser": "Chrome",
12-
"defaultAppPackage": "com.nuvolo.mobius",
12+
"defaultAppPackage": "com.example.android.apis",
1313
"defaultAppActivity": ".MainActivity",
14-
"defaultAppPath": "${APPDATA}/nuvolo-mobius.apk",
14+
"defaultAppPath": "${APPDATA}/ApiDemos.apk",
1515
"artificialDelayBeforeAction": "0",
1616
"automaticallyScrollToVisible": "false",
1717
"waitUntilReadyOnElementFound": "false",

0 commit comments

Comments
 (0)