calabash-cucumber 0.10.0.pre1 → 0.10.0.pre2

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/features/step_definitions/calabash_steps.rb +1 -1
  3. data/lib/calabash-cucumber/actions/instruments_actions.rb +15 -4
  4. data/lib/calabash-cucumber/actions/playback_actions.rb +12 -3
  5. data/lib/calabash-cucumber/connection.rb +3 -0
  6. data/lib/calabash-cucumber/connection_helpers.rb +4 -0
  7. data/lib/calabash-cucumber/core.rb +637 -83
  8. data/lib/calabash-cucumber/date_picker.rb +148 -29
  9. data/lib/calabash-cucumber/device.rb +160 -3
  10. data/lib/calabash-cucumber/environment_helpers.rb +91 -46
  11. data/lib/calabash-cucumber/failure_helpers.rb +40 -0
  12. data/lib/calabash-cucumber/http_helpers.rb +9 -2
  13. data/lib/calabash-cucumber/ibase.rb +136 -17
  14. data/lib/calabash-cucumber/ios7_operations.rb +13 -9
  15. data/lib/calabash-cucumber/ipad_1x_2x.rb +103 -48
  16. data/lib/calabash-cucumber/keyboard_helpers.rb +253 -144
  17. data/lib/calabash-cucumber/keychain_helpers.rb +46 -32
  18. data/lib/calabash-cucumber/launch/simulator_helper.rb +13 -12
  19. data/lib/calabash-cucumber/launch/simulator_launcher.rb +111 -78
  20. data/lib/calabash-cucumber/launcher.rb +265 -25
  21. data/lib/calabash-cucumber/map.rb +24 -22
  22. data/lib/calabash-cucumber/operations.rb +4 -160
  23. data/lib/calabash-cucumber/playback_helpers.rb +26 -0
  24. data/lib/calabash-cucumber/query_helpers.rb +12 -0
  25. data/lib/calabash-cucumber/rotation_helpers.rb +64 -8
  26. data/lib/calabash-cucumber/status_bar_helpers.rb +40 -3
  27. data/lib/calabash-cucumber/tests_helpers.rb +43 -14
  28. data/lib/calabash-cucumber/uia.rb +93 -9
  29. data/lib/calabash-cucumber/utils/logging.rb +30 -16
  30. data/lib/calabash-cucumber/utils/plist_buddy.rb +18 -19
  31. data/lib/calabash-cucumber/utils/simulator_accessibility.rb +41 -30
  32. data/lib/calabash-cucumber/utils/xctools.rb +31 -21
  33. data/lib/calabash-cucumber/version.rb +98 -2
  34. data/lib/calabash-cucumber/wait_helpers.rb +257 -77
  35. data/staticlib/calabash.framework.zip +0 -0
  36. metadata +64 -231
  37. data/.gitignore +0 -17
  38. data/CHANGES.txt +0 -1
  39. data/Gemfile +0 -4
  40. data/Rakefile +0 -72
  41. data/calabash-cucumber.gemspec +0 -36
  42. data/epl-v10.html +0 -261
  43. data/lib/calabash-cucumber/resources/cell_swipe_ios4_ipad.base64 +0 -51
  44. data/lib/calabash-cucumber/resources/cell_swipe_ios4_iphone.base64 +0 -51
  45. data/lib/calabash-cucumber/resources/cell_swipe_ios5_ipad.base64 +0 -74
  46. data/lib/calabash-cucumber/resources/cell_swipe_ios5_iphone.base64 +0 -74
  47. data/lib/calabash-cucumber/resources/double_tap_ios5_ipad.base64 +0 -15
  48. data/lib/calabash-cucumber/resources/double_tap_ios5_iphone.base64 +0 -15
  49. data/lib/calabash-cucumber/resources/double_tap_ios6_ipad.base64 +0 -22
  50. data/lib/calabash-cucumber/resources/double_tap_ios6_iphone.base64 +0 -22
  51. data/lib/calabash-cucumber/resources/pan_ios5_ipad.base64 +0 -199
  52. data/lib/calabash-cucumber/resources/pan_ios5_iphone.base64 +0 -199
  53. data/lib/calabash-cucumber/resources/pan_ios6_ipad.base64 +0 -206
  54. data/lib/calabash-cucumber/resources/pan_ios6_iphone.base64 +0 -206
  55. data/lib/calabash-cucumber/resources/pinch_in_ios4_ipad.base64 +0 -104
  56. data/lib/calabash-cucumber/resources/pinch_in_ios4_iphone.base64 +0 -104
  57. data/lib/calabash-cucumber/resources/pinch_in_ios5_ipad.base64 +0 -144
  58. data/lib/calabash-cucumber/resources/pinch_in_ios5_iphone.base64 +0 -144
  59. data/lib/calabash-cucumber/resources/pinch_in_ios6_ipad.base64 +0 -70
  60. data/lib/calabash-cucumber/resources/pinch_in_ios6_iphone.base64 +0 -70
  61. data/lib/calabash-cucumber/resources/pinch_out_ios5_ipad.base64 +0 -207
  62. data/lib/calabash-cucumber/resources/pinch_out_ios5_iphone.base64 +0 -207
  63. data/lib/calabash-cucumber/resources/pinch_out_ios6_ipad.base64 +0 -96
  64. data/lib/calabash-cucumber/resources/pinch_out_ios6_iphone.base64 +0 -96
  65. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_ipad.base64 +0 -2
  66. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_iphone.base64 +0 -2
  67. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_ipad.base64 +0 -2
  68. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_iphone.base64 +0 -2
  69. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_ipad.base64 +0 -2
  70. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_iphone.base64 +0 -2
  71. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_ipad.base64 +0 -2
  72. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_iphone.base64 +0 -2
  73. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_ipad.base64 +0 -2
  74. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_iphone.base64 +0 -2
  75. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_ipad.base64 +0 -2
  76. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_iphone.base64 +0 -2
  77. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_ipad.base64 +0 -2
  78. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_iphone.base64 +0 -2
  79. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_ipad.base64 +0 -2
  80. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_iphone.base64 +0 -2
  81. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_ipad.base64 +0 -2
  82. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_iphone.base64 +0 -2
  83. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_ipad.base64 +0 -2
  84. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_iphone.base64 +0 -2
  85. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_ipad.base64 +0 -2
  86. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_iphone.base64 +0 -2
  87. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_ipad.base64 +0 -2
  88. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_iphone.base64 +0 -2
  89. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_ipad.base64 +0 -2
  90. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_iphone.base64 +0 -2
  91. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_ipad.base64 +0 -2
  92. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_iphone.base64 +0 -2
  93. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_ipad.base64 +0 -2
  94. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_iphone.base64 +0 -2
  95. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_ipad.base64 +0 -2
  96. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_iphone.base64 +0 -2
  97. data/lib/calabash-cucumber/resources/swipe_down_ios5_ipad.base64 +0 -18
  98. data/lib/calabash-cucumber/resources/swipe_down_ios5_iphone.base64 +0 -31
  99. data/lib/calabash-cucumber/resources/swipe_down_ios6_ipad.base64 +0 -25
  100. data/lib/calabash-cucumber/resources/swipe_down_ios6_iphone.base64 +0 -25
  101. data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_ipad.base64 +0 -15
  102. data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_iphone.base64 +0 -15
  103. data/lib/calabash-cucumber/resources/swipe_left_ios4_ipad.base64 +0 -18
  104. data/lib/calabash-cucumber/resources/swipe_left_ios4_iphone.base64 +0 -18
  105. data/lib/calabash-cucumber/resources/swipe_left_ios5_ipad.base64 +0 -17
  106. data/lib/calabash-cucumber/resources/swipe_left_ios5_iphone.base64 +0 -34
  107. data/lib/calabash-cucumber/resources/swipe_left_ios6_ipad.base64 +0 -28
  108. data/lib/calabash-cucumber/resources/swipe_left_ios6_iphone.base64 +0 -28
  109. data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_ipad.base64 +0 -17
  110. data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_iphone.base64 +0 -17
  111. data/lib/calabash-cucumber/resources/swipe_right_ios4_ipad.base64 +0 -13
  112. data/lib/calabash-cucumber/resources/swipe_right_ios4_iphone.base64 +0 -13
  113. data/lib/calabash-cucumber/resources/swipe_right_ios5_ipad.base64 +0 -17
  114. data/lib/calabash-cucumber/resources/swipe_right_ios5_iphone.base64 +0 -17
  115. data/lib/calabash-cucumber/resources/swipe_right_ios6_ipad.base64 +0 -25
  116. data/lib/calabash-cucumber/resources/swipe_right_ios6_iphone.base64 +0 -25
  117. data/lib/calabash-cucumber/resources/swipe_up_ios5_ipad.base64 +0 -34
  118. data/lib/calabash-cucumber/resources/swipe_up_ios5_iphone.base64 +0 -28
  119. data/lib/calabash-cucumber/resources/swipe_up_ios6_ipad.base64 +0 -25
  120. data/lib/calabash-cucumber/resources/swipe_up_ios6_iphone.base64 +0 -25
  121. data/lib/calabash-cucumber/resources/touch_done_ios4_ipad.base64 +0 -7
  122. data/lib/calabash-cucumber/resources/touch_done_ios4_iphone.base64 +0 -9
  123. data/lib/calabash-cucumber/resources/touch_done_ios5_ipad.base64 +0 -7
  124. data/lib/calabash-cucumber/resources/touch_done_ios5_iphone.base64 +0 -9
  125. data/lib/calabash-cucumber/resources/touch_hold_ios5_ipad.base64 +0 -9
  126. data/lib/calabash-cucumber/resources/touch_hold_ios5_iphone.base64 +0 -9
  127. data/lib/calabash-cucumber/resources/touch_hold_ios6_ipad.base64 +0 -9
  128. data/lib/calabash-cucumber/resources/touch_hold_ios6_iphone.base64 +0 -9
  129. data/lib/calabash-cucumber/resources/touch_ios4_ipad.base64 +0 -9
  130. data/lib/calabash-cucumber/resources/touch_ios4_iphone.base64 +0 -9
  131. data/lib/calabash-cucumber/resources/touch_ios5_ipad.base64 +0 -9
  132. data/lib/calabash-cucumber/resources/touch_ios5_iphone.base64 +0 -9
  133. data/lib/calabash-cucumber/resources/touch_ios7_ipad.base64 +0 -9
  134. data/lib/calabash-cucumber/resources/touch_ios7_iphone.base64 +0 -9
  135. data/lib/calabash-cucumber/resources/wheel_down_ios4_ipad.base64 +0 -159
  136. data/lib/calabash-cucumber/resources/wheel_down_ios4_iphone.base64 +0 -159
  137. data/lib/calabash-cucumber/resources/wheel_down_ios5_ipad.base64 +0 -156
  138. data/lib/calabash-cucumber/resources/wheel_down_ios5_iphone.base64 +0 -156
  139. data/lib/calabash-cucumber/resources/wheel_up_ios4_ipad.base64 +0 -166
  140. data/lib/calabash-cucumber/resources/wheel_up_ios4_iphone.base64 +0 -166
  141. data/lib/calabash-cucumber/resources/wheel_up_ios5_ipad.base64 +0 -156
  142. data/lib/calabash-cucumber/resources/wheel_up_ios5_iphone.base64 +0 -156
  143. data/scripts/EmptyAppHack.app/Default-568h@2x.png +0 -0
  144. data/scripts/EmptyAppHack.app/Default.png +0 -0
  145. data/scripts/EmptyAppHack.app/Default@2x.png +0 -0
  146. data/scripts/EmptyAppHack.app/EmptyAppHack +0 -0
  147. data/scripts/EmptyAppHack.app/Info.plist +0 -0
  148. data/scripts/EmptyAppHack.app/PkgInfo +0 -1
  149. data/scripts/EmptyAppHack.app/en.lproj/InfoPlist.strings +0 -0
  150. data/scripts/com.example.plist +0 -0
  151. data/scripts/data/.GlobalPreferences.plist +0 -0
  152. data/scripts/reset_simulator.scpt +0 -0
  153. data/spec/bin/calabash_ios_sim_spec.rb +0 -24
  154. data/spec/launcher_spec.rb +0 -166
  155. data/spec/logging_spec.rb +0 -38
  156. data/spec/plist_buddy_spec.rb +0 -99
  157. data/spec/resources/enable-accessibility/6.1/.gitkeep +0 -0
  158. data/spec/resources/enable-accessibility/7.0.3-64/.gitkeep +0 -0
  159. data/spec/resources/enable-accessibility/7.0.3/.gitkeep +0 -0
  160. data/spec/resources/enable-accessibility/7.1-64/.gitkeep +0 -0
  161. data/spec/resources/enable-accessibility/7.1/.gitkeep +0 -0
  162. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/Default-568h@2x.png +0 -0
  163. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/Info.plist +0 -0
  164. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/LPSimpleExample-cal +0 -0
  165. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/PkgInfo +0 -1
  166. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/InfoPlist.strings +0 -0
  167. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPFirstViewController.nib +0 -0
  168. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPFirstViewController~ipad.nib +0 -0
  169. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPFourthViewController.nib +0 -0
  170. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPFourthViewController~ipad.nib +0 -0
  171. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPSecondViewController.nib +0 -0
  172. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPSecondViewController~ipad.nib +0 -0
  173. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPThirdViewController.nib +0 -0
  174. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/en.lproj/LPThirdViewController~ipad.nib +0 -0
  175. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/first.png +0 -0
  176. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/first@2x.png +0 -0
  177. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/second.png +0 -0
  178. data/spec/resources/enable-accessibility/LPSimpleExample-cal.app/second@2x.png +0 -0
  179. data/spec/resources/plist_buddy/com.example.plist +0 -0
  180. data/spec/resources/plist_buddy/com.testing.plist +0 -18
  181. data/spec/simulator_accessibility_spec.rb +0 -206
  182. data/spec/spec_helper.rb +0 -31
  183. data/spec/version_spec.rb +0 -13
  184. data/spec/xctools_spec.rb +0 -58
