Skip to content

Commit 7cded70

Browse files
committed
[master] - added ability to configure environment using both Env Variables and System Properties
1 parent 507a2d4 commit 7cded70

File tree

4 files changed

+131
-89
lines changed

4 files changed

+131
-89
lines changed

readme.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,40 +43,40 @@ This is JAVA library for the running of mobile, web or API automated tests.
4343

4444
#### ! Do not forget to put Chrome driver into Your project src/test/resources/drivers ! ####
4545

46-
- Specify env variables (example):
47-
* For Web local run::
48-
49-
export IS_LOCAL=True
50-
export BROWSER=Firefox|Chrome|IE|Safari
46+
- Specify env variables or system properties (example):
47+
* For Web local run:
48+
49+
IS_LOCAL=True
50+
BROWSER=Firefox|Chrome|IE|Safari
5151

5252
* For Web remote run:
5353

54-
export IS_REMOTE=True
55-
export BROWSER=Firefox|Chrome|IE|Safari
56-
export EXECUTOR=http://{host}:{port}/wd/hub
57-
(optional available with Chrome only) export MOBILE_DEVICE_EMULATION=Google Nexus 5|Apple iPhone 6|Samsung Galaxy S5
54+
IS_REMOTE=True
55+
BROWSER=Firefox|Chrome|IE|Safari
56+
EXECUTOR=http://{host}:{port}/wd/hub
57+
(optional available with Chrome only) MOBILE_DEVICE_EMULATION=Google Nexus 5|Apple iPhone 6|Samsung Galaxy S5
5858

5959
* For Web Mobile run:
6060

61-
export IS_MOBILE=True
62-
export PLATFORM=Android|iOS
63-
export BROWSER=Chrome|Safari
64-
export EXECUTOR=http://{host}:{port}/wd/hub
65-
export DEVICE=Device name
61+
IS_MOBILE=True
62+
PLATFORM=Android|iOS
63+
BROWSER=Chrome|Safari
64+
EXECUTOR=http://{host}:{port}/wd/hub
65+
DEVICE=Device name
6666
6767
* For Web Headless run (with PhantomJS without browser):
6868

69-
export IS_HEADLESS=True
70-
export BROWSER=Firefox|Chrome|IE|Safari
71-
export PHANTOM_JS_PATH=C://phantomjs.exe
69+
IS_HEADLESS=True
70+
BROWSER=Firefox|Chrome|IE|Safari
71+
PHANTOM_JS_PATH=C://phantomjs.exe
7272

7373
* For Native Mobile run:
7474

75-
export IS_MOBILE=True
76-
export PLATFORM=Android|iOS
77-
export APP={path_to_app}
78-
export EXECUTOR=http://{host}:{port}/wd/hub
79-
export DEVICE=Device name
75+
IS_MOBILE=True
76+
PLATFORM=Android|iOS
77+
APP={path_to_app}
78+
EXECUTOR=http://{host}:{port}/wd/hub
79+
DEVICE=Device name
8080

8181
### Possibilities ###
8282
- Verification that elements are aligned correctly on the web or mobile page

src/main/java/environment/EnvironmentFactory.java

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,144 +2,134 @@
22

