@@ -0,0 +1,91 @@
1+
2+
3+import appium
4+import selenium
5+import selenium.webdriver.firefox.options
6+import os
7+
8+browsers = {'Windows 10':
9+ {'internet explorer': ['11.285'], 'MicrosoftEdge': ['18.17763'], 'chrome': ['71.0'], 'firefox': ['64.0']
10+ },
11+ "macOS 10.14":
12+ {'chrome': ['71.0'], 'firefox': ['64.0'], 'safari': ['12.0']}
13+
14+ }
15+
16+
17+def desktop():
18+
19+ caps = []
20+ for platform, brows in browsers.items():
21+ for browser, versions in brows.items():
22+ for vers in versions:
23+ cap = {'platform': platform,
24+ 'browserName': browser, 'version': vers}
25+
26+ caps.append(
27+ {'driver_type': 'desktop',
28+ 'capabilities': cap})
29+
30+ return caps
31+
32+
33+def local():
34+ options = selenium.webdriver.firefox.options.Options()
35+ options.set_headless(True)
36+
37+ driver = selenium.webdriver.Firefox(options=options)
38+ caps = {}
39+ caps['browserName'] = "firefox"
40+ caps['platform'] = "macOS 10.14"
41+ return [{'driver_type': 'local', 'capabilities': caps}]
42+
43+
44+def mobile():
45+
46+ caps = {}
47+ caps['browserName'] = "Safari"
48+ caps['appiumVersion'] = "1.9.1"
49+ caps['deviceName'] = "iPhone XS Simulator"
50+ caps['deviceOrientation'] = "portrait"
51+ caps['platformVersion'] = "12.0"
52+ caps['platformName'] = "iOS"
53+ return [{'capabilities': caps, 'driver_type': 'app'}]
54+
55+
56+def get_credentials():
57+ return {'username': os.environ['SAUCE_USERNAME'], 'access_key': os.environ['SAUCE_ACCESS_KEY']}
58+
59+
60+def start_driver(env, capabilities):
61+ if env == 'app':
62+ return app(capabilities)
63+ elif env == 'desktop':
64+ return remote(capabilities)
65+ else:
66+ options = selenium.webdriver.firefox.options.Options()
67+ options.set_headless(True)
68+
69+ return selenium.webdriver.Firefox(options=options)
70+
71+
72+def remote(desired_cap):
73+ creds = get_credentials()
74+ driver = selenium.webdriver.Remote(
75+ command_executor='http://{username}:{key}@ondemand.saucelabs.com:80/wd/hub'.format(
76+ username=creds['username'],
77+ key=creds['access_key']),
78+ desired_capabilities=desired_cap)
79+
80+ return driver
81+
82+
83+def app(desired_cap):
84+ creds = get_credentials()
85+ driver = appium.webdriver.Remote(
86+ command_executor='http://{username}:{key}@ondemand.saucelabs.com:80/wd/hub'.format(
87+ username=creds['username'],
88+ key=creds['access_key']),
89+ desired_capabilities=desired_cap)
90+
91+ return driver