testcentricity 2.3.19 → 2.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8046d5d0ef0d140f8236192547ae759e4a01d8d5
4
- data.tar.gz: d58ddbc8a4065f42dbd6be3faeb02f2b483208a0
3
+ metadata.gz: bec8539d0e9b7b3442baf37b6ad6dfa0127f1098
4
+ data.tar.gz: 92f2cbb4725151a936056835745029b93bf1e2be
5
5
  SHA512:
6
- metadata.gz: eeb9e89b65774488523144e1c9754a6cdd8e8c14b1918965ae52085c4a9636fd24688e1e509dd933026b1c67fc306225cc476643b3d668b99643c99a555167b7
7
- data.tar.gz: 5c6e2de2fe6426af1887cc7e657008af6df80e9409c6413bb0c96009ac1f00d7a7844eacd6d7905c7a5dd1100d2aeda9250bf612e57db39273f16299ed058fd3
6
+ metadata.gz: a00a9c37aaeb50c688cc39be27f37e3505db5f410bab9595fd1b3f68aa6ed205febf1a402c2191f4ebb21d13bb3a2ac8ab109c676b6e0b87d690b9016014d5ee
7
+ data.tar.gz: f134665182d8ffa55f92cb699eb68ad1ff76245214f15f10eaf748ba96abb18f1dcf781b8cdc8ab9371bc26b5c66e968dfcdbbd5c9f2e18f3b05c930222a1cb8
data/README.md CHANGED
@@ -28,6 +28,12 @@ hosted instances of Chrome, Firefox, Safari, and IE web browsers.
28
28
 
29
29
 
30
30
  ## What's New
31
+ ###Version 2.4.0
32
+
33
+ * Updated `TestCentricity::WebDriverConnect.initialize_web_driver` method to read the `APP_FULL_RESET`, `APP_NO_RESET`, and `NEW_COMMAND_TIMEOUT` Environment
34
+ Variables and set the corresponding `fullReset`, `noReset`, and `newCommandTimeout` Appium capabilities for iOS and Android physical devices and simulators.
35
+ Also reads the `WDA_LOCAL_PORT` Environment Variable and sets the `wdaLocalPort` Appium capability for iOS physical devices only.
36
+
31
37
  ###Version 2.3.18
32
38
 
33
39
  * Updated `SelectList.define_list_elements` method to accept value for `:list_trigger` element.
@@ -985,10 +991,13 @@ Once your test environment is properly configured, the following **Environment V
985
991
  `APP_ALLOW_POPUPS` | [Optional] Allow javascript to open new windows in Safari. Set to `true` or `false`
986
992
  `APP_IGNORE_FRAUD_WARNING` | [Optional] Prevent Safari from showing a fraudulent website warning. Set to `true` or `false`
987
993
  `APP_NO_RESET` | [Optional] Don't reset app state after each test. Set to `true` or `false`
994
+ `APP_FULL_RESET` | [Optional] Perform a complete reset. Set to `true` or `false`
988
995
  `APP_INITIAL_URL` | [Optional] Initial URL, default is a local welcome page. e.g. `http://www.apple.com`
996
+ `WDA_LOCAL_PORT` | [Optional] Used to forward traffic from Mac host to real iOS devices over USB. Default value is same as port number used by WDA on device.
989
997
  `LOCALE` | [Optional] Locale to set for the simulator. e.g. `fr_CA`
990
998
  `LANGUAGE` | [Optional] Language to set for the simulator. e.g. `fr`
991
999
  `ORIENTATION` | [Optional] Set to `portrait` or `landscape` (only for iOS simulators)
1000
+ `NEW_COMMAND_TIMEOUT` | [Optional] Time (in Seconds) that Appium will wait for a new command from the client
992
1001
 
993
1002
 
994
1003
  ### Mobile Chrome or Android browsers on Android Studio Virtual Device emulators
@@ -1013,8 +1022,12 @@ Once your test environment is properly configured, the following **Environment V
1013
1022
  `DEVICE_TYPE` | Must be set to `phone` or `tablet`
