testcentricity_web 4.0.1 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +52 -0
- data/LICENSE.md +1 -1
- data/README.md +26 -23
- data/lib/testcentricity_web/appium_server.rb +1 -1
- data/lib/testcentricity_web/data_objects/data_objects_helper.rb +1 -1
- data/lib/testcentricity_web/data_objects/environment.rb +27 -9
- data/lib/testcentricity_web/exception_queue_helper.rb +5 -5
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_object.rb +6 -8
- data/lib/testcentricity_web/web_core/page_section.rb +5 -7
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +199 -180
- data/lib/testcentricity_web/web_elements/checkbox.rb +33 -32
- data/lib/testcentricity_web/web_elements/radio.rb +33 -32
- data/lib/testcentricity_web/web_elements/select_list.rb +0 -14
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +17 -1
- data/lib/testcentricity_web.rb +0 -1
- data/testcentricity_web.gemspec +3 -3
- metadata +13 -15
- data/Gemfile.lock +0 -112
@@ -14,13 +14,11 @@ module TestCentricity
|
|
14
14
|
|
15
15
|
def self.initialize_web_driver(options = nil)
|
16
16
|
desired_caps = nil
|
17
|
-
merge_caps = nil
|
18
17
|
if options.is_a?(String)
|
19
18
|
Capybara.app_host = options
|
20
19
|
elsif options.is_a?(Hash)
|
21
20
|
Capybara.app_host = options[:app_host] if options.key?(:app_host)
|
22
21
|
desired_caps = options[:desired_capabilities] if options.key?(:desired_capabilities)
|
23
|
-
merge_caps = options[:merge_capabilities] if options.key?(:merge_capabilities)
|
24
22
|
end
|
25
23
|
|
26
24
|
browser = ENV['WEB_BROWSER']
|
@@ -46,25 +44,25 @@ module TestCentricity
|
|
46
44
|
|
47
45
|
context = case browser.downcase.to_sym
|
48
46
|
when :appium
|
49
|
-
initialize_appium(desired_caps
|
47
|
+
initialize_appium(desired_caps)
|
50
48
|
'mobile device emulator'
|
51
49
|
when :browserstack
|
52
|
-
initialize_browserstack(desired_caps
|
50
|
+
initialize_browserstack(desired_caps)
|
53
51
|
'Browserstack cloud service'
|
54
52
|
when :crossbrowser
|
55
|
-
initialize_crossbrowser(desired_caps
|
53
|
+
initialize_crossbrowser(desired_caps)
|
56
54
|
'CrossBrowserTesting cloud service'
|
57
55
|
when :gridlastic
|
58
|
-
initialize_gridlastic(desired_caps
|
56
|
+
initialize_gridlastic(desired_caps)
|
59
57
|
'Gridlastic cloud service'
|
60
58
|
when :lambdatest
|
61
|
-
initialize_lambdatest(desired_caps
|
59
|
+
initialize_lambdatest(desired_caps)
|
62
60
|
'LambdaTest cloud service'
|
63
61
|
when :saucelabs
|
64
|
-
initialize_saucelabs(desired_caps
|
62
|
+
initialize_saucelabs(desired_caps)
|
65
63
|
'Sauce Labs cloud service'
|
66
64
|
when :testingbot
|
67
|
-
initialize_testingbot(desired_caps
|
65
|
+
initialize_testingbot(desired_caps)
|
68
66
|
'TestingBot cloud service'
|
69
67
|
else
|
70
68
|
if ENV['SELENIUM'] == 'remote'
|
@@ -133,7 +131,7 @@ module TestCentricity
|
|
133
131
|
|
134
132
|
private
|
135
133
|
|
136
|
-
def self.initialize_appium(desired_caps = nil
|
134
|
+
def self.initialize_appium(desired_caps = nil)
|
137
135
|
Environ.platform = :mobile
|
138
136
|
Environ.device_name = ENV['APP_DEVICE']
|
139
137
|
Environ.device_os = ENV['APP_PLATFORM_NAME'].downcase.to_sym
|
@@ -153,7 +151,6 @@ module TestCentricity
|
|
153
151
|
if ENV['UDID']
|
154
152
|
Environ.device = :device
|
155
153
|
desired_capabilities[:udid] = ENV['UDID']
|
156
|
-
desired_capabilities[:startIWDP] = true
|
157
154
|
desired_capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
|
158
155
|
desired_capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
|
159
156
|
else
|
@@ -161,24 +158,26 @@ module TestCentricity
|
|
161
158
|
desired_capabilities[:orientation] = Environ.device_orientation.upcase if Environ.device_orientation
|
162
159
|
if Environ.device_os == :ios
|
163
160
|
desired_capabilities[:language] = Environ.language if Environ.language
|
164
|
-
desired_capabilities[:locale]
|
161
|
+
desired_capabilities[:locale] = Environ.locale.gsub('-', '_') if Environ.locale
|
165
162
|
end
|
166
163
|
end
|
167
164
|
desired_capabilities[:safariIgnoreFraudWarning] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
|
168
|
-
desired_capabilities[:safariInitialUrl]
|
169
|
-
desired_capabilities[:safariAllowPopups]
|
170
|
-
|
171
|
-
desired_capabilities[:
|
172
|
-
|
173
|
-
desired_capabilities[:
|
174
|
-
|
175
|
-
desired_capabilities[:
|
176
|
-
|
177
|
-
desired_capabilities[:
|
178
|
-
desired_capabilities[:
|
179
|
-
desired_capabilities[:
|
180
|
-
desired_capabilities[:
|
181
|
-
desired_capabilities[:
|
165
|
+
desired_capabilities[:safariInitialUrl] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
|
166
|
+
desired_capabilities[:safariAllowPopups] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
|
167
|
+
desired_capabilities[:shutdownOtherSimulators] = ENV['SHUTDOWN_OTHER_SIMS'] if ENV['SHUTDOWN_OTHER_SIMS']
|
168
|
+
desired_capabilities[:forceSimulatorSoftwareKeyboardPresence] = ENV['SHOW_SIM_KEYBOARD'] if ENV['SHOW_SIM_KEYBOARD']
|
169
|
+
|
170
|
+
desired_capabilities[:autoAcceptAlerts] = ENV['AUTO_ACCEPT_ALERTS'] if ENV['AUTO_ACCEPT_ALERTS']
|
171
|
+
desired_capabilities[:autoDismissAlerts] = ENV['AUTO_DISMISS_ALERTS'] if ENV['AUTO_DISMISS_ALERTS']
|
172
|
+
desired_capabilities[:isHeadless] = ENV['HEADLESS'] if ENV['HEADLESS']
|
173
|
+
|
174
|
+
desired_capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
|
175
|
+
desired_capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
|
176
|
+
desired_capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
|
177
|
+
desired_capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
|
178
|
+
desired_capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
|
179
|
+
desired_capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
|
180
|
+
desired_capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
|
182
181
|
desired_capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
|
183
182
|
# set wdaLocalPort (iOS) or systemPort (Android) if PARALLEL_PORT is true
|
184
183
|
if ENV['PARALLEL'] && ENV['PARALLEL_PORT']
|
@@ -193,7 +192,7 @@ module TestCentricity
|
|
193
192
|
end
|
194
193
|
|
195
194
|
unless desired_caps.nil?
|
196
|
-
desired_capabilities =
|
195
|
+
desired_capabilities = desired_caps
|
197
196
|
end
|
198
197
|
|
199
198
|
Capybara.register_driver :appium do |app|
|
@@ -202,25 +201,27 @@ module TestCentricity
|
|
202
201
|
appium_lib: appium_lib_options,
|
203
202
|
caps: desired_capabilities
|
204
203
|
}
|
205
|
-
Appium::Capybara::Driver.new
|
204
|
+
Appium::Capybara::Driver.new(app, all_options)
|
206
205
|
end
|
207
206
|
end
|
208
207
|
|
209
208
|
def self.initialize_local_browser
|
210
|
-
Environ.os =
|
209
|
+
Environ.os = case
|
210
|
+
when OS.osx?
|
211
211
|
'OS X'
|
212
|
-
|
212
|
+
when OS.windows?
|
213
213
|
'Windows'
|
214
|
-
|
214
|
+
when OS.linux?
|
215
215
|
'Linux'
|
216
|
+
else
|
217
|
+
'unknown'
|
216
218
|
end
|
217
|
-
|
218
219
|
browser = ENV['WEB_BROWSER'].downcase.to_sym
|
219
220
|
|
220
221
|
case browser
|
221
222
|
when :firefox, :chrome, :ie, :safari, :edge
|
222
223
|
Environ.platform = :desktop
|
223
|
-
when :chrome_headless, :firefox_headless
|
224
|
+
when :chrome_headless, :firefox_headless, :edge_headless
|
224
225
|
Environ.platform = :desktop
|
225
226
|
Environ.headless = true
|
226
227
|
else
|
@@ -231,9 +232,8 @@ module TestCentricity
|
|
231
232
|
Capybara.register_driver :selenium do |app|
|
232
233
|
case browser
|
233
234
|
when :safari
|
234
|
-
|
235
|
-
|
236
|
-
when :ie, :edge
|
235
|
+
Capybara::Selenium::Driver.new(app, browser: browser)
|
236
|
+
when :ie
|
237
237
|
Capybara::Selenium::Driver.new(app, browser: browser)
|
238
238
|
when :firefox, :firefox_headless
|
239
239
|
profile = Selenium::WebDriver::Firefox::Profile.new
|
@@ -253,16 +253,15 @@ module TestCentricity
|
|
253
253
|
profile['intl.accept_languages'] = ENV['LOCALE'] if ENV['LOCALE']
|
254
254
|
options = Selenium::WebDriver::Firefox::Options.new(profile: profile)
|
255
255
|
options.args << '--headless' if browser == :firefox_headless
|
256
|
-
Capybara::Selenium::Driver.new(app, browser: :firefox,
|
256
|
+
Capybara::Selenium::Driver.new(app, browser: :firefox, capabilities: [options])
|
257
257
|
when :chrome, :chrome_headless
|
258
|
-
options = Selenium::WebDriver::Chrome::Options.new
|
258
|
+
options = Selenium::WebDriver::Chrome::Options.new(options: {'excludeSwitches' => ['enable-automation']})
|
259
259
|
prefs = {
|
260
260
|
prompt_for_download: false,
|
261
261
|
directory_upgrade: true,
|
262
262
|
default_directory: @downloads_path
|
263
263
|
}
|
264
264
|
options.add_preference(:download, prefs)
|
265
|
-
options.add_argument('--disable-infobars')
|
266
265
|
options.add_argument('--disable-dev-shm-usage')
|
267
266
|
options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
|
268
267
|
if browser == :chrome_headless
|
@@ -271,7 +270,24 @@ module TestCentricity
|
|
271
270
|
options.add_argument('--no-sandbox')
|
272
271
|
end
|
273
272
|
|
274
|
-
Capybara::Selenium::Driver.new(app, browser: :chrome,
|
273
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, capabilities: [options])
|
274
|
+
when :edge, :edge_headless
|
275
|
+
options = Selenium::WebDriver::Edge::Options.new(options: {'excludeSwitches' => ['enable-automation']})
|
276
|
+
prefs = {
|
277
|
+
prompt_for_download: false,
|
278
|
+
directory_upgrade: true,
|
279
|
+
default_directory: @downloads_path
|
280
|
+
}
|
281
|
+
options.add_preference(:download, prefs)
|
282
|
+
options.add_argument('--disable-dev-shm-usage')
|
283
|
+
options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
|
284
|
+
if browser == :edge_headless
|
285
|
+
options.add_argument('--headless')
|
286
|
+
options.add_argument('--disable-gpu')
|
287
|
+
options.add_argument('--no-sandbox')
|
288
|
+
end
|
289
|
+
|
290
|
+
Capybara::Selenium::Driver.new(app, browser: :edge, capabilities: [options])
|
275
291
|
else
|
276
292
|
if ENV['HOST_BROWSER'] && ENV['HOST_BROWSER'].downcase.to_sym == :chrome
|
277
293
|
user_agent = Browsers.mobile_device_agent(ENV['WEB_BROWSER'])
|
@@ -280,7 +296,7 @@ module TestCentricity
|
|
280
296
|
options.add_argument('--disable-dev-shm-usage')
|
281
297
|
options.add_argument("--user-agent='#{user_agent}'")
|
282
298
|
options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
|
283
|
-
Capybara::Selenium::Driver.new(app, browser: :chrome,
|
299
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, capabilities: [options])
|
284
300
|
else
|
285
301
|
raise "Requested browser '#{browser}' is not supported"
|
286
302
|
end
|
@@ -289,111 +305,95 @@ module TestCentricity
|
|
289
305
|
Capybara.default_driver = :selenium
|
290
306
|
end
|
291
307
|
|
292
|
-
def self.initialize_browserstack(desired_caps = nil
|
308
|
+
def self.initialize_browserstack(desired_caps = nil)
|
293
309
|
browser = ENV['BS_BROWSER']
|
294
310
|
Environ.grid = :browserstack
|
295
311
|
|
296
|
-
if ENV['BS_REAL_MOBILE'] || ENV['
|
312
|
+
if ENV['BS_REAL_MOBILE'] || ENV['BS_DEVICE']
|
297
313
|
Environ.platform = :mobile
|
298
314
|
Environ.device_name = ENV['BS_DEVICE']
|
299
315
|
Environ.device_os = ENV['BS_OS']
|
300
316
|
Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
317
|
+
Environ.device = if ENV['BS_REAL_MOBILE']
|
318
|
+
:device
|
319
|
+
else
|
320
|
+
:simulator
|
321
|
+
end
|
301
322
|
elsif ENV['BS_OS']
|
302
323
|
Environ.os = "#{ENV['BS_OS']} #{ENV['BS_OS_VERSION']}"
|
303
324
|
end
|
304
|
-
|
305
|
-
:device
|
306
|
-
elsif ENV['BS_PLATFORM']
|
307
|
-
:simulator
|
308
|
-
end
|
309
|
-
|
325
|
+
# specify endpoint url
|
310
326
|
endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub"
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
capabilities[:platform] = ENV['BS_PLATFORM']
|
321
|
-
capabilities[:browserName] = browser
|
322
|
-
capabilities['device'] = ENV['BS_DEVICE'] if ENV['BS_DEVICE']
|
323
|
-
capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
324
|
-
|
325
|
-
elsif ENV['BS_OS']
|
326
|
-
capabilities['os'] = ENV['BS_OS']
|
327
|
-
capabilities['os_version'] = ENV['BS_OS_VERSION']
|
328
|
-
capabilities['browser'] = browser || 'chrome'
|
329
|
-
capabilities['browser_version'] = ENV['BS_VERSION'] if ENV['BS_VERSION']
|
330
|
-
capabilities['resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
331
|
-
end
|
332
|
-
|
333
|
-
capabilities['browserstack.selenium_version'] = ENV['SELENIUM_VERSION'] if ENV['SELENIUM_VERSION']
|
334
|
-
capabilities['browserstack.console'] = ENV['CONSOLE_LOGS'] if ENV['CONSOLE_LOGS']
|
335
|
-
capabilities['browserstack.timezone'] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
|
336
|
-
capabilities['browserstack.geoLocation'] = ENV['IP_GEOLOCATION'] if ENV['IP_GEOLOCATION']
|
337
|
-
capabilities['browserstack.video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
338
|
-
capabilities['browserstack.debug'] = 'true'
|
339
|
-
capabilities['project'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
|
340
|
-
capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
|
341
|
-
|
342
|
-
context_message = ENV['TEST_CONTEXT'] ? "#{Environ.test_environment.upcase} - #{ENV['TEST_CONTEXT']}" : Environ.test_environment.upcase
|
343
|
-
if ENV['PARALLEL']
|
344
|
-
thread_num = ENV['TEST_ENV_NUMBER']
|
345
|
-
thread_num = 1 if thread_num.blank?
|
346
|
-
context_message = "#{context_message} - Thread ##{thread_num}"
|
347
|
-
end
|
348
|
-
capabilities['name'] = context_message
|
349
|
-
|
350
|
-
capabilities['acceptSslCerts'] = 'true'
|
351
|
-
capabilities['browserstack.localIdentifier'] = ENV['BS_LOCAL_ID'] if ENV['BS_LOCAL_ID']
|
352
|
-
capabilities['browserstack.local'] = 'true' if ENV['TUNNELING']
|
353
|
-
|
354
|
-
case browser.downcase.to_sym
|
355
|
-
when :ie
|
356
|
-
capabilities['ie.fileUploadDialogTimeout'] = 10000
|
357
|
-
capabilities['ie.ensureCleanSession'] = 'true'
|
358
|
-
capabilities['ie.browserCommandLineSwitches'] = 'true'
|
359
|
-
capabilities['nativeEvents'] = 'true'
|
360
|
-
capabilities['browserstack.ie.driver'] = ENV['WD_VERSION'] if ENV['WD_VERSION']
|
361
|
-
capabilities['browserstack.ie.enablePopups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
362
|
-
when :edge
|
363
|
-
capabilities['ie.fileUploadDialogTimeout'] = 10000
|
364
|
-
capabilities['ie.ensureCleanSession'] = 'true'
|
365
|
-
capabilities['ie.browserCommandLineSwitches'] = 'true'
|
366
|
-
capabilities['nativeEvents'] = 'true'
|
367
|
-
capabilities['browserstack.ie.driver'] = ENV['WD_VERSION'] if ENV['WD_VERSION']
|
368
|
-
capabilities['browserstack.edge.enablePopups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
369
|
-
when :firefox
|
370
|
-
capabilities['browserstack.geckodriver'] = ENV['WD_VERSION'] if ENV['WD_VERSION']
|
371
|
-
when :safari
|
372
|
-
capabilities['cleanSession'] = 'true'
|
373
|
-
capabilities['browserstack.safari.driver'] = ENV['WD_VERSION'] if ENV['WD_VERSION']
|
374
|
-
capabilities['browserstack.safari.enablePopups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
375
|
-
capabilities['browserstack.safari.allowAllCookies'] = ENV['ALLOW_COOKIES'] if ENV['ALLOW_COOKIES']
|
376
|
-
when :iphone, :ipad
|
377
|
-
capabilities['javascriptEnabled'] = 'true'
|
378
|
-
capabilities['cleanSession'] = 'true'
|
379
|
-
end
|
380
|
-
|
381
|
-
unless desired_caps.nil?
|
382
|
-
capabilities = merge_caps ? capabilities.merge(desired_caps) : desired_caps
|
383
|
-
end
|
384
|
-
|
385
|
-
if ENV['TUNNELING']
|
386
|
-
@bs_local = BrowserStack::Local.new
|
387
|
-
bs_local_args = {'key' => "#{ENV['BS_AUTHKEY']}"}
|
388
|
-
@bs_local.start(bs_local_args)
|
389
|
-
if @bs_local.isRunning
|
390
|
-
puts 'BrowserStack Local instance has been started'
|
391
|
-
else
|
392
|
-
puts 'BrowserStack Local instance failed to start'
|
393
|
-
end
|
327
|
+
# enable tunneling if specified
|
328
|
+
if ENV['TUNNELING']
|
329
|
+
@bs_local = BrowserStack::Local.new
|
330
|
+
bs_local_args = {'key' => "#{ENV['BS_AUTHKEY']}"}
|
331
|
+
@bs_local.start(bs_local_args)
|
332
|
+
if @bs_local.isRunning
|
333
|
+
puts 'BrowserStack Local instance has been started'
|
334
|
+
else
|
335
|
+
puts 'BrowserStack Local instance failed to start'
|
394
336
|
end
|
395
|
-
|
396
|
-
|
337
|
+
end
|
338
|
+
# define BrowserStack options
|
339
|
+
options = if desired_caps.nil?
|
340
|
+
browser_options = {}
|
341
|
+
# define the required set of BrowserStack options
|
342
|
+
bs_options = {
|
343
|
+
userName: ENV['BS_USERNAME'],
|
344
|
+
accessKey: ENV['BS_AUTHKEY'],
|
345
|
+
sessionName: test_context_message,
|
346
|
+
os: ENV['BS_OS'],
|
347
|
+
osVersion: ENV['BS_OS_VERSION']
|
348
|
+
}
|
349
|
+
# define browser specific BrowserStack options
|
350
|
+
case browser.downcase.to_sym
|
351
|
+
when :safari
|
352
|
+
browser_options[:enablePopups] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
353
|
+
browser_options[:allowAllCookies] = ENV['ALLOW_COOKIES'] if ENV['ALLOW_COOKIES']
|
354
|
+
bs_options[:safari] = browser_options unless browser_options.empty?
|
355
|
+
when :ie
|
356
|
+
browser_options[:enablePopups] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
357
|
+
bs_options[:ie] = browser_options unless browser_options.empty?
|
358
|
+
when :edge
|
359
|
+
browser_options[:enablePopups] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
360
|
+
bs_options[:edge] = browser_options unless browser_options.empty?
|
361
|
+
end
|
362
|
+
# define the optional BrowserStack options
|
363
|
+
bs_options[:projectName] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
|
364
|
+
bs_options[:buildName] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
|
365
|
+
bs_options[:headless] = ENV['HEADLESS'] if ENV['HEADLESS']
|
366
|
+
bs_options[:timezone] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
|
367
|
+
bs_options[:geoLocation] = ENV['IP_GEOLOCATION'] if ENV['IP_GEOLOCATION']
|
368
|
+
bs_options[:video] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
369
|
+
bs_options[:debug] = ENV['SCREENSHOTS'] if ENV['SCREENSHOTS']
|
370
|
+
bs_options[:networkLogs] = ENV['NETWORK_LOGS'] if ENV['NETWORK_LOGS']
|
371
|
+
bs_options[:local] = ENV['TUNNELING'] if ENV['TUNNELING']
|
372
|
+
bs_options[:deviceOrientation] = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
373
|
+
bs_options[:appiumLogs] = ENV['APPIUM_LOGS'] if ENV['APPIUM_LOGS']
|
374
|
+
bs_options[:realMobile] = ENV['BS_REAL_MOBILE'] if ENV['BS_REAL_MOBILE']
|
375
|
+
if ENV['BS_DEVICE']
|
376
|
+
bs_options[:deviceName] = ENV['BS_DEVICE']
|
377
|
+
bs_options[:appiumVersion] = '1.22.0'
|
378
|
+
{
|
379
|
+
browserName: browser,
|
380
|
+
'bstack:options': bs_options
|
381
|
+
}
|
382
|
+
else
|
383
|
+
bs_options[:resolution] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
384
|
+
bs_options[:seleniumVersion] = '4.1.0'
|
385
|
+
{
|
386
|
+
browserName: browser,
|
387
|
+
browserVersion: ENV['BS_VERSION'],
|
388
|
+
'bstack:options': bs_options
|
389
|
+
}
|
390
|
+
end
|
391
|
+
else
|
392
|
+
desired_caps
|
393
|
+
end
|
394
|
+
Capybara.register_driver :browserstack do |app|
|
395
|
+
capabilities = Selenium::WebDriver::Remote::Capabilities.send(browser.gsub(/\s+/, '_').downcase.to_sym, options)
|
396
|
+
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, capabilities: capabilities)
|
397
397
|
end
|
398
398
|
|
399
399
|
Environ.browser = browser
|
@@ -410,7 +410,7 @@ module TestCentricity
|
|
410
410
|
end
|
411
411
|
end
|
412
412
|
|
413
|
-
def self.initialize_crossbrowser(desired_caps = nil
|
413
|
+
def self.initialize_crossbrowser(desired_caps = nil)
|
414
414
|
browser = ENV['CB_BROWSER']
|
415
415
|
Environ.grid = :crossbrowser
|
416
416
|
|
@@ -439,7 +439,7 @@ module TestCentricity
|
|
439
439
|
end
|
440
440
|
|
441
441
|
unless desired_caps.nil?
|
442
|
-
capabilities =
|
442
|
+
capabilities = desired_caps
|
443
443
|
end
|
444
444
|
|
445
445
|
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, desired_capabilities: capabilities)
|
@@ -457,7 +457,7 @@ module TestCentricity
|
|
457
457
|
end
|
458
458
|
end
|
459
459
|
|
460
|
-
def self.initialize_gridlastic(desired_caps = nil
|
460
|
+
def self.initialize_gridlastic(desired_caps = nil)
|
461
461
|
browser = ENV['GL_BROWSER']
|
462
462
|
Environ.grid = :gridlastic
|
463
463
|
Environ.os = ENV['GL_OS']
|
@@ -470,7 +470,7 @@ module TestCentricity
|
|
470
470
|
capabilities['video'] = ENV['RECORD_VIDEO'].capitalize if ENV['RECORD_VIDEO']
|
471
471
|
|
472
472
|
unless desired_caps.nil?
|
473
|
-
capabilities =
|
473
|
+
capabilities = desired_caps
|
474
474
|
end
|
475
475
|
|
476
476
|
Capybara.register_driver :selenium do |app|
|
@@ -496,50 +496,55 @@ module TestCentricity
|
|
496
496
|
end
|
497
497
|
end
|
498
498
|
|
499
|
-
def self.initialize_lambdatest(desired_caps = nil
|
499
|
+
def self.initialize_lambdatest(desired_caps = nil)
|
500
500
|
browser = ENV['LT_BROWSER']
|
501
501
|
Environ.grid = :lambdatest
|
502
502
|
Environ.os = ENV['LT_OS']
|
503
503
|
Environ.platform = :desktop
|
504
504
|
Environ.tunneling = ENV['TUNNELING'] if ENV['TUNNELING']
|
505
|
-
|
506
|
-
endpoint = "
|
505
|
+
# specify endpoint url
|
506
|
+
endpoint = "https://#{ENV['LT_USERNAME']}:#{ENV['LT_AUTHKEY']}@hub.lambdatest.com/wd/hub"
|
507
|
+
# define LambdaTest options
|
508
|
+
options = if desired_caps.nil?
|
509
|
+
# define the required set of LambdaTest options
|
510
|
+
lt_options = {
|
511
|
+
user: ENV['LT_USERNAME'],
|
512
|
+
accessKey: ENV['LT_AUTHKEY'],
|
513
|
+
build: test_context_message,
|
514
|
+
platformName: ENV['LT_OS'],
|
515
|
+
resolution: ENV['RESOLUTION'],
|
516
|
+
selenium_version: '4.0.0',
|
517
|
+
}
|
518
|
+
# define the optional LambdaTest options
|
519
|
+
lt_options[:name] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
|
520
|
+
lt_options[:headless] = ENV['HEADLESS'] if ENV['HEADLESS']
|
521
|
+
lt_options[:timezone] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
|
522
|
+
lt_options[:geoLocation] = ENV['GEO_LOCATION'] if ENV['GEO_LOCATION']
|
523
|
+
lt_options[:video] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
524
|
+
lt_options[:visual] = ENV['SCREENSHOTS'] if ENV['SCREENSHOTS']
|
525
|
+
lt_options[:network] = ENV['NETWORK_LOGS'] if ENV['NETWORK_LOGS']
|
526
|
+
lt_options[:tunnel] = ENV['TUNNELING'] if ENV['TUNNELING']
|
527
|
+
# define browser specific LambdaTest options
|
528
|
+
case browser.downcase.to_sym
|
529
|
+
when :safari
|
530
|
+
lt_options['safari.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
531
|
+
lt_options['safari.cookies'] = ENV['ALLOW_COOKIES'] if ENV['ALLOW_COOKIES']
|
532
|
+
when :ie
|
533
|
+
lt_options['ie.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
534
|
+
when :microsoftedge
|
535
|
+
lt_options['edge.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
536
|
+
end
|
537
|
+
{
|
538
|
+
browserName: browser,
|
539
|
+
browserVersion: ENV['LT_VERSION'],
|
540
|
+
'LT:Options': lt_options
|
541
|
+
}
|
542
|
+
else
|
543
|
+
desired_caps
|
544
|
+
end
|
507
545
|
Capybara.register_driver :lambdatest do |app|
|
508
|
-
capabilities = Selenium::WebDriver::Remote::Capabilities.
|
509
|
-
|
510
|
-
capabilities['browserName'] = browser
|
511
|
-
capabilities['version'] = ENV['LT_VERSION'] if ENV['LT_VERSION']
|
512
|
-
capabilities['platform'] = ENV['LT_OS']
|
513
|
-
capabilities['resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
514
|
-
capabilities['video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
515
|
-
capabilities['console'] = ENV['CONSOLE_LOGS'] if ENV['CONSOLE_LOGS']
|
516
|
-
capabilities['network'] = true
|
517
|
-
capabilities['visual'] = true
|
518
|
-
capabilities['tunnel'] = ENV['TUNNELING'] if ENV['TUNNELING']
|
519
|
-
|
520
|
-
case browser.downcase.to_sym
|
521
|
-
when :safari
|
522
|
-
capabilities['safari.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
523
|
-
capabilities['safari.cookies'] = ENV['ALLOW_COOKIES'] if ENV['ALLOW_COOKIES']
|
524
|
-
when :ie
|
525
|
-
capabilities['ie.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
526
|
-
when :edge
|
527
|
-
capabilities['edge.popups'] = ENV['ALLOW_POPUPS'] if ENV['ALLOW_POPUPS']
|
528
|
-
end
|
529
|
-
|
530
|
-
context_message = ENV['TEST_CONTEXT'] ? "#{Environ.test_environment.upcase} - #{ENV['TEST_CONTEXT']}" : Environ.test_environment.upcase
|
531
|
-
if ENV['PARALLEL']
|
532
|
-
thread_num = ENV['TEST_ENV_NUMBER']
|
533
|
-
thread_num = 1 if thread_num.blank?
|
534
|
-
context_message = "#{context_message} - Thread ##{thread_num}"
|
535
|
-
end
|
536
|
-
capabilities['build'] = context_message
|
537
|
-
|
538
|
-
unless desired_caps.nil?
|
539
|
-
capabilities = merge_caps ? capabilities.merge(desired_caps) : desired_caps
|
540
|
-
end
|
541
|
-
|
542
|
-
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, desired_capabilities: capabilities)
|
546
|
+
capabilities = Selenium::WebDriver::Remote::Capabilities.send(browser.gsub(/\s+/, '_').downcase.to_sym, options)
|
547
|
+
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, capabilities: capabilities)
|
543
548
|
end
|
544
549
|
|
545
550
|
Environ.browser = browser
|
@@ -602,7 +607,7 @@ module TestCentricity
|
|
602
607
|
Capybara.default_driver = :remote_browser
|
603
608
|
end
|
604
609
|
|
605
|
-
def self.initialize_saucelabs(desired_caps = nil
|
610
|
+
def self.initialize_saucelabs(desired_caps = nil)
|
606
611
|
browser = ENV['SL_BROWSER']
|
607
612
|
Environ.grid = :saucelabs
|
608
613
|
|
@@ -633,7 +638,7 @@ module TestCentricity
|
|
633
638
|
end
|
634
639
|
|
635
640
|
unless desired_caps.nil?
|
636
|
-
capabilities =
|
641
|
+
capabilities = desired_caps
|
637
642
|
end
|
638
643
|
|
639
644
|
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, desired_capabilities: capabilities)
|
@@ -651,7 +656,7 @@ module TestCentricity
|
|
651
656
|
end
|
652
657
|
end
|
653
658
|
|
654
|
-
def self.initialize_testingbot(desired_caps = nil
|
659
|
+
def self.initialize_testingbot(desired_caps = nil)
|
655
660
|
browser = ENV['TB_BROWSER']
|
656
661
|
Environ.grid = :testingbot
|
657
662
|
|
@@ -685,7 +690,7 @@ module TestCentricity
|
|
685
690
|
end
|
686
691
|
|
687
692
|
unless desired_caps.nil?
|
688
|
-
capabilities =
|
693
|
+
capabilities = desired_caps
|
689
694
|
end
|
690
695
|
|
691
696
|
Capybara::Selenium::Driver.new(app, browser: :remote, url: endpoint, desired_capabilities: capabilities)
|
@@ -702,5 +707,19 @@ module TestCentricity
|
|
702
707
|
str if File.exist?(str)
|
703
708
|
end
|
704
709
|
end
|
710
|
+
|
711
|
+
def self.test_context_message
|
712
|
+
context_message = if ENV['TEST_CONTEXT']
|
713
|
+
"#{Environ.test_environment.to_s.upcase} - #{ENV['TEST_CONTEXT']}"
|
714
|
+
else
|
715
|
+
Environ.test_environment.to_s.upcase
|
716
|
+
end
|
717
|
+
if ENV['PARALLEL']
|
718
|
+
thread_num = ENV['TEST_ENV_NUMBER']
|
719
|
+
thread_num = 1 if thread_num.blank?
|
720
|
+
context_message = "#{context_message} - Thread ##{thread_num}"
|
721
|
+
end
|
722
|
+
context_message
|
723
|
+
end
|
705
724
|
end
|
706
725
|
end
|