@@ -4,7 +4,7 @@ module Calabash
4
4
  module Cucumber
5
5
  # KeychainHelpers provide a helpers to access the iOS keychain.
6
6
  #
7
- # == Simulator Note
7
+ # ### Simulator Note
8
8
  #
9
9
  # When running on the simulator, the keychain is *not* sandboxed between
10
10
  # applications like it is on a real device. These methods will return
@@ -12,18 +12,19 @@ module Calabash
12
12
  # result in strange behavior if you aren't expecting it.
13
13
  #
14
14
  # @see http://goo.gl/JrFJMM Details about why some operations report
15
- # +FAILURE+ and what can be done on the client side mitigate
15
+ # `FAILURE` and what can be done on the client side mitigate.
16
16
  #
17
17
  # @see https://github.com/soffes/sskeychain SSKeychain
18
18
  module KeychainHelpers
19
19
 
20
20
 
21
- # sends appropriately-configured +GET+ request to the +keychain+ server
22
- # endpoint. do not call this function directly; use one of the helper
21
+ # @!visibility private
22
+ # Sends appropriately-configured `GET` request to the `keychain` server
23
+ # endpoint. Do not call this function directly; use one of the helper
23
24
  # functions provided.
24
25
  #
25
- # @see keychain_accounts
26
- # @see keychain_account_for_service
26
+ # @see #keychain_accounts
27
+ # @see #keychain_account_for_service
27
28
  # @return [Array<Hash>] contents of the iOS keychain