1014
1023
  `ORIENTATION` | [Optional] Set to `portrait` or `landscape`
1015
1024
  `APP_INITIAL_URL` | [Optional] Initial URL, default is a local welcome page. e.g. `http://www.apple.com`
1025
+ `APP_NO_RESET` | [Optional] Don't reset app state after each test. Set to `true` or `false`
1026
+ `APP_FULL_RESET` | [Optional] Perform a complete reset. Set to `true` or `false`
1016
1027
  `LOCALE` | [Optional] Locale to set for the simulator. e.g. `fr_CA`
1017
1028
  `LANGUAGE` | [Optional] Language to set for the simulator. e.g. `fr`
1029
+ `NEW_COMMAND_TIMEOUT` | [Optional] Time (in Seconds) that Appium will wait for a new command from the client
1030
+ `CHROMEDRIVER_EXECUTABLE` | [Optional] Absolute local path to webdriver executable
1018
1031
 
1019
1032
 
1020
1033
  ### Remotely hosted desktop and mobile web browsers
@@ -11,57 +11,97 @@ module TestCentricity
11
11
  Environ.platform = :mobile
12
12
  Environ.driver = :appium
13
13
  Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
14
+ Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
14
15
 
15
16
  @config_file = project_path
16
17
 
17
18
  if project_path.nil?
18
- Environ.device_name = ENV['APP_DEVICE']
19
- Environ.device_os = ENV['APP_PLATFORM_NAME']
20
- Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
21
- ENV['UDID'] ? Environ.device = :device : Environ.device = :simulator
19
+ browser = ENV['WEB_BROWSER']
20
+ case browser.downcase.to_sym
21
+ when :appium
22
+ Environ.device_name = ENV['APP_DEVICE']
23
+ Environ.device_os = ENV['APP_PLATFORM_NAME']
24
+ ENV['UDID'] ? Environ.device = :device : Environ.device = :simulator
25
+ when :browserstack
26
+ Environ.device_name = ENV['BS_DEVICE']
27
+ Environ.device_os = ENV['BS_OS']
28
+ end
22
29
  end
23
30
  @running = false
24
31
  end
25
32
 
26
33
  def self.start_driver
27
34
  if @config_file.nil?
