testcentricity_web 2.1.8.2 → 2.1.8.3

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +27 -0
  3. data/.rubocop.yml +41 -0
  4. data/.yardopts +2 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE.txt +28 -0
  7. data/README.md +1438 -0
  8. data/Rakefile +1 -0
  9. data/lib/devices/devices.yml +280 -0
  10. data/lib/testcentricity_web.rb +140 -0
  11. data/lib/testcentricity_web/browser_helper.rb +173 -0
  12. data/lib/testcentricity_web/data_objects_helper.rb +78 -0
  13. data/lib/testcentricity_web/drag_drop_helper.rb +15 -0
  14. data/lib/testcentricity_web/elements/button.rb +8 -0
  15. data/lib/testcentricity_web/elements/cell_button.rb +8 -0
  16. data/lib/testcentricity_web/elements/cell_checkbox.rb +38 -0
  17. data/lib/testcentricity_web/elements/cell_element.rb +62 -0
  18. data/lib/testcentricity_web/elements/cell_image.rb +8 -0
  19. data/lib/testcentricity_web/elements/cell_radio.rb +31 -0
  20. data/lib/testcentricity_web/elements/checkbox.rb +99 -0
  21. data/lib/testcentricity_web/elements/file_field.rb +45 -0
  22. data/lib/testcentricity_web/elements/image.rb +34 -0
  23. data/lib/testcentricity_web/elements/label.rb +8 -0
  24. data/lib/testcentricity_web/elements/link.rb +8 -0
  25. data/lib/testcentricity_web/elements/list.rb +54 -0
  26. data/lib/testcentricity_web/elements/list_button.rb +8 -0
  27. data/lib/testcentricity_web/elements/list_checkbox.rb +38 -0
  28. data/lib/testcentricity_web/elements/list_element.rb +51 -0
  29. data/lib/testcentricity_web/elements/list_radio.rb +31 -0
  30. data/lib/testcentricity_web/elements/radio.rb +73 -0
  31. data/lib/testcentricity_web/elements/select_list.rb +189 -0
  32. data/lib/testcentricity_web/elements/table.rb +473 -0
  33. data/lib/testcentricity_web/elements/textfield.rb +84 -0
  34. data/lib/testcentricity_web/environment.rb +249 -0
  35. data/lib/testcentricity_web/excel_helper.rb +242 -0
  36. data/lib/testcentricity_web/exception_queue_helper.rb +47 -0
  37. data/lib/testcentricity_web/page_objects_helper.rb +656 -0
  38. data/lib/testcentricity_web/page_sections_helper.rb +811 -0
  39. data/lib/testcentricity_web/siebel_open_ui_helper.rb +15 -0
  40. data/lib/testcentricity_web/ui_elements_helper.rb +425 -0
  41. data/lib/testcentricity_web/utility_helpers.rb +28 -0
  42. data/lib/testcentricity_web/version.rb +3 -0
  43. data/lib/testcentricity_web/webdriver_helper.rb +451 -0
  44. data/lib/testcentricity_web/world_extensions.rb +26 -0
  45. data/testcentricity_web.gemspec +42 -0
  46. metadata +52 -4