28
29
  # @param [Hash] options
29
30
  # @raise [RuntimeError] if http request does not report success
@@ -37,18 +38,20 @@ module Calabash
37
38
  res['results']
38
39
  end
39
40
 
40
- # asks the keychain for all of the account records
41
+ # Asks the keychain for all of the account records.
41
42
  #
42
- # The hash keys are defined by the +SSKeychain+ library.
43
+ # The hash keys are defined by the `SSKeychain` library.
43
44
  #
44
45
  # @see https://github.com/soffes/sskeychain SSKeychain
45
46
  #
46
47
  # The following keys are the most commonly useful:
47
48
  #
48
- # +svce+ #=> the service
49
- # +acct+ #=> the account (often a username)
50
- # +cdat+ #=> the creation date
51
- # +mdat+ #=> the last-modified date
49
+ # ```
50
+ # svce #=> the service
51
+ # acct #=> the account (often a username)
52
+ # cdat #=> the creation date
53
+ # mdat #=> the last-modified date
54
+ # ```
52
55
  #
53
56
  # @raise [RuntimeError] if http request does not report success
54
57
  # @return [Array<Hash>] of all account records saved in the iOS keychain.
@@ -56,43 +59,47 @@ module Calabash
56
59
  _keychain_get
57
60
  end
