testcentricity_web 4.1.10 → 4.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +92 -1
- data/README.md +301 -230
- data/lib/testcentricity_web/browser_helper.rb +2 -1
- data/lib/testcentricity_web/data_objects/environment.rb +0 -3
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +39 -2
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +162 -152
- data/lib/testcentricity_web/web_elements/media.rb +108 -0
- data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
- metadata +18 -162
- data/.gitignore +0 -39
- data/.idea/.name +0 -1
- data/.idea/encodings.xml +0 -6
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -7
- data/.rspec +0 -4
- data/.rubocop.yml +0 -38
- data/.ruby-version +0 -1
- data/.simplecov +0 -9
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -115
- data/config/cucumber.yml +0 -171
- data/config/locales/en-US.yml +0 -56
- data/config/test_data/LOCAL_data.json +0 -15
- data/config/test_data/LOCAL_data.xls +0 -0
- data/config/test_data/LOCAL_data.yml +0 -11
- data/config/test_data/data.json +0 -25
- data/config/test_data/data.xls +0 -0
- data/config/test_data/data.yml +0 -20
- data/docker-compose.yml +0 -48
- data/features/basic_form_page_css.feature +0 -54
- data/features/basic_form_page_xpath.feature +0 -26
- data/features/custom_controls.feature +0 -29
- data/features/media_players.feature +0 -67
- data/features/step_definitions/generic_steps.rb.rb +0 -124
- data/features/step_definitions/media_steps.rb +0 -30
- data/features/support/data/form_data.rb +0 -43
- data/features/support/env.rb +0 -53
- data/features/support/hooks.rb +0 -270
- data/features/support/pages/base_test_page.rb +0 -22
- data/features/support/pages/basic_css_form_page.rb +0 -57
- data/features/support/pages/basic_form_page.rb +0 -500
- data/features/support/pages/basic_xpath_form_page.rb +0 -58
- data/features/support/pages/custom_controls_page.rb +0 -263
- data/features/support/pages/indexed_sections_page.rb +0 -57
- data/features/support/pages/media_test_page.rb +0 -207
- data/features/support/sections/header_nav.rb +0 -48
- data/features/support/sections/product_card.rb +0 -39
- data/features/support/world_data.rb +0 -12
- data/features/support/world_pages.rb +0 -18
- data/reports/.keep +0 -1
- data/spec/fixtures/page_object.rb +0 -22
- data/spec/fixtures/section_object.rb +0 -21
- data/spec/spec_helper.rb +0 -33
- data/spec/testcentricity_web/browser_spec.rb +0 -41
- data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
- data/spec/testcentricity_web/elements/button_spec.rb +0 -18
- data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
- data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
- data/spec/testcentricity_web/elements/image_spec.rb +0 -33
- data/spec/testcentricity_web/elements/label_spec.rb +0 -18
- data/spec/testcentricity_web/elements/link_spec.rb +0 -23
- data/spec/testcentricity_web/elements/list_spec.rb +0 -13
- data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
- data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
- data/spec/testcentricity_web/elements/video_spec.rb +0 -68
- data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
- data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
- data/spec/testcentricity_web/page_object_spec.rb +0 -90
- data/spec/testcentricity_web/section_object_spec.rb +0 -72
- data/spec/testcentricity_web/version_spec.rb +0 -7
- data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
- data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
- data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
- data/test_site/basic_test_page.html +0 -269
- data/test_site/chosen/chosen-sprite.png +0 -0
- data/test_site/chosen/chosen-sprite@2x.png +0 -0
- data/test_site/chosen/chosen.css +0 -496
- data/test_site/chosen/chosen.jquery.js +0 -1359
- data/test_site/chosen/chosen.jquery.min.js +0 -3
- data/test_site/chosen/chosen.min.css +0 -11
- data/test_site/chosen/chosen.proto.js +0 -1399
- data/test_site/chosen/chosen.proto.min.js +0 -3
- data/test_site/chosen/composer.json +0 -36
- data/test_site/custom_controls_page.html +0 -629
- data/test_site/docsupport/chosen.png +0 -0
- data/test_site/docsupport/init.js +0 -11
- data/test_site/docsupport/init.proto.js +0 -16
- data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
- data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
- data/test_site/docsupport/oss-credit.png +0 -0
- data/test_site/docsupport/prism.css +0 -108
- data/test_site/docsupport/prism.js +0 -9
- data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
- data/test_site/docsupport/style.css +0 -219
- data/test_site/images/Blouse_Black.jpg +0 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Printed_Dress.jpg +0 -0
- data/test_site/images/T-shirt.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/images/jeans3.jpg +0 -0
- data/test_site/indexed_sections_page.html +0 -215
- data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
- data/test_site/media/MIB2.mp4 +0 -0
- data/test_site/media/MP4_small.mp4 +0 -0
- data/test_site/media/MPS_sample.mp3 +0 -0
- data/test_site/media/bbc_scotland_report.mp3 +0 -0
- data/test_site/media/count_and_bars.mp4 +0 -0
- data/test_site/media_page.html +0 -86
- data/testcentricity_web.gemspec +0 -59
@@ -173,7 +173,8 @@ module TestCentricity
|
|
173
173
|
@devices = @devices.merge(ext_devices)
|
174
174
|
end
|
175
175
|
end
|
176
|
-
|
176
|
+
device = device.gsub(/\s+/, '').downcase.to_sym if device.is_a?(String)
|
177
|
+
@devices[device]
|
177
178
|
end
|
178
179
|
end
|
179
180
|
end
|
@@ -396,7 +396,6 @@ module TestCentricity
|
|
396
396
|
@screen_shots = []
|
397
397
|
end
|
398
398
|
|
399
|
-
# :nocov:
|
400
399
|
def self.report_header
|
401
400
|
report_header = "\n<b><u>TEST ENVIRONMENT</u>:</b> #{ENV['TEST_ENVIRONMENT']}\n"\
|
402
401
|
" <b>Browser:</b>\t #{Environ.browser.capitalize}\n"
|
@@ -412,7 +411,5 @@ module TestCentricity
|
|
412
411
|
report_header = "#{report_header} <b>WCAG Accessibility Standard:</b>\t #{ENV['ACCESSIBILITY_STANDARD']}\n" if ENV['ACCESSIBILITY_STANDARD']
|
413
412
|
"#{report_header}\n\n"
|
414
413
|
end
|
415
|
-
# :nocov:
|
416
414
|
end
|
417
415
|
end
|
418
|
-
|
@@ -9,7 +9,7 @@ module TestCentricity
|
|
9
9
|
attr_accessor :locator_type
|
10
10
|
|
11
11
|
XPATH_SELECTORS = ['//', '[@', '[contains(']
|
12
|
-
CSS_SELECTORS = [
|
12
|
+
CSS_SELECTORS = %w[# :nth-child( :first-child :last-child :nth-of-type( :first-of-type :last-of-type ^= $= *= :contains(]
|
13
13
|
|
14
14
|
def set_locator_type(locator = nil)
|
15
15
|
locator = @locator if locator.nil?
|
@@ -139,6 +139,16 @@ module TestCentricity
|
|
139
139
|
ui_object.ready_state
|
140
140
|
when :volume
|
141
141
|
ui_object.volume
|
142
|
+
when :track_count
|
143
|
+
ui_object.track_count
|
144
|
+
when :active_track
|
145
|
+
ui_object.active_track
|
146
|
+
when :active_track_data
|
147
|
+
ui_object.active_track_data
|
148
|
+
when :active_track_source
|
149
|
+
ui_object.active_track_source
|
150
|
+
when :all_tracks_data
|
151
|
+
ui_object.all_tracks_data
|
142
152
|
when :crossorigin
|
143
153
|
ui_object.crossorigin
|
144
154
|
when :preload
|
@@ -181,6 +191,8 @@ module TestCentricity
|
|
181
191
|
ui_object.aria_describedby
|
182
192
|
when :aria_live
|
183
193
|
ui_object.aria_live
|
194
|
+
when :aria_busy
|
195
|
+
ui_object.aria_busy?
|
184
196
|
when :aria_selected
|
185
197
|
ui_object.aria_selected?
|
186
198
|
when :aria_hidden
|
@@ -231,6 +243,30 @@ module TestCentricity
|
|
231
243
|
ui_object.aria_multiselectable?
|
232
244
|
when :content_editable
|
233
245
|
ui_object.content_editable?
|
246
|
+
when :validation_message
|
247
|
+
ui_object.validation_message
|
248
|
+
when :badInput
|
249
|
+
ui_object.validity?(:badInput)
|
250
|
+
when :customError
|
251
|
+
ui_object.validity?(:customError)
|
252
|
+
when :patternMismatch
|
253
|
+
ui_object.validity?(:patternMismatch)
|
254
|
+
when :rangeOverflow
|
255
|
+
ui_object.validity?(:rangeOverflow)
|
256
|
+
when :rangeUnderflow
|
257
|
+
ui_object.validity?(:rangeUnderflow)
|
258
|
+
when :stepMismatch
|
259
|
+
ui_object.validity?(:stepMismatch)
|
260
|
+
when :tooLong
|
261
|
+
ui_object.validity?(:tooLong)
|
262
|
+
when :tooShort
|
263
|
+
ui_object.validity?(:tooShort)
|
264
|
+
when :typeMismatch
|
265
|
+
ui_object.validity?(:typeMismatch)
|
266
|
+
when :valid
|
267
|
+
ui_object.validity?(:valid)
|
268
|
+
when :valueMissing
|
269
|
+
ui_object.validity?(:valueMissing)
|
234
270
|
else
|
235
271
|
if property.is_a?(Hash)
|
236
272
|
property.map do |key, value|
|
@@ -356,5 +392,6 @@ module TestCentricity
|
|
356
392
|
raise "Expected element '#{expected_element.get_name}' to have focus but found '#{focused_obj[:id]} is focused instead'" unless focused_obj == expected_obj.native
|
357
393
|
|
358
394
|
puts "Element '#{expected_element.get_name}' is focused as expected"
|
359
|
-
|
395
|
+
end
|
396
|
+
end
|
360
397
|
end
|
@@ -24,56 +24,59 @@ module TestCentricity
|
|
24
24
|
@endpoint = options[:endpoint] if options.key?(:endpoint)
|
25
25
|
@capabilities = options[:desired_capabilities] if options.key?(:desired_capabilities)
|
26
26
|
end
|
27
|
-
|
28
|
-
browser = ENV['WEB_BROWSER']
|
27
|
+
# determine browser type and driver
|
28
|
+
Environ.browser = ENV['WEB_BROWSER'] if ENV['WEB_BROWSER']
|
29
|
+
Environ.driver = if ENV['DRIVER']
|
30
|
+
ENV['DRIVER'].downcase.to_sym
|
31
|
+
else
|
32
|
+
:webdriver
|
33
|
+
end
|
29
34
|
# set downloads folder path
|
30
35
|
@downloads_path = "#{Dir.pwd}/downloads"
|
31
36
|
if ENV['PARALLEL']
|
32
|
-
# :nocov:
|
33
37
|
Environ.parallel = true
|
34
38
|
Environ.process_num = ENV['TEST_ENV_NUMBER']
|
35
|
-
|
36
|
-
|
37
|
-
|
39
|
+
if Dir.exist?(@downloads_path)
|
40
|
+
@downloads_path = "#{@downloads_path}/#{ENV['TEST_ENV_NUMBER']}"
|
41
|
+
Dir.mkdir(@downloads_path) unless Dir.exist?(@downloads_path)
|
42
|
+
end
|
38
43
|
else
|
39
44
|
Environ.parallel = false
|
40
45
|
end
|
41
46
|
@downloads_path = @downloads_path.tr('/', "\\") if OS.windows?
|
42
47
|
|
43
48
|
# assume that we're testing within a local desktop web browser
|
44
|
-
Environ.driver = :webdriver
|
45
49
|
Environ.platform = :desktop
|
46
|
-
Environ.browser = browser
|
47
50
|
Environ.headless = false
|
48
51
|
Environ.device = :web
|
49
52
|
Environ.device_name = 'browser'
|
50
53
|
|
51
|
-
context = case
|
54
|
+
context = case Environ.driver
|
52
55
|
when :appium
|
53
56
|
initialize_appium
|
54
57
|
'Appium'
|
55
|
-
|
58
|
+
when :webdriver
|
59
|
+
if ENV['SELENIUM'] == 'remote'
|
60
|
+
initialize_remote
|
61
|
+
'Selenium Grid'
|
62
|
+
else
|
63
|
+
initialize_local_browser
|
64
|
+
'local browser instance'
|
65
|
+
end
|
56
66
|
when :browserstack
|
57
67
|
initialize_browserstack
|
58
68
|
'Browserstack cloud service'
|
69
|
+
when :testingbot
|
70
|
+
initialize_testingbot
|
71
|
+
'TestingBot cloud service'
|
72
|
+
# :nocov:
|
59
73
|
when :lambdatest
|
60
74
|
initialize_lambdatest
|
61
75
|
'LambdaTest cloud service'
|
62
76
|
when :saucelabs
|
63
77
|
initialize_saucelabs
|
64
78
|
'Sauce Labs cloud service'
|
65
|
-
|
66
|
-
initialize_testingbot
|
67
|
-
'TestingBot cloud service'
|
68
|
-
# :nocov:
|
69
|
-
else
|
70
|
-
if ENV['SELENIUM'] == 'remote'
|
71
|
-
initialize_remote
|
72
|
-
'Selenium Grid'
|
73
|
-
else
|
74
|
-
initialize_local_browser
|
75
|
-
'local browser instance'
|
76
|
-
end
|
79
|
+
# :nocov:
|
77
80
|
end
|
78
81
|
|
79
82
|
# set browser window size only if testing with a desktop web browser
|
@@ -138,70 +141,75 @@ module TestCentricity
|
|
138
141
|
private
|
139
142
|
|
140
143
|
def self.initialize_appium
|
141
|
-
Environ.platform
|
144
|
+
Environ.platform = :mobile
|
145
|
+
Environ.device = :simulator
|
146
|
+
Environ.browser = ENV['APP_BROWSER']
|
142
147
|
Environ.device_name = ENV['APP_DEVICE']
|
143
|
-
Environ.device_os
|
148
|
+
Environ.device_os = ENV['APP_PLATFORM_NAME'].downcase.to_sym
|
144
149
|
Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
|
145
150
|
Environ.device_os_version = ENV['APP_VERSION']
|
146
151
|
Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
147
152
|
Capybara.default_driver = :appium
|
148
153
|
Environ.driver = :appium
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
154
|
+
# define capabilites
|
155
|
+
desired_capabilities = if @capabilities.nil?
|
156
|
+
desired_capabilities = {
|
157
|
+
platformName: Environ.device_os,
|
158
|
+
platformVersion: Environ.device_os_version,
|
159
|
+
browserName: Environ.browser,
|
160
|
+
deviceName: Environ.device_name
|
161
|
+
}
|
162
|
+
desired_capabilities[:avd] = ENV['APP_DEVICE'] if Environ.device_os == :android
|
163
|
+
desired_capabilities[:automationName] = ENV['AUTOMATION_ENGINE'] if ENV['AUTOMATION_ENGINE']
|
164
|
+
if ENV['UDID']
|
165
|
+
# :nocov:
|
166
|
+
Environ.device = :device
|
167
|
+
desired_capabilities[:udid] = ENV['UDID']
|
168
|
+
desired_capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
|
169
|
+
desired_capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
|
170
|
+
# :nocov:
|
171
|
+
else
|
172
|
+
desired_capabilities[:orientation] = Environ.device_orientation.upcase if Environ.device_orientation
|
173
|
+
if Environ.device_os == :ios
|
174
|
+
desired_capabilities[:language] = Environ.language if Environ.language
|
175
|
+
desired_capabilities[:locale] = Environ.locale.gsub('-', '_') if Environ.locale
|
176
|
+
end
|
177
|
+
end
|
178
|
+
desired_capabilities[:safariIgnoreFraudWarning] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
|
179
|
+
desired_capabilities[:safariInitialUrl] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
|
180
|
+
desired_capabilities[:safariAllowPopups] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
|
181
|
+
desired_capabilities[:shutdownOtherSimulators] = ENV['SHUTDOWN_OTHER_SIMS'] if ENV['SHUTDOWN_OTHER_SIMS']
|
182
|
+
desired_capabilities[:forceSimulatorSoftwareKeyboardPresence] = ENV['SHOW_SIM_KEYBOARD'] if ENV['SHOW_SIM_KEYBOARD']
|
183
|
+
|
184
|
+
desired_capabilities[:autoAcceptAlerts] = ENV['AUTO_ACCEPT_ALERTS'] if ENV['AUTO_ACCEPT_ALERTS']
|
185
|
+
desired_capabilities[:autoDismissAlerts] = ENV['AUTO_DISMISS_ALERTS'] if ENV['AUTO_DISMISS_ALERTS']
|
186
|
+
desired_capabilities[:isHeadless] = ENV['HEADLESS'] if ENV['HEADLESS']
|
187
|
+
|
188
|
+
desired_capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
|
189
|
+
desired_capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
|
190
|
+
desired_capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
|
191
|
+
desired_capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
|
192
|
+
desired_capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
|
193
|
+
desired_capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
|
194
|
+
desired_capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
|
195
|
+
desired_capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
|
196
|
+
# set wdaLocalPort (iOS) or systemPort (Android) if PARALLEL_PORT is true
|
197
|
+
if ENV['PARALLEL'] && ENV['PARALLEL_PORT']
|
198
|
+
# :nocov:
|
199
|
+
if Environ.device_os == :ios
|
200
|
+
desired_capabilities[:wdaLocalPort] = 8100 + ENV['TEST_ENV_NUMBER'].to_i
|
201
|
+
else
|
202
|
+
desired_capabilities[:systemPort] = 8200 + ENV['TEST_ENV_NUMBER'].to_i
|
203
|
+
end
|
204
|
+
# :nocov:
|
205
|
+
else
|
206
|
+
desired_capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
|
207
|
+
desired_capabilities[:systemPort] = ENV['SYSTEM_PORT'] if ENV['SYSTEM_PORT']
|
208
|
+
end
|
209
|
+
desired_capabilities
|
210
|
+
else
|
211
|
+
@capabilities
|
212
|
+
end
|
205
213
|
# specify endpoint url
|
206
214
|
@endpoint = 'http://localhost:4723/wd/hub' if @endpoint.nil?
|
207
215
|
|
@@ -218,14 +226,16 @@ module TestCentricity
|
|
218
226
|
Environ.os = case
|
219
227
|
when OS.osx?
|
220
228
|
'OS X'
|
229
|
+
# :nocov:
|
221
230
|
when OS.windows?
|
222
231
|
'Windows'
|
223
232
|
when OS.linux?
|
224
233
|
'Linux'
|
225
234
|
else
|
226
235
|
'unknown'
|
236
|
+
# :nocov:
|
227
237
|
end
|
228
|
-
browser =
|
238
|
+
browser = Environ.browser.downcase.to_sym
|
229
239
|
|
230
240
|
case browser
|
231
241
|
when :firefox, :chrome, :ie, :safari, :edge
|
@@ -235,7 +245,7 @@ module TestCentricity
|
|
235
245
|
Environ.headless = true
|
236
246
|
else
|
237
247
|
Environ.platform = :mobile
|
238
|
-
Environ.device_name = Browsers.mobile_device_name(
|
248
|
+
Environ.device_name = Browsers.mobile_device_name(Environ.browser)
|
239
249
|
end
|
240
250
|
|
241
251
|
Capybara.register_driver :selenium do |app|
|
@@ -253,8 +263,8 @@ module TestCentricity
|
|
253
263
|
Capybara::Selenium::Driver.new(app, browser: :edge, capabilities: [options])
|
254
264
|
else
|
255
265
|
if ENV['HOST_BROWSER'] && ENV['HOST_BROWSER'].downcase.to_sym == :chrome
|
256
|
-
user_agent = Browsers.mobile_device_agent(
|
257
|
-
options = Selenium::WebDriver::Chrome::Options.new
|
266
|
+
user_agent = Browsers.mobile_device_agent(Environ.browser)
|
267
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
258
268
|
options.add_argument('--disable-dev-shm-usage')
|
259
269
|
options.add_argument("--user-agent='#{user_agent}'")
|
260
270
|
options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
|
@@ -269,14 +279,16 @@ module TestCentricity
|
|
269
279
|
|
270
280
|
def self.initialize_remote
|
271
281
|
Environ.grid = :selenium_grid
|
272
|
-
browser =
|
282
|
+
browser = Environ.browser.downcase.to_sym
|
273
283
|
@endpoint = ENV['REMOTE_ENDPOINT'] || 'http://127.0.0.1:4444/wd/hub' if @endpoint.nil?
|
274
284
|
|
275
285
|
case browser
|
286
|
+
# :nocov:
|
276
287
|
when :safari
|
277
288
|
options = Selenium::WebDriver::Safari::Options.new
|
278
289
|
when :ie
|
279
290
|
options = Selenium::WebDriver::IE::Options.new
|
291
|
+
# :nocov:
|
280
292
|
when :firefox, :firefox_headless
|
281
293
|
options = firefox_options(browser)
|
282
294
|
when :chrome, :chrome_headless, :edge, :edge_headless
|
@@ -284,9 +296,9 @@ module TestCentricity
|
|
284
296
|
else
|
285
297
|
if ENV['HOST_BROWSER'] && ENV['HOST_BROWSER'].downcase.to_sym == :chrome
|
286
298
|
Environ.platform = :mobile
|
287
|
-
Environ.device_name = Browsers.mobile_device_name(
|
288
|
-
user_agent = Browsers.mobile_device_agent(
|
289
|
-
options = Selenium::WebDriver::Chrome::Options.new
|
299
|
+
Environ.device_name = Browsers.mobile_device_name(Environ.browser)
|
300
|
+
user_agent = Browsers.mobile_device_agent(Environ.browser)
|
301
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
290
302
|
options.add_argument('--disable-dev-shm-usage')
|
291
303
|
options.add_argument("--user-agent='#{user_agent}'")
|
292
304
|
options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
|
@@ -311,11 +323,10 @@ module TestCentricity
|
|
311
323
|
Capybara.default_driver = :remote_browser
|
312
324
|
end
|
313
325
|
|
314
|
-
# :nocov:
|
315
326
|
def self.initialize_browserstack
|
316
327
|
browser = ENV['BS_BROWSER']
|
317
328
|
Environ.grid = :browserstack
|
318
|
-
|
329
|
+
Environ.os = "#{ENV['BS_OS']} #{ENV['BS_OS_VERSION']}"
|
319
330
|
if ENV['BS_REAL_MOBILE'] || ENV['BS_DEVICE']
|
320
331
|
Environ.platform = :mobile
|
321
332
|
Environ.device_name = ENV['BS_DEVICE']
|
@@ -326,11 +337,10 @@ module TestCentricity
|
|
326
337
|
else
|
327
338
|
:simulator
|
328
339
|
end
|
329
|
-
elsif ENV['BS_OS']
|
330
|
-
Environ.os = "#{ENV['BS_OS']} #{ENV['BS_OS_VERSION']}"
|
331
340
|
end
|
332
341
|
# specify endpoint url
|
333
342
|
@endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub" if @endpoint.nil?
|
343
|
+
# :nocov:
|
334
344
|
# enable tunneling if specified
|
335
345
|
if ENV['TUNNELING']
|
336
346
|
@bs_local = BrowserStack::Local.new
|
@@ -342,6 +352,7 @@ module TestCentricity
|
|
342
352
|
puts 'BrowserStack Local instance failed to start'
|
343
353
|
end
|
344
354
|
end
|
355
|
+
# :nocov:
|
345
356
|
# define BrowserStack options
|
346
357
|
options = if @capabilities.nil?
|
347
358
|
browser_options = {}
|
@@ -390,7 +401,7 @@ module TestCentricity
|
|
390
401
|
else
|
391
402
|
# define desktop browser options
|
392
403
|
bs_options[:resolution] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
393
|
-
bs_options[:seleniumVersion] = '4.
|
404
|
+
bs_options[:seleniumVersion] = '4.3.0'
|
394
405
|
{
|
395
406
|
browserName: browser,
|
396
407
|
browserVersion: ENV['BS_VERSION'],
|
@@ -407,6 +418,61 @@ module TestCentricity
|
|
407
418
|
Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
|
408
419
|
end
|
409
420
|
|
421
|
+
def self.initialize_testingbot
|
422
|
+
browser = ENV['TB_BROWSER']
|
423
|
+
Environ.grid = :testingbot
|
424
|
+
|
425
|
+
Environ.os = ENV['TB_OS']
|
426
|
+
if ENV['TB_PLATFORM']
|
427
|
+
Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
428
|
+
Environ.device_os = ENV['TB_PLATFORM']
|
429
|
+
Environ.device_name = ENV['TB_DEVICE']
|
430
|
+
Environ.device = :device
|
431
|
+
Environ.platform = :mobile
|
432
|
+
Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
|
433
|
+
else
|
434
|
+
Environ.platform = :desktop
|
435
|
+
end
|
436
|
+
# specify endpoint url
|
437
|
+
if @endpoint.nil?
|
438
|
+
url = ENV['TUNNELING'] ? '@localhost:4445/wd/hub' : '@hub.testingbot.com/wd/hub'
|
439
|
+
@endpoint = "http://#{ENV['TB_USERNAME']}:#{ENV['TB_AUTHKEY']}#{url}"
|
440
|
+
end
|
441
|
+
# define TestingBot options
|
442
|
+
options = if @capabilities.nil?
|
443
|
+
# define the required set of TestingBot options
|
444
|
+
tb_options = { build: test_context_message }
|
445
|
+
# define the optional TestingBot options
|
446
|
+
tb_options[:name] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
|
447
|
+
tb_options['timeZone'] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
|
448
|
+
tb_options['testingbot.geoCountryCode'] = ENV['GEO_LOCATION'] if ENV['GEO_LOCATION']
|
449
|
+
tb_options[:screenrecorder] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
450
|
+
tb_options[:screenshot] = ENV['SCREENSHOTS'] if ENV['SCREENSHOTS']
|
451
|
+
# define mobile device options
|
452
|
+
if ENV['TB_PLATFORM']
|
453
|
+
tb_options[:platform] = ENV['TB_PLATFORM']
|
454
|
+
tb_options[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
|
455
|
+
tb_options[:deviceName] = ENV['TB_DEVICE'] if ENV['TB_DEVICE']
|
456
|
+
else
|
457
|
+
# define desktop browser options
|
458
|
+
tb_options['screen-resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
459
|
+
tb_options['selenium-version'] = '4.3.0'
|
460
|
+
end
|
461
|
+
{
|
462
|
+
browserName: browser,
|
463
|
+
browserVersion: ENV['TB_VERSION'],
|
464
|
+
platformName: ENV['TB_OS'],
|
465
|
+
'tb:options': tb_options
|
466
|
+
}
|
467
|
+
else
|
468
|
+
@capabilities
|
469
|
+
end
|
470
|
+
register_remote_driver(:testingbot, browser, options)
|
471
|
+
# configure file_detector for remote uploads if target is desktop web browser
|
472
|
+
config_file_uploads unless ENV['TB_PLATFORM']
|
473
|
+
end
|
474
|
+
|
475
|
+
# :nocov:
|
410
476
|
def self.initialize_lambdatest
|
411
477
|
browser = ENV['LT_BROWSER']
|
412
478
|
Environ.grid = :lambdatest
|
@@ -488,7 +554,7 @@ module TestCentricity
|
|
488
554
|
# define mobile device options
|
489
555
|
if ENV['SL_PLATFORM']
|
490
556
|
sl_options[:deviceOrientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
|
491
|
-
sl_options[:appiumVersion] = '1.22.
|
557
|
+
sl_options[:appiumVersion] = '1.22.3'
|
492
558
|
{
|
493
559
|
browserName: browser,
|
494
560
|
platformName: ENV['SL_PLATFORM'],
|
@@ -513,68 +579,14 @@ module TestCentricity
|
|
513
579
|
# configure file_detector for remote uploads
|
514
580
|
config_file_uploads
|
515
581
|
end
|
516
|
-
|
517
|
-
def self.initialize_testingbot
|
518
|
-
browser = ENV['TB_BROWSER']
|
519
|
-
Environ.grid = :testingbot
|
520
|
-
|
521
|
-
Environ.os = ENV['TB_OS']
|
522
|
-
if ENV['TB_PLATFORM']
|
523
|
-
Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
|
524
|
-
Environ.device_os = ENV['TB_PLATFORM']
|
525
|
-
Environ.device_name = ENV['TB_DEVICE']
|
526
|
-
Environ.device = :device
|
527
|
-
Environ.platform = :mobile
|
528
|
-
Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
|
529
|
-
else
|
530
|
-
Environ.platform = :desktop
|
531
|
-
end
|
532
|
-
# specify endpoint url
|
533
|
-
if @endpoint.nil?
|
534
|
-
url = ENV['TUNNELING'] ? '@localhost:4445/wd/hub' : '@hub.testingbot.com/wd/hub'
|
535
|
-
@endpoint = "http://#{ENV['TB_USERNAME']}:#{ENV['TB_AUTHKEY']}#{url}"
|
536
|
-
end
|
537
|
-
# define TestingBot options
|
538
|
-
options = if @capabilities.nil?
|
539
|
-
# define the required set of TestingBot options
|
540
|
-
tb_options = { build: test_context_message }
|
541
|
-
# define the optional TestingBot options
|
542
|
-
tb_options[:name] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
|
543
|
-
tb_options[:timeZone] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
|
544
|
-
tb_options['testingbot.geoCountryCode'] = ENV['GEO_LOCATION'] if ENV['GEO_LOCATION']
|
545
|
-
tb_options[:screenrecorder] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
|
546
|
-
tb_options[:screenshot] = ENV['SCREENSHOTS'] if ENV['SCREENSHOTS']
|
547
|
-
# define mobile device options
|
548
|
-
if ENV['TB_PLATFORM']
|
549
|
-
tb_options[:platform] = ENV['TB_PLATFORM']
|
550
|
-
tb_options[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
|
551
|
-
tb_options[:deviceName] = ENV['TB_DEVICE'] if ENV['TB_DEVICE']
|
552
|
-
else
|
553
|
-
# define desktop browser options
|
554
|
-
tb_options['screen-resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
|
555
|
-
tb_options['selenium-version'] = '4.1.0'
|
556
|
-
end
|
557
|
-
{
|
558
|
-
browserName: browser,
|
559
|
-
browserVersion: ENV['TB_VERSION'],
|
560
|
-
platformName: ENV['TB_OS'],
|
561
|
-
'tb:options': tb_options
|
562
|
-
}
|
563
|
-
else
|
564
|
-
@capabilities
|
565
|
-
end
|
566
|
-
register_remote_driver(:testingbot, browser, options)
|
567
|
-
# configure file_detector for remote uploads if target is desktop web browser
|
568
|
-
config_file_uploads unless ENV['TB_PLATFORM']
|
569
|
-
end
|
570
582
|
# :nocov:
|
571
583
|
|
572
584
|
def self.chrome_edge_options(browser)
|
573
585
|
options = case browser
|
574
586
|
when :chrome, :chrome_headless
|
575
|
-
Selenium::WebDriver::Chrome::Options.new
|
587
|
+
Selenium::WebDriver::Chrome::Options.new
|
576
588
|
when :edge, :edge_headless
|
577
|
-
Selenium::WebDriver::Edge::Options.new
|
589
|
+
Selenium::WebDriver::Edge::Options.new
|
578
590
|
end
|
579
591
|
prefs = {
|
580
592
|
prompt_for_download: false,
|
@@ -613,7 +625,6 @@ module TestCentricity
|
|
613
625
|
options
|
614
626
|
end
|
615
627
|
|
616
|
-
# :nocov:
|
617
628
|
def self.test_context_message
|
618
629
|
context_message = if ENV['TEST_CONTEXT']
|
619
630
|
"#{Environ.test_environment.to_s.upcase} - #{ENV['TEST_CONTEXT']}"
|
@@ -651,6 +662,5 @@ module TestCentricity
|
|
651
662
|
str if File.exist?(str)
|
652
663
|
end
|
653
664
|
end
|
654
|
-
# :nocov:
|
655
665
|
end
|
656
666
|
end
|