@@ -0,0 +1,3 @@
1
+ module TestCentricityWeb
2
+ VERSION = '2.1.8.3'
3
+ end
@@ -0,0 +1,451 @@
1
+ require 'selenium-webdriver'
2
+ require 'os'
3
+
4
+
5
+ module TestCentricity
6
+ module WebDriverConnect
7
+ include Capybara::DSL
8
+
9
+ def self.initialize_web_driver(app_host = nil)
10
+ Capybara.app_host = app_host unless app_host.nil?
11
+ browser = ENV['WEB_BROWSER']
12
+
13
+ # assume that we're testing within a local desktop web browser
14
+ Environ.platform = :desktop
15
+ Environ.browser = browser
16
+ Environ.device = false
17
+ Environ.device_type = 'browser'
18
+
19
+ case browser.downcase.to_sym
20
+ when :appium
21
+ initialize_appium
22
+ context = 'mobile device emulator'
23
+ when :browserstack
24
+ initialize_browserstack
25
+ context = 'Browserstack cloud service'
26
+ when :crossbrowser
27
+ initialize_crossbrowser
28
+ context = 'CrossBrowserTesting cloud service'
29
+ when :poltergeist
30
+ initialize_poltergeist
31
+ context = 'PhantomJS'
32
+ when :saucelabs
33
+ initialize_saucelabs
34
+ context = 'Sauce Labs cloud service'
35
+ when :testingbot
36
+ initialize_testingbot
37
+ context = 'TestingBot cloud service'
38
+ else
39
+ if ENV['SELENIUM'] == 'remote'
40
+ initialize_remote
41
+ context = 'Selenium Grid2'
42
+ else
43
+ initialize_local_browser
44
+ context = 'local instance'
45
+ end
46
+ end
47
+
48
+ # set browser window size only if testing with a desktop web browser
49
+ unless Environ.is_device? || Capybara.current_driver == :poltergeist
50
+ initialize_browser_size
51
+ end
52
+
53
+ puts "Using #{Environ.browser} browser via #{context}"
54
+ end
55
+
56
+ def self.set_domain(url)
57
+ Capybara.app_host = url
58
+ end
59
+
60
+ # Set the WebDriver path for Chrome, IE, or Edge browsers
61
+ def self.set_webdriver_path(project_path)
62
+ path_to_driver = nil
63
+ # check for existence of /webdrivers or /features/support/drivers folders
64
+ base_path = 'features/support/drivers'
65
+ unless File.directory?(File.join(project_path, base_path))
66
+ base_path = 'webdrivers'
67
+ unless File.directory?(File.join(project_path, base_path))
68
+ raise 'Could not find WebDriver files in /webdrivers or /features/support/drivers folders'
69
+ end
70
+ end
71
+ # set WebDriver path based on browser and operating system
72
+ case ENV['WEB_BROWSER'].downcase.to_sym
73
+ when :chrome
74
+ if OS.osx?
75
+ path_to_driver = 'mac/chromedriver'
76
+ elsif OS.windows?
77
+ path_to_driver = 'windows/chromedriver.exe'
78
+ end
79
+ Selenium::WebDriver::Chrome.driver_path = File.join(project_path, base_path, path_to_driver)
80
+ # when :firefox
81
+ # if OS.osx?
82
+ # path_to_driver = 'mac/geckodriver'
83
+ # elsif OS.windows?
84
+ # path_to_driver = 'windows/geckodriver.exe'
85
+ # end
86
+ # Selenium::WebDriver::Firefox.driver_path = File.join(project_path, base_path, path_to_driver)
87
+ when :ie
88
+ path_to_driver = 'windows/IEDriverServer.exe'
89
+ Selenium::WebDriver::IE.driver_path = File.join(project_path, base_path, path_to_driver)
90
+ when :edge
91
+ path_to_driver = 'windows/MicrosoftWebDriver.exe'
92
+ Selenium::WebDriver::Edge.driver_path = File.join(project_path, base_path, path_to_driver)
93
+ else
94
+ if ENV['HOST_BROWSER'] && ENV['HOST_BROWSER'].downcase.to_sym == :chrome
95
+ if OS.osx?
96
+ path_to_driver = 'mac/chromedriver'
97
+ elsif OS.windows?
98
+ path_to_driver = 'windows/chromedriver.exe'
99
+ end
100
+ Selenium::WebDriver::Chrome.driver_path = File.join(project_path, base_path, path_to_driver)
101
+ end
102
+ end
103
+ puts "The webdriver path is: #{File.join(project_path, base_path, path_to_driver)}" unless path_to_driver.nil?
104
+ end
105
+
106
+ private
107
+
108
+ def self.initialize_appium
109
+ Environ.device = true
110
+ Environ.platform = :mobile
111
+ Environ.device_type = ENV['APP_DEVICE']
112
+ Environ.device_os = ENV['APP_PLATFORM_NAME']
113
+ Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
114
+ Capybara.default_driver = :appium
115
+ endpoint = 'http://localhost:4723/wd/hub'
116
+ desired_capabilities = {
117
+ platformName: ENV['APP_PLATFORM_NAME'],
118
+ platformVersion: ENV['APP_VERSION'],
119
+ browserName: ENV['APP_BROWSER'],
120
+ deviceName: ENV['APP_DEVICE']
121
+ }
122
+ desired_capabilities['avd'] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
123
+ desired_capabilities['orientation'] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
124
+ desired_capabilities['udid'] = ENV['APP_UDID'] if ENV['APP_UDID']
125
+ desired_capabilities['safariInitialUrl'] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
126
+ desired_capabilities['safariAllowPopups'] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
127
+ desired_capabilities['safariIgnoreFraudWarning'] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
128
+ desired_capabilities['noReset'] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
129
+ desired_capabilities['locale'] = ENV['LOCALE'] if ENV['LOCALE']
130
+
131
+ Capybara.register_driver :appium do |app|
132
+ appium_lib_options = { server_url: endpoint }
133
+ all_options = {
134
+ appium_lib: appium_lib_options,
135
+ caps: desired_capabilities
136
+ }
137
+ Appium::Capybara::Driver.new app, all_options
138
+ end
139
+ end
140
+
141
+ def self.initialize_local_browser
142
+ if OS.osx?
143
+ Environ.os = 'OS X'
144
+ elsif OS.windows?
145
+ Environ.os = 'Windows'
146
+ end
147
+
148
+ browser = ENV['WEB_BROWSER']
149
+
150
+ case browser.downcase.to_sym
151
+ when :firefox, :chrome, :ie, :safari, :edge
152
+ Environ.platform = :desktop
153
+ else
154
+ Environ.platform = :mobile
155
+ Environ.device_type = Browsers.mobile_device_name(browser)
156
+ end
157
+
158
+ Capybara.default_driver = :selenium
159
+ Capybara.register_driver :selenium do |app|
160
+ case browser.downcase.to_sym
161
+ when :ie, :safari, :edge
162
+ Capybara::Selenium::Driver.new(app, :browser => browser.to_sym)
163
+
164
+ when :firefox
165
+ if ENV['LOCALE']
166
+ profile = Selenium::WebDriver::Firefox::Profile.new
167
+ profile['intl.accept_languages'] = ENV['LOCALE']
168
+ Capybara::Selenium::Driver.new(app, :profile => profile)
169
+ else
170
+ Capybara::Selenium::Driver.new(app, :browser => :firefox)
171
+ end
172
+
173
+ when :chrome
174
+ ENV['LOCALE'] ? args = ['--disable-infobars', "--lang=#{ENV['LOCALE']}"] : args = ['--disable-infobars']
175
+ Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => args)
176
+
177
+ else
178
+ user_agent = Browsers.mobile_device_agent(browser)
179
+ ENV['HOST_BROWSER'] ? host_browser = ENV['HOST_BROWSER'].downcase.to_sym : host_browser = :firefox
180
+ case host_browser
181
+ when :firefox
182
+ profile = Selenium::WebDriver::Firefox::Profile.new
183
+ profile['general.useragent.override'] = user_agent
184
+ profile['intl.accept_languages'] = ENV['LOCALE'] if ENV['LOCALE']
185
+ Capybara::Selenium::Driver.new(app, :profile => profile)
186
+
187
+ when :chrome
188
+ ENV['LOCALE'] ?
189
+ args = ["--user-agent='#{user_agent}'", "--lang=#{ENV['LOCALE']}", '--disable-infobars'] :
190
+ args = ["--user-agent='#{user_agent}'", '--disable-infobars']
191
+ Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => args)
192
+ end
193
+ end
194
+ end
195
+ end
196
+
197
+ def self.initialize_browserstack
198
+ browser = ENV['BS_BROWSER']
199
+
200
+ if ENV['BS_REAL_MOBILE'] || ENV['BS_PLATFORM']
201
+ Environ.platform = :mobile
202
+ Environ.device = true
203
+ Environ.device_type = ENV['BS_DEVICE']
204
+ Environ.device_os = ENV['BS_OS']
205
+ Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
206
+
207
+ elsif ENV['BS_OS']
208
+ Environ.os = "#{ENV['BS_OS']} #{ENV['BS_OS_VERSION']}"
209
+ end
210
+
211
+ endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub"
212
+ Capybara.register_driver :browserstack do |app|
213
+ capabilities = Selenium::WebDriver::Remote::Capabilities.new
214
+
215
+ if ENV['BS_REAL_MOBILE']
216
+ capabilities['device'] = ENV['BS_DEVICE']
217
+ capabilities['realMobile'] = true
218
+ capabilities['os_version'] = ENV['BS_OS_VERSION']
219
+
220
+ elsif ENV['BS_PLATFORM']
221
+ capabilities[:platform] = ENV['BS_PLATFORM']
222
+ capabilities[:browserName] = browser
223
+ capabilities['device'] = ENV['BS_DEVICE'] if ENV['BS_DEVICE']
224
+ capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
225
+
226
+ elsif ENV['BS_OS']
227
+ capabilities['os'] = ENV['BS_OS']
228
+ capabilities['os_version'] = ENV['BS_OS_VERSION']
229
+ capabilities['browser'] = browser || 'chrome'
230
+ capabilities['browser_version'] = ENV['BS_VERSION'] if ENV['BS_VERSION']
231
+ capabilities['resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
232
+ end
233
+
234
+ capabilities['browserstack.timezone'] = ENV['TIME_ZONE'] if ENV['TIME_ZONE']
235
+ capabilities['browserstack.video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
236
+ capabilities['browserstack.debug'] = 'true'
237
+ capabilities['project'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
238
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
239
+
240
+ ENV['TEST_CONTEXT'] ?
241
+ context_message = "#{Environ.test_environment} - #{ENV['TEST_CONTEXT']}" :
242
+ context_message = Environ.test_environment
243
+ if ENV['PARALLEL']
244
+ thread_num = ENV['TEST_ENV_NUMBER']
245
+ thread_num = 1 if thread_num.blank?
246
+ context_message = "#{context_message} - Thread ##{thread_num}"
247
+ end
248
+ capabilities['name'] = context_message
249
+
250
+ capabilities['acceptSslCerts'] = 'true'
251
+ capabilities['browserstack.localIdentifier'] = ENV['BS_LOCAL_ID'] if ENV['BS_LOCAL_ID']
252
+ capabilities['browserstack.local'] = 'true' if ENV['TUNNELING']
253
+
254
+ case browser.downcase.to_sym
255
+ when :ie
256
+ capabilities['ie.ensureCleanSession'] = 'true'
257
+ capabilities['ie.browserCommandLineSwitches'] = 'true'
258
+ capabilities['nativeEvents'] = 'true'
259
+ when :safari
260
+ capabilities['cleanSession'] = 'true'
261
+ when :iphone, :ipad
262
+ capabilities['javascriptEnabled'] = 'true'
263
+ capabilities['cleanSession'] = 'true'
264
+ end
265
+ Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
266
+ end
267
+
268
+ Environ.browser = browser
269
+
270
+ Capybara.default_driver = :browserstack
271
+ Capybara.run_server = false
272
+ end
273
+
274
+ def self.initialize_crossbrowser
275
+ browser = ENV['CB_BROWSER']
276
+
277
+ if ENV['CB_OS']
278
+ Environ.os = ENV['CB_OS']
279
+ Environ.platform = :desktop
280
+ elsif ENV['CB_PLATFORM']
281
+ Environ.device_type = ENV['CB_PLATFORM']
282
+ Environ.device = true
283
+ Environ.platform = :mobile
284
+ end
285
+
286
+ endpoint = "http://#{ENV['CB_USERNAME']}:#{ENV['CB_AUTHKEY']}@hub.crossbrowsertesting.com:80/wd/hub"
287
+ Capybara.register_driver :crossbrowser do |app|
288
+ capabilities = Selenium::WebDriver::Remote::Capabilities.new
289
+ capabilities['name'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
290
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
291
+ capabilities['browser_api_name'] = browser
292
+ capabilities['screen_resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
293
+ if ENV['CB_OS']
294
+ capabilities['os_api_name'] = ENV['CB_OS']
295
+ Environ.platform = :desktop
296
+ elsif ENV['CB_PLATFORM']
297
+ capabilities['os_api_name'] = ENV['CB_PLATFORM']
298
+ end
299
+ Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
300
+ end
301
+
302
+ Environ.browser = browser
303
+
304
+ Capybara.default_driver = :crossbrowser
305
+ Capybara.run_server = false
306
+ end
307
+
308
+ def self.initialize_poltergeist
309
+ if ENV['BROWSER_SIZE']
310
+ resolution = ENV['BROWSER_SIZE'].split(',')
311
+ width = resolution[0]
312
+ height = resolution[1]
313
+ else
314
+ width = 1650
315
+ height = 1000
316
+ end
317
+ Capybara.default_driver = :poltergeist
318
+ Capybara.register_driver :poltergeist do |app|
319
+ options = {
320
+ :js_errors => true,
321
+ :timeout => 120,
322
+ :debug => false,
323
+ :phantomjs_options => ['--load-images=no', '--disk-cache=false'],
324
+ :inspector => true,
325
+ :window_size => [width, height]
326
+ }
327
+ Capybara::Poltergeist::Driver.new(app, options)
328
+ end
329
+ end
330
+
331
+ def self.initialize_remote
332
+ browser = ENV['WEB_BROWSER']
333
+ endpoint = ENV['REMOTE_ENDPOINT'] || 'http://127.0.0.1:4444/wd/hub'
334
+ capabilities = Selenium::WebDriver::Remote::Capabilities.send(browser.downcase.to_sym)
335
+ Capybara.register_driver :remote_browser do |app|
336
+ Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
337
+ end
338
+ Capybara.current_driver = :remote_browser
339
+ Capybara.default_driver = :remote_browser
340
+ end
341
+
342
+ def self.initialize_saucelabs
343
+ browser = ENV['SL_BROWSER']
344
+
345
+ if ENV['SL_OS']
346
+ Environ.platform = :desktop
347
+ Environ.os = ENV['SL_OS']
348
+ elsif ENV['SL_PLATFORM']
349
+ Environ.device_type = ENV['SL_DEVICE']
350
+ Environ.platform = :mobile
351
+ end
352
+
353
+ endpoint = "http://#{ENV['SL_USERNAME']}:#{ENV['SL_AUTHKEY']}@ondemand.saucelabs.com:80/wd/hub"
354
+ Capybara.register_driver :saucelabs do |app|
355
+ capabilities = Selenium::WebDriver::Remote::Capabilities.new
356
+ capabilities['name'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
357
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
358
+ capabilities['browserName'] = browser
359
+ capabilities['version'] = ENV['SL_VERSION'] if ENV['SL_VERSION']
360
+ capabilities['screenResolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
361
+ capabilities['recordVideo'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
362
+ if ENV['SL_OS']
363
+ capabilities['platform'] = ENV['SL_OS']
364
+ elsif ENV['SL_PLATFORM']
365
+ capabilities['platform'] = ENV['SL_PLATFORM']
366
+ capabilities['deviceName'] = ENV['SL_DEVICE']
367
+ capabilities['deviceType'] = ENV['SL_DEVICE_TYPE'] if ENV['SL_DEVICE_TYPE']
368
+ capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
369
+ end
370
+
371
+ Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
372
+ end
373
+
374
+ Environ.browser = browser
375
+
376
+ Capybara.default_driver = :saucelabs
377
+ Capybara.run_server = false
378
+ end
379
+
380
+ def self.initialize_testingbot
381
+ browser = ENV['TB_BROWSER']
382
+
383
+ Environ.os = ENV['TB_OS']
384
+ if ENV['TB_PLATFORM']
385
+ if ENV['ORIENTATION']
386
+ Environ.device_orientation = ENV['ORIENTATION']
387
+ end
388
+ Environ.device_os = ENV['TB_PLATFORM']
389
+ Environ.device_type = ENV['TB_DEVICE']
390
+ Environ.device = true
391
+ Environ.platform = :mobile
392
+ else
393
+ Environ.platform = :desktop
394
+ end
395
+
396
+ ENV['TUNNELING'] ?
397
+ endpoint = '@localhost:4445/wd/hub' :
398
+ endpoint = '@hub.testingbot.com:4444/wd/hub'
399
+ endpoint = "http://#{ENV['TB_USERNAME']}:#{ENV['TB_AUTHKEY']}#{endpoint}"
400
+ Capybara.register_driver :testingbot do |app|
401
+ capabilities = Selenium::WebDriver::Remote::Capabilities.new
402
+ capabilities['name'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
403
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
404
+ capabilities['browserName'] = browser
405
+ capabilities['version'] = ENV['TB_VERSION'] if ENV['TB_VERSION']
406
+ capabilities['screen-resolution'] = ENV['RESOLUTION'] if ENV['RESOLUTION']
407
+ capabilities['platform'] = ENV['TB_OS']
408
+ capabilities['record_video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
409
+ if ENV['TB_PLATFORM']
410
+ if ENV['ORIENTATION']
411
+ capabilities['orientation'] = ENV['ORIENTATION']
412
+ end
413
+ capabilities['platformName'] = ENV['TB_PLATFORM']
414
+ capabilities['deviceName'] = ENV['TB_DEVICE']
415
+ end
416
+
417
+ Capybara::Selenium::Driver.new(app, :browser => :remote, :url => endpoint, :desired_capabilities => capabilities)
418
+ end
419
+
420
+ Environ.browser = browser
421
+
422
+ Capybara.default_driver = :testingbot
423
+ Capybara.run_server = false
424
+
425
+ end
426
+
427
+ def self.initialize_browser_size
428
+ # tile browser windows if running in multiple parallel threads and BROWSER_TILE environment variable is true
429
+ if ENV['PARALLEL'] && ENV['BROWSER_TILE']
430
+ thread = ENV['TEST_ENV_NUMBER'].to_i
431
+ if thread > 1
432
+ Browsers.set_browser_window_position(100 * thread - 1, 100 * thread - 1)
433
+ sleep(1)
434
+ end
435
+ end
436
+
437
+ browser = Environ.browser.to_s
438
+ if Environ.is_desktop?
439
+ if ENV['BROWSER_SIZE'] == 'max'
440
+ Browsers.maximize_browser
441
+ elsif ENV['BROWSER_SIZE']
442
+ Browsers.set_browser_window_size(ENV['BROWSER_SIZE'])
443
+ else
444
+ Browsers.set_browser_window_size(Browsers.browser_size(browser, ENV['ORIENTATION']))
445
+ end
446
+ elsif Environ.is_mobile? && !Environ.is_device?
447
+ Browsers.set_browser_window_size(Browsers.browser_size(browser, ENV['ORIENTATION']))
448
+ end
449
+ end
450
+ end
451
+ end