58
61
 
59
- # @return [Array<Hash>] of all account records saved in the iOS keychain
60
- # filtered by +service+.
62
+ # Returns an list of all account records saved in the iOS keychain
63
+ # filtered by `service`.
61
64
  #
62
- # @see keychain_accounts
65
+ # @see #keychain_accounts
63
66
  #
67
+ # @param [String] service the service whose accounts you are requesting
68
+ # @return [Array<Hash>] a list all account records filtered by `service`.
64
69
  # @raise [RuntimeError] if http request does not report success
65
70
  def keychain_accounts_for_service(service)
66
71
  _keychain_get({:service => service})
67
72
  end
68
73
 
69
- # ask the keychain for an account password
74
+ # Ask the keychain for an account password.
70
75
  #
71
- # *IMPORTANT*
72
- # On the XTC, the password cannot returned as plain text.
73
- # When using this keychain_password in your steps you can condition on
74
- # the XTC environment using +xamarin_test_cloud?+
76
+ # @note
77
+ # **IMPORTANT**
78
+ # On the XTC, the password cannot returned as plain text.
79
+ # When using this keychain_password in your steps you can condition on
80
+ # the XTC environment using `xamarin_test_cloud?`
75
81
  #
76
- # @see Calabash::Cucumber::EnvironmentHelpers
82
+ # @see Calabash::Cucumber::EnvironmentHelpers#xamarin_test_cloud?
77
83
  #
78
84
  # @raise [RuntimeError] if http request does not report success
79
- # @raise [RuntimeError] if +service+ and +account+ pair does not contain
85
+ # @raise [RuntimeError] if `service` and `account` pair does not contain
80
86
  # a password
81
87
  #
82
- # @return [String,Array<Hash>] password stored in keychain for +service+
83
- # and +account+. *NB* on the XTC this returns an Array with one Hash
88
+ # @return [String,Array<Hash>] password stored in keychain for `service`
89
+ # and `account`. *NB* on the XTC this returns an Array with one Hash.
84
90
  def keychain_password(service, account)
85
91
  _keychain_get({:service => service, :account => account}).first
86
92
  end
87
93
 
88
- # sends appropriately-configured +POST+ request to the +keychain+ server
89
- # endpoint. do not call this function directly; use one of the helper
94
+ # @!visibility private
95
+ # Sends appropriately-configured `POST` request to the `keychain` server
96
+ # endpoint. Do not call this function directly; use one of the helper
90
97
  # functions provided.
91
98
  #
92
- # @see keychain_clear
93
- # @see keychain_clear_accounts_for_service
94
- # @see keychain_delete_password
95
- # @see keychain_set_password
99
+ # @see #keychain_clear
100
+ # @see #keychain_clear_accounts_for_service
101
+ # @see #keychain_delete_password
102
+ # @see #keychain_set_password
96
103
  #
97
104
  # @return [nil]
98
105
  # @raise [RuntimeError] if http request does not report success
@@ -118,8 +125,9 @@ module Calabash
118
125
  _keychain_post
119
126
  end
120
127
 
121
- # Clear all entries in the keychain restricted to a single +service+.
128
+ # Clear all entries in the keychain restricted to a single `service`.
122
129
  #
130
+ # @param [String] service filters which accounts should be cleared.
123
131
  # @return [nil]
124
132
  #
125
133
  # @raise [RuntimeError] if http request does not report success
@@ -127,9 +135,12 @@ module Calabash
127
135
  _keychain_post({:service => service})
128
136
  end
129
137
 