28
- desired_capabilities = {
29
- caps: {
30
- platformName: ENV['APP_PLATFORM_NAME'],
31
- platformVersion: ENV['APP_VERSION'],
32
- deviceName: ENV['APP_DEVICE'],
33
- automationName: ENV['AUTOMATION_ENGINE']
34
- }
35
- }
36
- capabilities = desired_capabilities[:caps]
37
- capabilities[:avd] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
38
- capabilities[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
39
- capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
40
- capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
41
- capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
42
- capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
43
- capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
44
- if ENV['UDID']
45
- capabilities[:udid] = ENV['UDID']
46
- capabilities[:bundleId] = ENV['BUNDLE_ID'] if ENV['BUNDLE_ID']
47
- capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
48
- capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
49
- capabilities[:appActivity] = ENV['APP_ACTIVITY'] if ENV['APP_ACTIVITY']
50
- capabilities[:appPackage] = ENV['APP_PACKAGE'] if ENV['APP_PACKAGE']
51
- end
35
+ browser = ENV['WEB_BROWSER']
36
+ case browser.downcase.to_sym
37
+ when :appium
38
+ desired_capabilities = {
39
+ caps: {
40
+ platformName: ENV['APP_PLATFORM_NAME'],
41
+ platformVersion: ENV['APP_VERSION'],
42
+ deviceName: ENV['APP_DEVICE'],
43
+ automationName: ENV['AUTOMATION_ENGINE']
44
+ }
45
+ }
46
+ capabilities = desired_capabilities[:caps]
47
+ capabilities[:avd] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
48
+ capabilities[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
49
+ capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
50
+ capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
51
+ capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
52
+ capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
53
+ capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
54
+ capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
55
+ capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
56
+ capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
57
+ capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
58
+ capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
59
+ capabilities[:startIWDP] = ENV['START_IWDP'] if ENV['START_IWDP']
60
+ capabilities[:autoWebview] = ENV['AUTO_WEBVIEW'] if ENV['AUTO_WEBVIEW']
61
+ capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
62
+ capabilities[:autoWebviewTimeout] = ENV['AUTO_WEBVIEW_TIMEOUT'] if ENV['AUTO_WEBVIEW_TIMEOUT']
63
+
64
+ if ENV['UDID']
65
+ capabilities[:udid] = ENV['UDID']
66
+ capabilities[:bundleId] = ENV['BUNDLE_ID'] if ENV['BUNDLE_ID']
67
+ capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
68
+ capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
69
+ capabilities[:appActivity] = ENV['APP_ACTIVITY'] if ENV['APP_ACTIVITY']
70
+ capabilities[:appPackage] = ENV['APP_PACKAGE'] if ENV['APP_PACKAGE']
71
+ end
52
72
 
53
- if ENV['APP']
54
- capabilities[:app] = ENV['APP']
55
- else
56
- if Environ.is_android?
57
- capabilities[:app] = Environ.current.android_apk_path
58
- elsif Environ.is_ios?
59
- Environ.is_device? ?
60
- capabilities[:app] = Environ.current.ios_ipa_path :
61
- capabilities[:app] = Environ.current.ios_app_path
73
+ if ENV['APP']
74
+ capabilities[:app] = ENV['APP']
75
+ else
76
+ if Environ.is_android?
77
+ capabilities[:app] = Environ.current.android_apk_path
78
+ elsif Environ.is_ios?
79
+ Environ.is_device? ?
80
+ capabilities[:app] = Environ.current.ios_ipa_path :
81
+ capabilities[:app] = Environ.current.ios_app_path
82
+ end
62
83
  end
84
+ when :browserstack
85
+ endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub"
86
+
87
+ capabilities = {}
88
+ capabilities['device'] = ENV['BS_DEVICE']
89
+ capabilities['os_version'] = ENV['BS_OS_VERSION']
90
+ capabilities['app'] = "bs://#{ENV['APP_ID']}"
91
+ capabilities['realMobile'] = true
92
+ capabilities['project'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
93
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
94
+ capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
95
+ capabilities['browserstack.debug'] = true
96
+ capabilities['browserstack.video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
97
+ capabilities['browserstack.debug'] = 'true'
98
+
99
+ appium_lib_options = { server_url: endpoint }
100
+ desired_capabilities = {
101
+ appium_lib: appium_lib_options,
102
+ caps: capabilities
103
+ }
63
104
  end
64
-
65
105
  else
66
106
  base_path = 'config'
67
107
  unless File.directory?(File.join(@config_file, base_path))
@@ -70,9 +110,13 @@ module TestCentricity
70
110
  appium_caps = File.join(@config_file, base_path, 'appium.txt')
71
111
  desired_capabilities = Appium.load_appium_txt file: appium_caps
72
112
  end
113
+
114
+ puts "Appium desired_capabilities = #{desired_capabilities}" if ENV['DEBUG']
115
+
73
116
  Appium::Driver.new(desired_capabilities).start_driver
74
117
  @running = true
75
118
  Appium.promote_appium_methods TestCentricity::ScreenObject
119
+ Appium.promote_appium_methods TestCentricity::ScreenSection
76
120
  Appium.promote_appium_methods TestCentricity::AppUIElement
77
121
 
78
122
  Environ.screen_size = $driver.window_size
@@ -152,6 +196,7 @@ module TestCentricity
152
196
 
153
197
  def self.default_context
154
198
  $driver.switch_to_default_context
199
+ puts "Current context = #{$driver.current_context}" if ENV['DEBUG']
155
200
  end
156
201
 
157
202
  def self.is_webview?
@@ -164,7 +209,9 @@ module TestCentricity
164
209
 
165
210
  def self.webview_context
166
211
  contexts = available_contexts
212
+ puts "Contexts = #{contexts}" if ENV['DEBUG']
167
213
  set_context(contexts.last)
214
+ puts "Current context = #{$driver.current_context}" if ENV['DEBUG']
168
215
  end
169
216
  end
170
217
  end
@@ -361,7 +361,6 @@ module TestCentricity
361
361
  end
362
362
 
363
363
 
364
-
365
364
  def width
366
365
  section = find_section
367
366
  section_not_found_exception(section)
@@ -379,6 +378,7 @@ module TestCentricity
379
378
  section_not_found_exception(section)
380
379
  section.location.x
381
380
  end
381
+
382
382
  def y_loc
383
383
  section = find_section
384
384
  section_not_found_exception(section)
@@ -386,8 +386,6 @@ module TestCentricity
386
386
  end
387
387
 
388
388
 
389
-
390
-
391
389
  def verify_ui_states(ui_states)
392
390
  ui_states.each do |ui_object, object_states|
393
391
  object_states.each do |property, state|
@@ -35,19 +35,15 @@ module TestCentricity
35
35
  def tap
36
36
  obj = element
37
37
  object_not_found_exception(obj)
38
- x = obj.location.x
39
- y = obj.location.y
40
- tap_action = Appium::TouchAction.new.tap(element: obj, x: x, y: y)
41
- tap_action.perform
38
+ actions = Appium::TouchAction.new
39
+ actions.tap(element: obj).perform
42
40
  end
43
41
 
44
42
  def double_tap
45
43
  obj = element
46
44
  object_not_found_exception(obj)
47
- x = obj.location.x
48
- y = obj.location.y
49
- tap_action = Appium::TouchAction.new.double_tap(element: obj, x: x, y: y)
50
- tap_action.perform
45
+ actions = Appium::TouchAction.new
46
+ actions.double_tap(element: obj).perform
51
47
  end
52
48
 
53
49
  def set(value)
@@ -301,21 +297,44 @@ module TestCentricity
301
297
  def scroll(direction)
302
298
  obj = element
303
299
  object_not_found_exception(obj)
304
- execute_script('mobile: scroll', direction: direction.to_s, element: obj)
300
+ if Environ.device_os == :ios
301
+ execute_script('mobile: scroll', direction: direction.to_s, element: obj)
302
+ else
303
+ case direction
304
+ when :down
305
+ x = obj.size.width.to_i / 2
306
+ bottom = obj.size.height
307
+ bottom = window_size[:height].to_i if bottom > window_size[:height]
308
+ start_pt = [x, bottom]
309
+ delta_pt = [0, 0 - (bottom - 20)]
310
+
311
+ when :up
312
+ x = obj.size.width.to_i / 2
313
+ top = obj.location.y - (obj.size.height / 2)
314
+ top = 0 if top < 0
315
+ start_pt = [x, top]
316
+ delta_pt = [0, obj.size.height / 2]
317
+ end
318
+ puts "Swipe start_pt = #{start_pt} / delta_pt = #{delta_pt}" if ENV['DEBUG']
319
+ Appium::TouchAction.new.swipe(start_x: start_pt[0], start_y: start_pt[1], delta_x: delta_pt[0], delta_y: delta_pt[1]).perform
320
+ end
305
321
  end
306
322
 
307
323
  def swipe(direction)
308
- execute_script('mobile: swipe', direction: direction.to_s)
324
+ obj = element
325
+ object_not_found_exception(obj)
326
+ if Environ.device_os == :ios
327
+ execute_script('mobile: swipe', direction: direction.to_s, element: obj)
328
+ else
329
+ actions = Appium::TouchAction.new
330
+ actions.scroll(element: obj).perform
331
+ end
309
332
  end
310
333
 
311
-
312
334
  private
313
335
 
314
336
  def element
315
- parent_section = @context == :section
316
- parent_section ? tries ||= 2 : tries ||= 1
317
-
318
- if parent_section && tries > 1
337
+ if @context == :section
319
338
  parent_obj = nil
320
339
  locators = @parent.get_locator
321
340
  locators.each do |parent_locator|
@@ -335,8 +354,7 @@ module TestCentricity
335
354
  obj
336
355
  end
337
356
  rescue
338
- puts "Did not find parent object '#{@parent.get_name}' - #{@parent.get_locator}" if tries == 2 && ENV['DEBUG']
339
- retry if (tries -= 1) > 0
357
+ puts "Did not find object '#{@name}' - #{@locator}" if ENV['DEBUG']
340
358
  nil
341
359
  end
342
360
 
@@ -1,23 +1,51 @@
1
1
  module TestCentricity
2
2
  class AppList < AppUIElement
3
+ attr_accessor :list_item
4
+
3
5
  def initialize(name, parent, locator, context)
4
6
  super
5
- @type = :list
7
+ @type = :list
8
+ @list_item = nil
9
+ end
10
+
11
+ def define_list_elements(element_spec)
12
+ element_spec.each do |element, value|
13
+ case element
14
+ when :list_item
15
+ @list_item = value
16
+ else
17
+ raise "#{element} is not a recognized list element"
18
+ end
19
+ end
6
20
  end
7
21
 
8
22
  def get_item_count
9
23
  obj = element
10
24
  object_not_found_exception(obj)
11
- if Environ.device_os == :ios
12
- items = obj.find_elements(:class, 'XCUIElementTypeCell')
13
- else
14
- items = obj.find_elements(:class, 'android.widget.FrameLayout')
15
- end
25
+ list_loc = get_list_item_locator
26
+ items = obj.find_elements(list_loc.keys[0], list_loc.values[0])
16
27
  items.size
17
28
  end
18
29
 
19
30
  def get_list_items
31
+ list_items = []
32
+ obj = element
33
+ object_not_found_exception(obj)
34
+ list_loc = get_list_item_locator
35
+ items = obj.find_elements(list_loc.keys[0], list_loc.values[0])
36
+ items.each do |item|
37
+ list_items.push(item.text)
38
+ end
39
+ list_items
40
+ end
20
41
 
42
+ def click_list_item(index)
43
+ obj = element
44
+ object_not_found_exception(obj)
45
+ list_loc = get_list_item_locator
46
+ items = obj.find_elements(list_loc.keys[0], list_loc.values[0])
47
+ list_item = items[index]
48
+ list_item.click
21
49
  end
22
50
 
23
51
  def get_list_item(index)
@@ -50,5 +78,18 @@ module TestCentricity
50
78
  rescue
51
79
  raise "Value of List #{object_ref_message} failed to change from '#{value}' after #{timeout} seconds" if get_item_count == value
52
80
  end
81
+
82
+ private
83
+
84
+ def get_list_item_locator
85
+ if @list_item.nil?
86
+ if Environ.device_os == :ios
87
+ define_list_elements({ :list_item => { class: 'XCUIElementTypeCell' } } )
88
+ else
89
+ define_list_elements({ :list_item => { class: 'android.widget.FrameLayout' } } )
90
+ end
91
+ end
92
+ @list_item
93
+ end
53
94
  end
54
95
  end
@@ -1,3 +1,3 @@
1
1
  module TestCentricity
2
- VERSION = '2.3.19'
2
+ VERSION = '2.4.0'
3
3
  end
@@ -192,12 +192,21 @@ module TestCentricity
192
192
  else
193
193
  Environ.device = :simulator
194
194
  end
195
- desired_capabilities[:safariInitialUrl] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
196
- desired_capabilities[:safariAllowPopups] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
197
195
  desired_capabilities[:safariIgnoreFraudWarning] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
198
- desired_capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
196
+ desired_capabilities[:safariInitialUrl] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
197
+ desired_capabilities[:safariAllowPopups] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
198
+ desired_capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
199
+ desired_capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
200
+ desired_capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
201
+ desired_capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
202
+ desired_capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
203
+ desired_capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
204
+ desired_capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
205
+ desired_capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
206
+ desired_capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
207
+
199
208
  desired_capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
200
- desired_capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
209
+ desired_capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
201
210
 
202
211
  Capybara.register_driver :appium do |app|
203
212
  appium_lib_options = { server_url: endpoint }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testcentricity
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.19
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.J. Mrozinski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-14 00:00:00.000000000 Z
11
+ date: 2018-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler