Skip to content

Commit b0bb8ac

Browse files
Merge pull request #48 from testdevlab/Remote
fix emulator and app testing for iOS
2 parents 5158e78 + 8412ac8 commit b0bb8ac

13 files changed

Lines changed: 287 additions & 103 deletions

File tree

src/main/java/testUI/AndroidUtils/ADBUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ public List<String> getDeviceNames() {
8686
public String getDeviceStatus(String device) {
8787
setPathAndCheckAdbServer();
8888
String s;
89+
if (device == null || device.isEmpty()) {
90+
throw new TestUIException("device name cannot be empty");
91+
}
8992
try {
9093
Process p = Runtime.getRuntime().exec(
9194
androidHome +

src/main/java/testUI/Configuration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class Configuration extends SelenideConfiguration {
1313
public static final String DESKTOP_PLATFORM = "desktop";
1414

1515
// IOS CAPABILITIES
16-
public static int wdaPort = 0;
16+
public static int wdaPort = 8100;
1717
public static String iOSAppPath = "";
1818
public static String iOSDeviceName = "";
1919
public static String iOSVersion = "";

src/main/java/testUI/IOSUtils/IOCapabilities.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ private static DesiredCapabilities getIOSDevice() {
103103
Configuration.iOSDeviceName = iosCommands.getIOSName(Configuration.UDID);
104104
}
105105
}
106+
Configuration.iOSDeviceName = Configuration.iOSDeviceName.isEmpty() ? "iPhone" :
107+
Configuration.iOSDeviceName;
108+
Configuration.iOSVersion = Configuration.iOSVersion.isEmpty() ? "13.2" :
109+
Configuration.iOSVersion;
106110
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,
107111
Configuration.iOSDeviceName);
108112
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION,
@@ -114,6 +118,10 @@ private static DesiredCapabilities getIOSDevice() {
114118
} else {
115119
capabilities.setCapability("udid", Configuration.UDID);
116120
}
121+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,
122+
Configuration.iOSDeviceName);
123+
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION,
124+
Configuration.iOSVersion);
117125
}
118126
} else {
119127
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,

src/main/java/testUI/IOSUtils/IOSCommands.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private Map<String, Map<String, String>> getSimulatorNames() {
3333
}
3434
boolean Devices = false;
3535
for (String line : output) {
36-
if (Devices && line.contains("iPhone")) {
36+
if (Devices && line.contains("iPhone") && !line.toLowerCase().contains("unavailable")) {
3737
devices.put(
3838
line.split(" \\(")[0].split(" ")[1],
3939
line.split("\\(")[1].split("\\)")[0]);
@@ -83,9 +83,11 @@ private Map<String, String> getSampleSimulator() {
8383
for (String phone : simulators.get(keys).keySet()) {
8484
name = phone;
8585
udid = simulators.get(keys).get(phone);
86-
break;
86+
if (!name.isEmpty() && !udid.isEmpty())
87+
break;
8788
}
88-
break;
89+
if (!name.isEmpty() && !udid.isEmpty())
90+
break;
8991
}
9092
sample.put("version", version);
9193
sample.put("name", name);
@@ -110,6 +112,8 @@ public String getIOSVersion(String udid) {
110112
} catch (IOException e) {
111113
e.printStackTrace();
112114
}
115+
if (output.get(0).toLowerCase().contains("no device found"))
116+
return "13.0";
113117
return output.get(0);
114118
}
115119

@@ -125,7 +129,7 @@ public String getIOSName(String udid) {
125129
output.add(s);
126130
if (s.contains("No device found")) {
127131
putLogWarn("No device found with this UDID: " + udid);
128-
return "";
132+
return "iPhone";
129133
}
130134
}
131135
Process p2 = Runtime.getRuntime().exec(

src/main/java/testUI/IOSUtils/IOSOpen.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,39 @@ public class IOSOpen extends Configuration {
1717
public void openIOSApp(TestUIConfiguration configuration) {
1818
Configuration.iOSDevices++;
1919
if (Configuration.appiumUrl.isEmpty() &&
20-
((getAppiumServices().size() == 0 || getAppiumServices().get(0).isRunning()) &&
21-
Configuration.desiredCapabilities == null) || getIOSDevices().size() == 0) {
20+
(((getAppiumServices().size() == 0 || !getAppiumServices().get(0).isRunning()) &&
21+
Configuration.desiredCapabilities == null) || getIOSDevices().size() == 0)) {
2222
if (getAppiumServices().size() != 0) {
2323
stop(1);
2424
}
2525
startServerAndDevice(configuration);
26-
DesiredCapabilities cap = setIOSCapabilities(false);
27-
startFirstIOSDriver(cap);
26+
startFirstIOSDriver();
2827
} else {
29-
DesiredCapabilities cap = setIOSCapabilities(false);
3028
if (Configuration.appiumUrl.isEmpty()) {
3129
putAllureParameter("Using Appium port", Configuration.getUsePort().get(0));
3230
} else {
3331
putAllureParameter("Using Appium url", Configuration.appiumUrl);
3432
}
35-
startFirstIOSDriver(cap);
33+
startFirstIOSDriver();
3634
}
3735
}
3836

3937
public void openNewIOSApp(TestUIConfiguration configuration) {
4038
Configuration.iOSDevices++;
4139
if (getAppiumServices().size() == 0 || !getAppiumServices().get(0).isRunning()) {
4240
startServerAndDevice(configuration);
43-
DesiredCapabilities cap = setIOSCapabilities(false);
44-
startFirstIOSDriver(cap);
41+
startFirstIOSDriver();
4542
} else {
46-
DesiredCapabilities cap = setIOSCapabilities(false);
4743
putAllureParameter("Using Appium port", Configuration.getUsePort().get(0));
48-
startFirstIOSDriver(cap);
44+
startFirstIOSDriver();
4945
}
5046
}
5147

5248
public void openIOSBrowser(String urlOrRelativeUrl, TestUIConfiguration configuration) {
5349
urlOrRelativeUrl = Configuration.baseUrl + urlOrRelativeUrl;
5450
if (Configuration.appiumUrl.isEmpty() &&
5551
(((getAppiumServices().size() == 0 || !getAppiumServices().get(0).isRunning()) &&
56-
Configuration.desiredCapabilities == null) || getIOSDevices().size() == 0)) {
52+
Configuration.desiredCapabilities == null) || getIOSDevices().size() == 0)) {
5753
if (getAppiumServices().size() != 0) {
5854
stop(1);
5955
}

src/main/java/testUI/IOSUtils/IOSTestUIDriver.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,23 @@
2020
import static testUI.Utils.Logger.putLogInfo;
2121

2222
public class IOSTestUIDriver {
23-
protected static void startFirstIOSDriver(DesiredCapabilities desiredCapabilities) {
23+
protected static void startFirstIOSDriver() {
2424
String url = Configuration.appiumUrl.isEmpty() ?
2525
"http://127.0.0.1:" + getUsePort().get(0) + "/wd/hub" : Configuration.appiumUrl;
26-
for (int i = 0; i < 2; i++) {
26+
for (int i = 0; true; i++) {
27+
DesiredCapabilities cap = setIOSCapabilities(false);
2728
try {
2829
putLog("Starting appium driver...");
2930
if (getDrivers().size() == 0) {
3031
TestUIDriver.setDriver(new IOSDriver(
31-
new URL(url), desiredCapabilities) {});
32+
new URL(url), cap) {});
3233
} else {
3334
TestUIDriver.setDriver(new IOSDriver(
34-
new URL(url), desiredCapabilities) {}, 0);
35+
new URL(url), cap) {}, 0);
3536
}
37+
Configuration.driver = 1;
3638
attachShutDownHookStopDriver(getDriver());
37-
break;
39+
return;
3840
} catch (Exception e) {
3941
putLogError("Could not create driver! retrying...");
4042
sleep(500);
@@ -51,7 +53,7 @@ protected static void startFirstIOSDriver(DesiredCapabilities desiredCapabilitie
5153
protected static void startFirstIOSBrowserDriver(String urlOrRelativeUrl) {
5254
String url = Configuration.appiumUrl.isEmpty() ?
5355
"http://127.0.0.1:" + getUsePort().get(0) + "/wd/hub" : Configuration.appiumUrl;
54-
for (int i = 0; i < 2; i++) {
56+
for (int i = 0; true; i++) {
5557
DesiredCapabilities cap = setIOSCapabilities(true);
5658
try {
5759
putLog("Starting appium driver...");
@@ -63,13 +65,13 @@ protected static void startFirstIOSBrowserDriver(String urlOrRelativeUrl) {
6365
Configuration.driver = 1;
6466
getDriver().get(urlOrRelativeUrl);
6567
attachShutDownHookStopDriver(getDriver());
66-
break;
68+
return;
6769
} catch (MalformedURLException e) {
6870
e.printStackTrace();
6971
} catch (Exception e) {
7072
putLogError("Could not create driver! retrying...");
7173
sleep(500);
72-
if (i == 1) {
74+
if (i == 0) {
7375
e.printStackTrace();
7476
throw new Error(e);
7577
}

src/main/java/testUI/TestUIServer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@ protected static void setRunDevice(int realDevices,
272272
IOSCommands iosCommands = new IOSCommands();
273273
Map<String, String> sampleIOSDevice = iosCommands.getSampleDevice(device);
274274
UDID = sampleIOSDevice.get("udid");
275+
iOSDeviceName = sampleIOSDevice.get("name");
276+
iOSVersion = sampleIOSDevice.get("version");
275277
}
276278
setiOSDevice(UDID);
277279
}

0 commit comments

Comments
 (0)