130
- # Delete a single keychain record for the given +service+ and +account+
138
+ # Delete a single keychain record for the given `service` and `account`
131
139
  # pair.
132
140
  #
141
+ # @param [String] service filters which accounts should be cleared.
142
+ # @param [String] account filters which account to clear
143
+ #
133
144
  # @raise [RuntimeError] if http request does not report success
134
145
  def keychain_delete_password(service, account)
135
146
  _keychain_post(:service => service, :account => account)
@@ -137,6 +148,9 @@ module Calabash
137
148
 
138
149
  # Set the password for a given service and account pair.
139
150
  #
151
+ # @param [String] service which service to update
152
+ # @param [String] account which account to update
153
+ # @param [String] password which password to set
140
154
  # @return nil
141
155
  #
142
156
  # @raise [RuntimeError] if http request does not report success
@@ -3,26 +3,27 @@ require 'sim_launcher'
3
3
  module Calabash
4
4
  module Cucumber
5
5
 
6
- # this module has been replaced by Simulator Launcher
6
+ # This module has been replaced by Simulator Launcher
7
7
  #
8
- # @deprecated Use the SimulatorLauncher class instead
9
- # @since 0.9.169
8
+ # @deprecated 0.9.169 Use the SimulatorLauncher class instead.
10
9
  module SimulatorHelper
11
10
 
12
- # quits the simulator
11
+ # Quits the simulator.
13
12
  #
14
- # this has been deprecated, but it appears in legacy launch hooks
13
+ # This has been deprecated, but it appears in legacy launch hooks.
15
14
  #
16
- # use this pattern instead:
15
+ # Use this pattern instead:
17
16
  #
18
- # at_exit do
19
- # launcher = Calabash::Cucumber::Launcher.new
20
- # if launcher.simulator_target?
21
- # launcher.simulator_launcher.stop unless launcher.calabash_no_stop?
22
- # end
17
+ # ```
18
+ # at_exit do
19
+ # launcher = Calabash::Cucumber::Launcher.new
20
+ # if launcher.simulator_target?
21
+ # launcher.simulator_launcher.stop unless launcher.calabash_no_stop?
23
22
  # end
23
+ # end
24
+ # ```
24
25
  #
25
- # @deprecated use the SimulatorLauncher.new().stop instead
26
+ # @deprecated 0.9.169 replaced with SimulatorLauncher.new().stop
26
27
  def self.stop
27
28
  unless ENV['CALABASH_NO_DEPRECATION'] == '1'
28
29
  if RUBY_VERSION < '2.0'
@@ -7,50 +7,76 @@ require 'calabash-cucumber/utils/logging'
7
7
  module Calabash
8
8
  module Cucumber
9
9
 
10
- # acts as a bridge to the sim_launcher SimLauncher and SdkDetector classes
10
+ # Acts as a bridge to the sim_launcher SimLauncher and SdkDetector classes.
11
+ #
12
+ # Runtime Environmental Variables
13
+ #
14
+ # * `PROJECT_DIR` (ENV['PWD']) - the path to the .xcproject directory
15
+ # * `DEVICE_ENDPOINT` (http://localhost:37265/) - the ip:port of the
16
+ # device under test
17
+ # * `CALABASH_VERSION_PATH` (version) - the path to server version route
18
+ # * `MAX_CONNECT_RETRY` (2) the number of times retry
19
+ # establishing a connection to the server.
20
+ # * `CONNECT_TIMEOUT` (30) how long to wait for the server before timing
21
+ # out
22
+ #
11
23
  class SimulatorLauncher
12
24
  include Calabash::Cucumber::Logging
13
25
 
14
- # custom error indicating a timeout in launching and connecting to the
15
- # embedded calabash server
16
- # todo is duplicated in Launcher class - consider exceptions.rb module
26
+ # Custom error indicating a timeout in launching and connecting to the
27
+ # embedded calabash server.
28
+ # @todo This is duplicated in Launcher class - consider exceptions.rb module.
17
29
  class TimeoutErr < RuntimeError
18
30
  end
19
31
 
20
- # the file path to the default Xcode DerivedData directory
32
+ # @!visibility private
33
+ # The file path to the default Xcode DerivedData directory.
21
34
  DERIVED_DATA = File.expand_path('~/Library/Developer/Xcode/DerivedData')
22
35
 
23
- # REGEX for finding application Info.plist
36
+ # @!visibility private
37
+ # REGEX for finding application Info.plist.
24
38
  DEFAULT_DERIVED_DATA_INFO = File.expand_path("#{DERIVED_DATA}/*/info.plist")
25
39
 
26
- # if CONNECT_TIMEOUT is not set, wait this long for the app to launch
27
- # in the simulator before retrying
40
+ # @!visibility private
41
+ # If `CONNECT_TIMEOUT` is not set, wait this long for the app to launch
42
+ # in the simulator before retrying.
28
43
  DEFAULT_SIM_WAIT = 30
29
44
 
30
- # if MAX_CONNECT_RETRY is not set, try to launch the app this many times
45
+ # If `MAX_CONNECT_RETRY` is not set, try to launch the app this many times
31
46
  # in the simulator before giving up