33
public class EnvironmentFactory {
44

5-
private static final String IS_MOBILE = System.getenv("IS_MOBILE");
6-
private static final String IS_LOCAL = System.getenv("IS_LOCAL");
7-
private static final String IS_HEADLESS = System.getenv("IS_HEADLESS");
8-
private static final String IS_REMOTE = System.getenv("IS_REMOTE");
9-
private static final String PLATFORM = System.getenv("PLATFORM");
10-
private static final String PHANTOM_JS_PATH = System.getenv("PHANTOM_JS_PATH");
11-
private static final String PLATFORM_VERSION = System.getenv("PLATFORM_VERSION");
12-
private static final String DEVICE = System.getenv("DEVICE");
13-
private static final String MOBILE_DEVICE_EMULATION = System.getenv("MOBILE_DEVICE_EMULATION");
14-
private static final String NAME = System.getenv("NAME");
15-
private static final String AUTOMATION_NAME = System.getenv("AUTOMATION_NAME");
16-
private static final String APP = System.getenv("APP");
17-
private static final String APP_PACKAGE = System.getenv("APP_PACKAGE");
18-
private static final String APP_ACTIVITY = System.getenv("APP_ACTIVITY");
19-
private static final String EXECUTOR = System.getenv("EXECUTOR");
20-
private static final String BROWSER = System.getenv("BROWSER");
21-
private static final String MOBILE_BROWSER = System.getenv("MOBILE_BROWSER");
22-
private static final String UDID = System.getenv("UDID");
23-
private static final String APPIUM_VERSION = System.getenv("APPIUM_VERSION");
24-
private static final String IS_SAUCE = System.getenv("IS_SAUCE");
25-
private static final String NEW_COMMAND_TIMEOUT = System.getenv("NEW_COMMAND_TIMEOUT");
26-
private static final String SL_DESKTOP_PLATFORM = System.getenv("SL_DESKTOP_PLATFORM");
27-
private static final String SL_BROWSER_VERSION = System.getenv("SL_BROWSER_VERSION");
28-
private static final String SL_DESKTOP_RESOLUTION = System.getenv("SL_DESKTOP_RESOLUTION");
5+
private static String BROWSER;
296

307
public static boolean isMobile() {
8+
String IS_MOBILE = System.getenv("IS_MOBILE") != null ? System.getenv("IS_MOBILE") : System.getProperty("IS_MOBILE");
319
return IS_MOBILE != null && IS_MOBILE.toUpperCase().equals("TRUE");
3210
}
3311

3412
public static boolean isLocal() {
13+
String IS_LOCAL = System.getenv("IS_LOCAL") != null ? System.getenv("IS_LOCAL") : System.getProperty("IS_LOCAL");
3514
return IS_LOCAL != null && IS_LOCAL.toUpperCase().equals("TRUE");
3615
}
3716

3817
public static boolean isRemote() {
18+
String IS_REMOTE = System.getenv("IS_REMOTE") != null ? System.getenv("IS_REMOTE") : System.getProperty("IS_REMOTE");
3919
return IS_REMOTE != null && IS_REMOTE.toUpperCase().equals("TRUE");
4020
}
4121

4222
public static boolean isHeadless() {
23+
24+
String IS_HEADLESS = System.getenv("IS_HEADLESS") != null ? System.getenv("IS_HEADLESS") : System.getProperty("IS_HEADLESS");
4325
return IS_HEADLESS != null && IS_HEADLESS.toUpperCase().equals("TRUE");
4426
}
4527

4628
public static boolean isSauce() {
29+
String IS_SAUCE = System.getenv("IS_SAUCE") != null ? System.getenv("IS_SAUCE") : System.getProperty("IS_SAUCE");
4730
return IS_SAUCE != null && IS_SAUCE.toUpperCase().equals("TRUE");
4831
}
4932

5033
public static boolean isFirefox() {
34+
BROWSER = System.getenv("BROWSER") != null ? System.getenv("BROWSER") : System.getProperty("BROWSER");
5135
return BROWSER != null && BROWSER.toUpperCase().equals("FIREFOX");
5236
}
5337

5438
public static boolean isChrome() {
39+
BROWSER = System.getenv("BROWSER") != null ? System.getenv("BROWSER") : System.getProperty("BROWSER");
5540
return BROWSER != null && BROWSER.toUpperCase().equals("CHROME");
5641
}
5742

5843
public static boolean isSafari() {
44+
BROWSER = System.getenv("BROWSER") != null ? System.getenv("BROWSER") : System.getProperty("BROWSER");
5945
return BROWSER != null && BROWSER.toUpperCase().equals("SAFARI");
6046
}
6147

6248
public static boolean isInternetExplorer() {
49+
BROWSER = System.getenv("BROWSER") != null ? System.getenv("BROWSER") : System.getProperty("BROWSER");
6350
return BROWSER != null && BROWSER.toUpperCase().equals("IE");
6451
}
6552

6653
public static boolean isAndroid() {
54+
String PLATFORM = System.getenv("PLATFORM") != null ? System.getenv("PLATFORM") : System.getProperty("PLATFORM");
6755
return PLATFORM != null && PLATFORM.toUpperCase().equals("ANDROID");
6856
}
6957

7058
public static boolean isIOS() {
59+
String PLATFORM = System.getenv("PLATFORM") != null ? System.getenv("PLATFORM") : System.getProperty("PLATFORM");
7160
return PLATFORM != null && PLATFORM.toUpperCase().equals("IOS");
7261
}
7362

7463
public static String getRemoteUrlPath() {
75-
return EXECUTOR;
64+
return System.getenv("EXECUTOR") != null ? System.getenv("EXECUTOR") : System.getProperty("EXECUTOR");
7665
}
7766

7867
public static String getPlatformVersion() {
79-
return PLATFORM_VERSION;
68+
return System.getenv("PLATFORM_VERSION") != null ? System.getenv("PLATFORM_VERSION") : System.getProperty("PLATFORM_VERSION");
8069
}
8170

8271
public static String getPhantomJsPath() {
83-
return PHANTOM_JS_PATH;
72+
return System.getenv("PHANTOM_JS_PATH") != null ? System.getenv("PHANTOM_JS_PATH") : System.getProperty("PHANTOM_JS_PATH");
8473
}
8574

8675
public static String getDevice() {
87-
return DEVICE;
76+
return System.getenv("DEVICE") != null ? System.getenv("DEVICE") : System.getProperty("DEVICE");
8877
}
8978

9079
public static String getMobileDeviveEmulation() {
91-
return MOBILE_DEVICE_EMULATION;
80+
return System.getenv("MOBILE_DEVICE_EMULATION") != null ? System.getenv("MOBILE_DEVICE_EMULATION") : System.getProperty("MOBILE_DEVICE_EMULATION");
9281
}
9382

9483
public static String getName() {
95-
return NAME;
84+
return System.getenv("NAME") != null ? System.getenv("NAME") : System.getProperty("NAME");
9685
}
9786

9887
public static String getBrowserName() {
88+
BROWSER = System.getenv("BROWSER") != null ? System.getenv("BROWSER") : System.getProperty("BROWSER");
9989
return BROWSER;
10090
}
10191

10292
public static String getAppPackage() {
103-
return APP_PACKAGE;
93+
return System.getenv("APP_PACKAGE") != null ? System.getenv("APP_PACKAGE") : System.getProperty("APP_PACKAGE");
10494
}
10595

10696
public static String getAppActivity() {
107-
return APP_ACTIVITY;
97+
return System.getenv("APP_ACTIVITY") != null ? System.getenv("APP_ACTIVITY") : System.getProperty("APP_ACTIVITY");
10898
}
10999

110100
public static String getApp() {
111-
return APP;
101+
return System.getenv("APP") != null ? System.getenv("APP") : System.getProperty("APP");
112102
}
113103

114104
public static String getAutomationName() {
115-
return AUTOMATION_NAME;
105+
return System.getenv("AUTOMATION_NAME") != null ? System.getenv("AUTOMATION_NAME") : System.getProperty("AUTOMATION_NAME");
116106
}
117107

118108
public static String getAppiumVersion() {
119-
return APPIUM_VERSION;
109+
return System.getenv("APPIUM_VERSION") != null ? System.getenv("APPIUM_VERSION") : System.getProperty("APPIUM_VERSION");
120110
}
121111

122112
public static String getUDIDDevice() {
123-
return UDID;
113+
return System.getenv("UDID") != null ? System.getenv("UDID") : System.getProperty("UDID");
124114
}
125115

126116
public static String getMobileBrowser() {
127-
return MOBILE_BROWSER;
117+
return System.getenv("MOBILE_BROWSER") != null ? System.getenv("MOBILE_BROWSER") : System.getProperty("MOBILE_BROWSER");
128118
}
129119

130120
public static String getNewCommandTimeout() {
131-
return NEW_COMMAND_TIMEOUT;
121+
return System.getenv("NEW_COMMAND_TIMEOUT") != null ? System.getenv("NEW_COMMAND_TIMEOUT") : System.getProperty("NEW_COMMAND_TIMEOUT");
132122
}
133123

134124
public static String getSlDesktopPlatform() {
135-
return SL_DESKTOP_PLATFORM;
125+
return System.getenv("SL_DESKTOP_PLATFORM") != null ? System.getenv("SL_DESKTOP_PLATFORM") : System.getProperty("SL_DESKTOP_PLATFORM");
136126
}
137127

138128
public static String getSlBrowserVersion() {
139-
return SL_BROWSER_VERSION;
129+
return System.getenv("SL_BROWSER_VERSION") != null ? System.getenv("SL_BROWSER_VERSION") : System.getProperty("SL_BROWSER_VERSION");
140130
}
141131

142132
public static String getSlDesktopResolution() {
143-
return SL_DESKTOP_RESOLUTION;
133+
return System.getenv("SL_DESKTOP_RESOLUTION") != null ? System.getenv("SL_DESKTOP_RESOLUTION") : System.getProperty("SL_DESKTOP_RESOLUTION");
144134
}
145135
}
Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,41 @@
11
package http.helpers;
22

