calabash-cucumber 0.10.0.pre1 → 0.10.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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)