32
47
  DEFAULT_SIM_RETRY = 2
33
48
 
34
- # an instance of Calabash::Cucumber::Device
49
+ # @!visibility private
50
+ # An instance of Calabash::Cucumber::Device.
35
51
  attr_accessor :device
36
52
 
37
- # an instance of SimLauncher::Simulator
53
+ # @!visibility private
54
+ # An instance of SimLauncher::Simulator.
38
55
  attr_accessor :simulator
39
56
 
40
- # an instance of SimLauncher::SdkDetector
57
+ # @!visibility private
58
+ # An instance of SimLauncher::SdkDetector.
41
59
  attr_accessor :sdk_detector
42
60
 
43
- # the launch args passed from Calabash::Cucumber::Launcher to the
44
- # launch and relaunch methods.
61
+ # @!visibility private
62
+ # The launch args passed from Calabash::Cucumber::Launcher to the launch
63
+ # and relaunch methods.
45
64
  attr_accessor :launch_args
46
65
 
47
- # creates a new instance an sets the :simulator and :sdk_detector attributes
66
+ # Creates a new instance an sets the :simulator and :sdk_detector attributes.
48
67
  def initialize
49
68
  @simulator = SimLauncher::Simulator.new
50
69
  @sdk_detector = SimLauncher::SdkDetector.new()
51
70
  end
52
71
 
53
- # uses heuristics to deduce the derived data directory for the project
72
+ # Stops (quits) the simulator.
73
+ def stop
74
+ self.simulator.quit_simulator
75
+ end
76
+
77
+
78
+ # @!visibility private
79
+ # Uses heuristics to deduce the derived data directory for the project
54
80
  # so the path to the app bundle (.app) can be detected.
55
81
  # @return [String] absolute path to derived data directory
56
82
  # @raise [RuntimeError] if the derived data directory cannot be found
@@ -134,21 +160,25 @@ module Calabash
134
160
  end
135
161
  end
136
162
 
137
- # returns the absolute path to the project directory
138
- # unless PROJECT_DIR is defined, returns the absolute path to the current
139
- # directory
163
+ # @!visibility private
164
+ # Returns the absolute path to the project directory.
165
+ #
166
+ # Unless `PROJECT_DIR` is defined, returns the absolute path to the current
167
+ # directory.
168
+ #
140
169
  # @return [String] absolute path to the project directory
141
- # todo migrate PROJECT_DIR to environment_helpers.rb
170
+ # @todo migrate `PROJECT_DIR` to environment_helpers.rb
142
171
  def project_dir
143
172
  File.expand_path(ENV['PROJECT_DIR'] || Dir.pwd)
144
173
  end
145
174
 
146
- # attempts to deduce the app bundle path
175
+ # @!visibility private
176
+ # Attempts to deduce the app bundle path
147
177
  # @param [String] path NEEDS DOCUMENTATION
148
178
  # @param [String] device_build_dir NEEDS DOCUMENTATION
149
- # @return [String] absolute path to app bundle (.app)
150
- # @return [nil] iff app bundle cannot be found
151
- # todo methods should not use 2 optional arguments
179
+ # @return [String] absolute path to app bundle (.app) or `nil` if the
180
+ # app bundle cannot be found.
181
+ # @todo methods should not use 2 optional arguments
152
182
  def detect_app_bundle(path=nil,device_build_dir='iPhoneSimulator')
153
183
  begin
154
184
  app_bundle_or_raise(path,device_build_dir)
@@ -157,12 +187,13 @@ module Calabash
157
187
  end
158
188
  end
159
189
 
160
- # attempts to deduce the path the to the app bundle (.app)
190
+ # @!visibility private
191
+ # Attempts to deduce the path the to the app bundle (.app).
161
192
  # @param [String] path NEEDS DOCUMENTATION
162
193
  # @param [String] device_build_dir NEEDS DOCUMENTATION
163
194
  # @return [String] absolute path to app bundle (.app)
164
195
  # @raise [RuntimeError] if app bundle (.app) cannot be found
165
- # todo methods should not use 2 optional arguments
196
+ # @todo methods should not use 2 optional arguments
166
197
  def app_bundle_or_raise(path=nil, device_build_dir='iPhoneSimulator')
167
198
  path = File.expand_path(path) if path
168
199
 
@@ -226,13 +257,15 @@ module Calabash
226
257
  bundle_path
227
258
  end
228
259
 
229
- # is this a Xamarin IDE project?
230
- # @return [Boolean] true iff the project is a Xamarin IDE project
260
+ # @!visibility private
261
+ # Is this a Xamarin IDE project?
262
+ # @return [Boolean] true if the project is a Xamarin IDE project
231
263
  def xamarin_project?
232
264
  xamarin_ios_csproj_path != nil
233
265
  end
234
266
 
235
- # path to the Xamarin IDE project
267
+ # @!visibility private
268
+ # Path to the Xamarin IDE project.
236
269
  # @return [String] absolute path to the Xamarin IDE project
237
270
  def xamarin_ios_csproj_path
238
271
  solution_path = Dir['*.sln'].first
@@ -268,20 +301,22 @@ module Calabash
268
301
 
269
302
  end