3-
import java.lang.reflect.Field;
4-
import java.util.Collections;
53
import java.util.Map;
64

75
public class EnvironmentHelper {
86

9-
public void setEnv(Map<String, String> newenv) {
10-
Class[] classes = Collections.class.getDeclaredClasses();
11-
Map<String, String> env = System.getenv();
12-
for(Class cl : classes) {
13-
if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
14-
Field field = null;
15-
try {
16-
field = cl.getDeclaredField("m");
17-
} catch (NoSuchFieldException e) {
18-
e.printStackTrace();
19-
}
20-
assert field != null;
21-
field.setAccessible(true);
22-
Object obj = null;
23-
try {
24-
obj = field.get(env);
25-
} catch (IllegalAccessException e) {
26-
e.printStackTrace();
27-
}
28-
Map<String, String> map = (Map<String, String>) obj;
29-
assert map != null;
30-
map.clear();
31-
map.putAll(newenv);
32-
}
7+
public static void setEnv(Map<String, String> newenv) {
8+
clearAllProperties();
9+
10+
for (Map.Entry entry : newenv.entrySet()) {
11+
System.setProperty(entry.getKey().toString(), entry.getValue().toString());
3312
}
3413
}
14+
15+
private static void clearAllProperties() {
16+
System.clearProperty("IS_LOCAL");
17+
System.clearProperty("IS_MOBILE");
18+
System.clearProperty("IS_REMOTE");
19+
System.clearProperty("IS_HEADLESS");
20+
System.clearProperty("PLATFORM");
21+
System.clearProperty("PHANTOM_JS_PATH");
22+
System.clearProperty("PLATFORM_VERSION");
23+
System.clearProperty("DEVICE");
24+
System.clearProperty("MOBILE_DEVICE_EMULATION");
25+
System.clearProperty("NAME");
26+
System.clearProperty("AUTOMATION_NAME");
27+
System.clearProperty("APP");
28+
System.clearProperty("APP_PACKAGE");
29+
System.clearProperty("APP_ACTIVITY");
30+
System.clearProperty("EXECUTOR");
31+
System.clearProperty("BROWSER");
32+
System.clearProperty("MOBILE_BROWSER");
33+
System.clearProperty("UDID");
34+
System.clearProperty("APPIUM_VERSION");
35+
System.clearProperty("IS_SAUCE");
36+
System.clearProperty("NEW_COMMAND_TIMEOUT");
37+
System.clearProperty("SL_DESKTOP_PLATFORM");
38+
System.clearProperty("SL_BROWSER_VERSION");
39+
System.clearProperty("SL_DESKTOP_RESOLUTION");
40+
}
3541
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import environment.EnvironmentFactory;
2+
import http.helpers.EnvironmentHelper;
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class EnvironmentFactoryTest {
10+
11+
@Test
12+
public void testThatEnvironmentPropertiesCouldBeSet(){
13+
Map<String, String> map = new HashMap<>();
14+
map.put("IS_LOCAL", "TRUE");
15+
EnvironmentHelper.setEnv(map);
16+
Assert.assertTrue(EnvironmentFactory.isLocal());
17+
Assert.assertFalse(EnvironmentFactory.isMobile());
18+
Assert.assertFalse(EnvironmentFactory.isRemote());
19+
Assert.assertFalse(EnvironmentFactory.isHeadless());
20+
21+
map.clear();
22+
map.put("IS_MOBILE", "TRUE");
23+
EnvironmentHelper.setEnv(map);
24+
Assert.assertFalse(EnvironmentFactory.isLocal());
25+
Assert.assertTrue(EnvironmentFactory.isMobile());
26+
Assert.assertFalse(EnvironmentFactory.isRemote());
27+
Assert.assertFalse(EnvironmentFactory.isHeadless());
28+
29+
map.clear();
30+
map.put("IS_REMOTE", "TRUE");
31+
EnvironmentHelper.setEnv(map);
32+
Assert.assertFalse(EnvironmentFactory.isLocal());
33+
Assert.assertFalse(EnvironmentFactory.isMobile());
34+
Assert.assertTrue(EnvironmentFactory.isRemote());
35+
Assert.assertFalse(EnvironmentFactory.isHeadless());
36+
37+
38+
map.clear();
39+
map.put("IS_HEADLESS", "TRUE");
40+
EnvironmentHelper.setEnv(map);
41+
Assert.assertFalse(EnvironmentFactory.isLocal());
42+
Assert.assertFalse(EnvironmentFactory.isMobile());
43+
Assert.assertFalse(EnvironmentFactory.isRemote());
44+
Assert.assertTrue(EnvironmentFactory.isHeadless());
45+
}
46+
}

0 commit comments

Comments
 (0)