270
303
 
271
- # is this the Xamarin iOS bin directory?
272
- # @return [Boolean] true iff this is the Xamarin iOS bin directory
304
+ # @!visibility private
305
+ # Is this the Xamarin iOS bin directory?
306
+ # @return [Boolean] true if this is the Xamarin iOS bin directory
273
307
  def xamarin_ios_bin_dir?(bin_dir)
274
308
  File.directory?(bin_dir) &&
275
309
  (File.directory?(File.join(bin_dir,'iPhoneSimulator')) ||
276
310
  File.directory?(File.join(bin_dir,'iPhone')))
277
311
  end
278
312
 
279
- # attempts to deduce the path to the app bundle path (*.app) using
280
- # heuristics and checking for executables linked with the Calabash server
313
+ # @!visibility private
314
+ # Attempts to deduce the path to the app bundle path (*.app) using
315
+ # heuristics and checking for executables linked with the Calabash server.
281
316
  #
282
317
  # @param [String] device_build_dir NEEDS DOCUMENTATION
283
- # @return [String] absolute path the app bundle .app
284
- # @return [nil] iff the app bundle cannot be found
318
+ # @return [String] absolute path the app bundle .app or `nil` if the
319
+ # the app bundle cannot be found.
285
320
  def bundle_path_from_xamarin_project(device_build_dir='iPhoneSimulator')
286
321
  ios_project_path = xamarin_ios_csproj_path
287
322
  conf_glob = File.join(ios_project_path,'bin',device_build_dir,'*')
@@ -299,11 +334,12 @@ module Calabash
299
334
  Dir[File.join(bundle_path,'*.app')].first if bundle_path
300
335
  end
301
336
 
302
- # searches +d+ for a file linked with Calabash server
337
+ # @!visibility private
338
+ # Searches `d` for a file linked with Calabash server.
303
339
  # @param [String] d path to a directory
304
- # @return [Boolean] true iff there is a file that is linked with the
340
+ # @return [Boolean] true if there is a file that is linked with the
305
341
  # Calabash server
306
- # todo why are we not grep'ing for executable files? see server_version_from_bundle
342
+ # @todo why are we not grep'ing for executable files? see server_version_from_bundle
307
343
  def linked_with_calabash?(d)
308
344
  skipped_formats = ['.png', '.jpg', '.jpeg', '.plist', '.nib', '.lproj']
309
345
  dir = File.expand_path(d)
@@ -322,28 +358,30 @@ module Calabash
322
358
  false
323
359
  end
324
360
 
325
- # @return [String] the first path in +sim_dirs+ that contains a binary
326
- # linked with Calabash server
327
- # @return [nil] iff there is no path in +sim_dirs+ that contains a binary
328
- # linked with Calabash server
361
+ # !@visibility private
362
+ # Finds the preferred(?) directory.
363
+ # @return [String] The first path in `sim_dirs` that contains a binary
364
+ # linked with Calabash server. Returns `nil` if there is no path in
365
+ # `sim_dirs` that contains a binary linked with Calabash server.
329
366
  # @param [Array<String>] sim_dirs eke! why sim_dirs? why not a list of any directories?
330
- # todo find_preferred_dir is a bad name - preferred for what?
331
- # todo sim_dirs arg is a bad name - we can be iterating over any directory
367
+ # @todo find_preferred_dir is a bad name - preferred for what?
368
+ # @todo sim_dirs arg is a bad name - we can be iterating over any directory
332
369
  def find_preferred_dir(sim_dirs)
333
370
  sim_dirs.find do |d|
334
371
  linked_with_calabash?(d)
335
372
  end
336
373
  end
337
374
 
338
-
339
- # ping the version route of the calabash server embedded in the app
375
+ # !@visibility private
376
+ # Ping the version route of the calabash server embedded in the app,
340
377
  #
341
- # has the side effect of setting self.device attribute if successful
378
+ # @note
379
+ # Has the side effect of setting self.device attribute if successful.
342
380
  #
343
381
  # @return [String] returns the server status - '200' is a success
344
- # todo migrate DEVICE_ENDPOINT to environment_helpers
345
- # todo migrate CALABASH_VERSION_PATH to environment_helpers
346
- # todo this is an exact duplicate of Launcher ping method
382
+ # @todo migrate DEVICE_ENDPOINT to environment_helpers
383
+ # @todo migrate CALABASH_VERSION_PATH to environment_helpers
384
+ # @todo this is an exact duplicate of Launcher ping method
347
385
  def ping_app
348
386
  url = URI.parse(ENV['DEVICE_ENDPOINT']|| 'http://localhost:37265/')
349
387
  if full_console_logging?
@@ -374,21 +412,23 @@ module Calabash
374
412
  status
375
413
  end
376
414
 
377
- # attempts to connect to launch the app and connect to the embedded
415
+ # @!visibility private
416
+ # Attempts to connect to launch the app and connect to the embedded
378
417
  # calabash server.
379
418
  #
380
- # to change the number of times launching is attempted set MAX_CONNECT_RETRY
419
+ # @note To change the number of times launching is attempted set
420
+ # `MAX_CONNECT_RETRY`.
381
421
  #
382
- # to change the relaunch timeout set CONNECT_TIMEOUT
422
+ # @note To change the relaunch timeout set `CONNECT_TIMEOUT`.
383
423
  #
384
424
  # @param [String] app_bundle_path path to the .app that should be launched
385
425
  # @param [String] sdk 6.0.3, 6.1. if nil latest SDK will be used
386
- # @param [String] device_family {iphone | ipad}
426
+ # @param [String] device_family `{iphone | ipad}`
387
427
  # @param [Hash] args eke! not used (see todo)
388
428
  #
389
429
  # @raise [TimeoutErr] if app cannot be launched in the simulator
390
- # todo nearly a duplicate of Launcher ensure_connectivity
391
- # todo args was originally intended to be the args passed to the application @ launch
430
+ # @todo nearly a duplicate of Launcher ensure_connectivity
431
+ # @todo args was originally intended to be the args passed to the application @ launch
392
432
  def ensure_connectivity(app_bundle_path, sdk, device_family, args = nil)
393
433
  begin
394
434
  # todo should get the retry could from the args
@@ -439,12 +479,14 @@ module Calabash
439
479
  end
440
480
  end
441
481
 
442
- # launches the app
482
+ # @!visibility private
483
+ # Launches the app.
484
+ #
443
485
  # @param [String] app_bundle_path path to the .app that should be launched
444
486
  # @param [String] sdk 6.0.3, 6.1. if nil latest SDK will be used
445
- # @param [String] device_family {iphone | ipad}
446
- # @param [Hash] args eke! not used (see todo)
447
- # todo args was originally intended to be the args passed to the application @ launch
487
+ # @param [String] device_family `{iphone | ipad}`
488
+ # @param [Hash] args eke! not used
489
+ # @todo args was originally intended to be the args passed to the application @ launch
448
490
  def launch(app_bundle_path, sdk, device_family, args = nil)
449
491
  # cached but not used
450
492
  self.launch_args = args
@@ -455,15 +497,16 @@ module Calabash
455
497
  simulator
456
498
  end
457
499
 
458
- # relaunches the app at +app_path+ in the simulator using +sdk+ and +args+
500
+ # @!visibility private
501
+ # Relaunches the app in the simulator.
459
502
  #
460
503
  # @param [String] app_path the path to the .app
461
504
  # @param [String] sdk eg. 6.0.3, 6.1
462
505
  # @param [Hash] args the only option we are interested in is :device
463
506
  #
464
- # todo args was originally intended to be the args passed to the application @ launch
465
- # todo it is _very_ likely that args[:app] == app_path so we might be able
466
- # to eliminate an argument
507
+ # @todo args was originally intended to be the args passed to the application @ launch
508
+ # @todo it is _very_ likely that args[:app] == app_path so we might be able
509
+ # to eliminate an argument
467
510
  def relaunch(app_path, sdk, args)
468
511
  app_bundle_path = app_bundle_or_raise(app_path)
469
512
 
@@ -488,30 +531,21 @@ module Calabash
488
531
  ensure_connectivity(app_bundle_path, _sdk, device_family, args)
489
532
  end
490
533
 
491
- # stops (quits) the simulator
492
- def stop
493
- self.simulator.quit_simulator
494
- end
495
-
496
-
497
- # @deprecated Calabash::Cucumber::Launcher.launcher.device instance methods
498
- # @since 0.9.169
534
+ # @deprecated 0.9.169 Calabash::Cucumber::Launcher.launcher.device instance methods
499
535
  # @raise [NotImplementedError] no longer implemented
500
536
  def get_version
501
537
  _deprecated('0.9.169', 'use an instance Device class instead', :warn)
502
538
  raise(NotImplementedError, 'this method has been deprecated')
503
539
  end
504
540
 
505
- # @deprecated Calabash::Cucumber::Launcher.launcher.device instance methods
506
- # @since 0.9.169
541
+ # @deprecated 0.9.169 Calabash::Cucumber::Launcher.launcher.device instance methods
507
542
  # @raise [NotImplementedError] no longer implemented
508
543
  def ios_version
509
544
  _deprecated('0.9.169', 'use an instance Device class instead', :warn)
510
545
  raise(NotImplementedError, 'this method has been deprecated')
511
546
  end
512
547
 
513
- # @deprecated use Calabash::Cucumber::Launcher.launcher.ios_major_version
514
- # @since 0.9.169
548
+ # @deprecated 0.9.169 use Calabash::Cucumber::Launcher.launcher.ios_major_version
515
549
  # @raise [NotImplementedError] no longer implemented
516
550
  def ios_major_version
517
551
  _deprecated('0.9.169', 'use an instance Device class instead', :warn)
@@ -521,8 +555,7 @@ module Calabash
521
555
 
522
556
  # noinspection RubyUnusedLocalVariable
523
557
 
524
- # @deprecated version checking is done in Launcher
525
- # @since 0.9.169
558
+ # @deprecated 0.9.169 version checking is done in Launcher
526
559
  # @raise [NotImplementedError] no longer implemented
527
560
  def version_check(version)
528
561
  _deprecated('0.9.169', 'check is now done in Launcher', :warn)