calabash-cucumber 0.18.2 → 0.19.0.pre1

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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/bin/calabash-ios +0 -16
  3. data/bin/calabash-ios-build.rb +0 -86
  4. data/bin/calabash-ios-helpers.rb +0 -65
  5. data/bin/calabash-ios-setup.rb +5 -119
  6. data/bin/calabash-ios-sim.rb +0 -37
  7. data/bin/frank-calabash +0 -1
  8. data/doc/calabash-ios-help.txt +0 -8
  9. data/dylibs/libCalabashDyn.dylib +0 -0
  10. data/dylibs/libCalabashDynSim.dylib +0 -0
  11. data/features-skeleton/support/01_launch.rb +3 -4
  12. data/features/step_definitions/calabash_steps.rb +1 -7
  13. data/lib/calabash-cucumber.rb +1 -2
  14. data/lib/calabash-cucumber/actions/instruments_actions.rb +2 -3
  15. data/lib/calabash-cucumber/core.rb +97 -101
  16. data/lib/calabash-cucumber/device.rb +5 -118
  17. data/lib/calabash-cucumber/environment.rb +109 -5
  18. data/lib/calabash-cucumber/environment_helpers.rb +4 -66
  19. data/lib/calabash-cucumber/http/http.rb +114 -0
  20. data/lib/calabash-cucumber/http_helpers.rb +3 -1
  21. data/lib/calabash-cucumber/ipad_1x_2x.rb +5 -7
  22. data/lib/calabash-cucumber/keyboard_helpers.rb +0 -44
  23. data/lib/calabash-cucumber/launcher.rb +425 -808
  24. data/lib/calabash-cucumber/logging.rb +2 -74
  25. data/lib/calabash-cucumber/operations.rb +0 -2
  26. data/lib/calabash-cucumber/rotation_helpers.rb +2 -82
  27. data/lib/calabash-cucumber/status_bar_helpers.rb +2 -8
  28. data/lib/calabash-cucumber/store/preferences.rb +2 -1
  29. data/lib/calabash-cucumber/uia.rb +4 -9
  30. data/lib/calabash-cucumber/version.rb +2 -2
  31. data/lib/calabash-cucumber/wait_helpers.rb +0 -2
  32. data/staticlib/calabash.framework.zip +0 -0
  33. data/staticlib/libFrankCalabash.a +0 -0
  34. metadata +13 -143
  35. data/lib/calabash-cucumber/actions/playback_actions.rb +0 -109
  36. data/lib/calabash-cucumber/deprecated.rb +0 -34
  37. data/lib/calabash-cucumber/launch/simulator_helper.rb +0 -62
  38. data/lib/calabash-cucumber/launch/simulator_launcher.rb +0 -617
  39. data/lib/calabash-cucumber/playback_helpers.rb +0 -225
  40. data/lib/calabash-cucumber/resources/cell_swipe_ios4_ipad.base64 +0 -51
  41. data/lib/calabash-cucumber/resources/cell_swipe_ios4_iphone.base64 +0 -51
  42. data/lib/calabash-cucumber/resources/cell_swipe_ios5_ipad.base64 +0 -74
  43. data/lib/calabash-cucumber/resources/cell_swipe_ios5_iphone.base64 +0 -74
  44. data/lib/calabash-cucumber/resources/double_tap_ios5_ipad.base64 +0 -15
  45. data/lib/calabash-cucumber/resources/double_tap_ios5_iphone.base64 +0 -15
  46. data/lib/calabash-cucumber/resources/double_tap_ios6_ipad.base64 +0 -22
  47. data/lib/calabash-cucumber/resources/double_tap_ios6_iphone.base64 +0 -22
  48. data/lib/calabash-cucumber/resources/pan_ios5_ipad.base64 +0 -199
  49. data/lib/calabash-cucumber/resources/pan_ios5_iphone.base64 +0 -199
  50. data/lib/calabash-cucumber/resources/pan_ios6_ipad.base64 +0 -206
  51. data/lib/calabash-cucumber/resources/pan_ios6_iphone.base64 +0 -206
  52. data/lib/calabash-cucumber/resources/pinch_in_ios4_ipad.base64 +0 -104
  53. data/lib/calabash-cucumber/resources/pinch_in_ios4_iphone.base64 +0 -104
  54. data/lib/calabash-cucumber/resources/pinch_in_ios5_ipad.base64 +0 -144
  55. data/lib/calabash-cucumber/resources/pinch_in_ios5_iphone.base64 +0 -144
  56. data/lib/calabash-cucumber/resources/pinch_in_ios6_ipad.base64 +0 -70
  57. data/lib/calabash-cucumber/resources/pinch_in_ios6_iphone.base64 +0 -70
  58. data/lib/calabash-cucumber/resources/pinch_out_ios5_ipad.base64 +0 -207
  59. data/lib/calabash-cucumber/resources/pinch_out_ios5_iphone.base64 +0 -207
  60. data/lib/calabash-cucumber/resources/pinch_out_ios6_ipad.base64 +0 -96
  61. data/lib/calabash-cucumber/resources/pinch_out_ios6_iphone.base64 +0 -96
  62. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_ipad.base64 +0 -2
  63. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_iphone.base64 +0 -2
  64. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_ipad.base64 +0 -2
  65. data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_iphone.base64 +0 -2
  66. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_ipad.base64 +0 -2
  67. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_iphone.base64 +0 -2
  68. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_ipad.base64 +0 -2
  69. data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_iphone.base64 +0 -2
  70. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_ipad.base64 +0 -2
  71. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_iphone.base64 +0 -2
  72. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_ipad.base64 +0 -2
  73. data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_iphone.base64 +0 -2
  74. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_ipad.base64 +0 -2
  75. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_iphone.base64 +0 -2
  76. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_ipad.base64 +0 -2
  77. data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_iphone.base64 +0 -2
  78. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_ipad.base64 +0 -2
  79. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_iphone.base64 +0 -2
  80. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_ipad.base64 +0 -2
  81. data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_iphone.base64 +0 -2
  82. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_ipad.base64 +0 -2
  83. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_iphone.base64 +0 -2
  84. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_ipad.base64 +0 -2
  85. data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_iphone.base64 +0 -2
  86. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_ipad.base64 +0 -2
  87. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_iphone.base64 +0 -2
  88. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_ipad.base64 +0 -2
  89. data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_iphone.base64 +0 -2
  90. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_ipad.base64 +0 -2
  91. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_iphone.base64 +0 -2
  92. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_ipad.base64 +0 -2
  93. data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_iphone.base64 +0 -2
  94. data/lib/calabash-cucumber/resources/swipe_down_ios5_ipad.base64 +0 -18
  95. data/lib/calabash-cucumber/resources/swipe_down_ios5_iphone.base64 +0 -31
  96. data/lib/calabash-cucumber/resources/swipe_down_ios6_ipad.base64 +0 -25
  97. data/lib/calabash-cucumber/resources/swipe_down_ios6_iphone.base64 +0 -25
  98. data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_ipad.base64 +0 -15
  99. data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_iphone.base64 +0 -15
  100. data/lib/calabash-cucumber/resources/swipe_left_ios4_ipad.base64 +0 -18
  101. data/lib/calabash-cucumber/resources/swipe_left_ios4_iphone.base64 +0 -18
  102. data/lib/calabash-cucumber/resources/swipe_left_ios5_ipad.base64 +0 -17
  103. data/lib/calabash-cucumber/resources/swipe_left_ios5_iphone.base64 +0 -34
  104. data/lib/calabash-cucumber/resources/swipe_left_ios6_ipad.base64 +0 -28
  105. data/lib/calabash-cucumber/resources/swipe_left_ios6_iphone.base64 +0 -28
  106. data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_ipad.base64 +0 -17
  107. data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_iphone.base64 +0 -17
  108. data/lib/calabash-cucumber/resources/swipe_right_ios4_ipad.base64 +0 -13
  109. data/lib/calabash-cucumber/resources/swipe_right_ios4_iphone.base64 +0 -13
  110. data/lib/calabash-cucumber/resources/swipe_right_ios5_ipad.base64 +0 -17
  111. data/lib/calabash-cucumber/resources/swipe_right_ios5_iphone.base64 +0 -17
  112. data/lib/calabash-cucumber/resources/swipe_right_ios6_ipad.base64 +0 -25
  113. data/lib/calabash-cucumber/resources/swipe_right_ios6_iphone.base64 +0 -25
  114. data/lib/calabash-cucumber/resources/swipe_up_ios5_ipad.base64 +0 -34
  115. data/lib/calabash-cucumber/resources/swipe_up_ios5_iphone.base64 +0 -28
  116. data/lib/calabash-cucumber/resources/swipe_up_ios6_ipad.base64 +0 -25
  117. data/lib/calabash-cucumber/resources/swipe_up_ios6_iphone.base64 +0 -25
  118. data/lib/calabash-cucumber/resources/touch_done_ios4_ipad.base64 +0 -7
  119. data/lib/calabash-cucumber/resources/touch_done_ios4_iphone.base64 +0 -9
  120. data/lib/calabash-cucumber/resources/touch_done_ios5_ipad.base64 +0 -7
  121. data/lib/calabash-cucumber/resources/touch_done_ios5_iphone.base64 +0 -9
  122. data/lib/calabash-cucumber/resources/touch_hold_ios5_ipad.base64 +0 -9
  123. data/lib/calabash-cucumber/resources/touch_hold_ios5_iphone.base64 +0 -9
  124. data/lib/calabash-cucumber/resources/touch_hold_ios6_ipad.base64 +0 -9
  125. data/lib/calabash-cucumber/resources/touch_hold_ios6_iphone.base64 +0 -9
  126. data/lib/calabash-cucumber/resources/touch_ios4_ipad.base64 +0 -9
  127. data/lib/calabash-cucumber/resources/touch_ios4_iphone.base64 +0 -9
  128. data/lib/calabash-cucumber/resources/touch_ios5_ipad.base64 +0 -9
  129. data/lib/calabash-cucumber/resources/touch_ios5_iphone.base64 +0 -9
  130. data/lib/calabash-cucumber/resources/touch_ios7_ipad.base64 +0 -9
  131. data/lib/calabash-cucumber/resources/touch_ios7_iphone.base64 +0 -9
  132. data/lib/calabash-cucumber/resources/wheel_down_ios4_ipad.base64 +0 -159
  133. data/lib/calabash-cucumber/resources/wheel_down_ios4_iphone.base64 +0 -159
  134. data/lib/calabash-cucumber/resources/wheel_down_ios5_ipad.base64 +0 -156
  135. data/lib/calabash-cucumber/resources/wheel_down_ios5_iphone.base64 +0 -156
  136. data/lib/calabash-cucumber/resources/wheel_up_ios4_ipad.base64 +0 -166
  137. data/lib/calabash-cucumber/resources/wheel_up_ios4_iphone.base64 +0 -166
  138. data/lib/calabash-cucumber/resources/wheel_up_ios5_ipad.base64 +0 -156
  139. data/lib/calabash-cucumber/resources/wheel_up_ios5_iphone.base64 +0 -156
  140. data/lib/calabash-cucumber/utils/logging.rb +0 -111
  141. data/lib/calabash-cucumber/utils/plist_buddy.rb +0 -45
  142. data/lib/calabash-cucumber/utils/simulator_accessibility.rb +0 -334
  143. data/lib/calabash-cucumber/utils/xctools.rb +0 -101
  144. data/scripts/.irbrc +0 -64
  145. data/scripts/launch.rb +0 -48
Binary file
Binary file
@@ -25,7 +25,6 @@ Before do |scenario|
25
25
  }
26
26
 
27
27
  launcher.relaunch(options)
28
- launcher.calabash_notify(self)
29
28
  end
30
29
 
31
30
  After do |scenario|
@@ -33,11 +32,11 @@ After do |scenario|
33
32
  # in the UIApplicationDelegate. This is really nice for CI environments, but
34
33
  # not so good for local development.
35
34
  #
36
- # See the documentation for NO_STOP for a nice debugging workflow
35
+ # See the documentation for QUIT_APP_AFTER_SCENARIO for a nice debugging workflow
37
36
  #
38
- # http://calabashapi.xamarin.com/ios/file.ENVIRONMENT_VARIABLES.html#label-NO_STOP
37
+ # http://calabashapi.xamarin.com/ios/file.ENVIRONMENT_VARIABLES.html#label-QUIT_APP_AFTER_SCENARIO
39
38
  # http://calabashapi.xamarin.com/ios/Calabash/Cucumber/Core.html#console_attach-instance_method
40
- unless launcher.calabash_no_stop?
39
+ if launcher.quit_app_after_scenario?
41
40
  calabash_exit
42
41
  end
43
42
  end
@@ -85,7 +85,7 @@ Then /^I touch (?:the)? user location$/ do
85
85
  end
86
86
 
87
87
  Then /^I (?:touch|press) (?:done|search)$/ do
88
- done
88
+ tap_keyboard_action_key
89
89
  sleep(STEP_PAUSE)
90
90
  end
91
91
 
@@ -138,12 +138,6 @@ Then /^I use the native keyboard to enter "([^\"]*)" into (?:input|text) field n
138
138
  sleep(STEP_PAUSE)
139
139
  end
140
140
 
141
- When /^I clear "([^\"]*)"$/ do |name|
142
- msg = "When I clear <name>' will be deprecated because it is ambiguous - what should be cleared?"
143
- _deprecated('0.9.151', msg, :warn)
144
- clear_text("textField marked: '#{name}'")
145
- end
146
-
147
141
  Then /^I clear (?:input|text) field number (\d+)$/ do |index|
148
142
  index = index.to_i
149
143
  screenshot_and_raise("Index should be positive (was: #{index})") if index <= 0
@@ -4,6 +4,7 @@ require "calabash-cucumber/dot_dir"
4
4
  require "calabash-cucumber/store/preferences"
5
5
  require "calabash-cucumber/usage_tracker.rb"
6
6
  require "calabash-cucumber/dylibs"
7
+ require "calabash-cucumber/http/http"
7
8
  require 'calabash-cucumber/core'
8
9
  require 'calabash-cucumber/tests_helpers'
9
10
  require 'calabash-cucumber/keyboard_helpers'
@@ -13,8 +14,6 @@ require 'calabash-cucumber/operations'
13
14
  require 'calabash-cucumber/version'
14
15
  require 'calabash-cucumber/date_picker'
15
16
  require 'calabash-cucumber/ipad_1x_2x'
16
- require 'calabash-cucumber/utils/logging'
17
- require 'calabash-cucumber/deprecated'
18
17
 
19
18
  # stubs for documentation
20
19
 
@@ -116,17 +116,16 @@ class Calabash::Cucumber::InstrumentsActions
116
116
  def normalize_rect_for_orientation!(orientation, rect)
117
117
  orientation = orientation.to_sym
118
118
  launcher = Calabash::Cucumber::Launcher.launcher
119
+ device = launcher.device
119
120
 
120
121
  # Coordinate translations for orientation is handled in the server for iOS 8+
121
- # https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICoordinateSpace_protocol/index.html
122
- if launcher.ios_major_version.to_i >= 8
122
+ if device.ios_major_version.to_i >= 8
123
123
  return
124
124
  end
125
125
 
126
126
  # We cannot use Device#screen_dimensions here because on iPads the height
127
127
  # and width are the opposite of what we expect.
128
128
  # @todo Move all coordinate/orientation translation into the server.
129
- device = launcher.device
130
129
  if device.ipad?
131
130
  screen_size = { :width => 768, :height => 1024 }
132
131
  elsif device.iphone_4in?
@@ -5,19 +5,11 @@ require 'calabash-cucumber/uia'
5
5
  require 'calabash-cucumber/environment_helpers'
6
6
  require 'calabash-cucumber/connection'
7
7
  require 'calabash-cucumber/connection_helpers'
8
- require 'calabash-cucumber/launch/simulator_launcher'
9
8
  require 'calabash-cucumber/query_helpers'
10
- require 'calabash-cucumber/playback_helpers'
11
9
  require 'calabash-cucumber/failure_helpers'
12
10
  require 'calabash-cucumber/status_bar_helpers'
13
11
  require 'calabash-cucumber/rotation_helpers'
14
12
  require 'calabash-cucumber/map'
15
- require 'calabash-cucumber/utils/logging'
16
-
17
-
18
- # legacy support - module was deprecated 0.9.169
19
- # replaced with simulator-launcher
20
- require 'calabash-cucumber/launch/simulator_helper'
21
13
 
22
14
  module Calabash
23
15
  module Cucumber
@@ -25,7 +17,6 @@ module Calabash
25
17
  # A collection of methods that provide the core calabash behaviors.
26
18
  module Core
27
19
 
28
- include Calabash::Cucumber::Logging
29
20
  include Calabash::Cucumber::EnvironmentHelpers
30
21
  include Calabash::Cucumber::ConnectionHelpers
31
22
  include Calabash::Cucumber::QueryHelpers
@@ -34,7 +25,6 @@ module Calabash
34
25
  include Calabash::Cucumber::UIA
35
26
  include Calabash::Cucumber::StatusBarHelpers
36
27
  include Calabash::Cucumber::RotationHelpers
37
- include Calabash::Cucumber::PlaybackHelpers
38
28
 
39
29
  # @!visibility private
40
30
  # @deprecated Use Cucumber's step method (avoid this: using step is not considered best practice).
@@ -48,6 +38,46 @@ module Calabash
48
38
  end
49
39
  end
50
40
 
41
+ # Prints a blue warning message.
42
+ # @param [String] msg the message to print
43
+ # @return [void]
44
+ def calabash_warn(msg)
45
+ require "run_loop/logging"
46
+ RunLoop.log_warn(msg)
47
+ end
48
+
49
+ # Prints a green info message.
50
+ # @param [String] msg the message to print
51
+ # @return [void]
52
+ def calabash_info(msg)
53
+ require "run_loop/logging"
54
+ RunLoop.log_info2(msg)
55
+ end
56
+
57
+ # Prints a deprecated message that includes the line number.
58
+ #
59
+ # @param [String] version indicates when the feature was deprecated
60
+ # @param [String] msg deprecation message (possibly suggesting alternatives)
61
+ # @param [Symbol] type { :warn | :pending } - :pending will raise a
62
+ # cucumber pending error
63
+ # @return [void]
64
+ def deprecated(version, msg, type)
65
+ allowed = [:pending, :warn]
66
+ unless allowed.include?(type)
67
+ raise ArgumentError, "Expected type '#{type}' to be one of #{allowed.join(", ")}"
68
+ end
69
+
70
+ stack = Kernel.caller(0, 6)[1..-1].join("\n")
71
+
72
+ msg = "deprecated '#{version}' - #{msg}\n#{stack}"
73
+
74
+ if type.eql?(:pending)
75
+ pending(msg)
76
+ else
77
+ calabash_warn(msg)
78
+ end
79
+ end
80
+
51
81
  # The core method for querying into the current visible view
52
82
  # of the app under test. The query method takes as first parameter
53
83
  # a String `:uiquery`. This string must follow the query syntax
@@ -146,16 +176,6 @@ module Calabash
146
176
  Calabash::Cucumber::VERSION
147
177
  end
148
178
 
149
- # Queries all views in view hierarchy, even if not visible.
150
- # @deprecated use the 'all' or 'visible' modifier in query syntax
151
- def query_all(uiquery, *args)
152
- msg0 = "use the 'all' or 'visible' query language feature"
153
- msg1 = 'see: https://github.com/calabash/calabash-ios/wiki/05-Query-syntax'
154
- msg = "#{msg0}\n#{msg1}"
155
- _deprecated('0.9.133', msg, :warn)
156
- map("all #{uiquery}", :query, *args)
157
- end
158
-
159
179
  # Performs the `tap` gesture on the (first) view that matches
160
180
  # query `uiquery`. Note that `touch` assumes the view is visible and not animating.
161
181
  # If the view is not visible `touch` will fail. If the view is animating
@@ -746,15 +766,7 @@ details => '#{result["details"]}'
746
766
 
747
767
  raise 'Wheel index must be non negative' if wheel < 0
748
768
  raise "Only up and down supported :dir (#{dir})" unless [:up, :down].include?(dir)
749
-
750
- if ENV['OS'] == 'ios4'
751
- playback "wheel_#{dir}", :query => "#{q} pickerTable index:#{wheel}"
752
- elsif ios7?
753
- raise NotImplementedError
754
- else
755
- playback "wheel_#{dir}", :query => "#{q} pickerTableView index:#{wheel}"
756
- end
757
-
769
+ raise NotImplementedError
758
770
  end
759
771
 
760
772
  # @!visibility private
@@ -939,9 +951,9 @@ arguments => '#{arguments}'
939
951
  # @return {Calabash::Cucumber::Launcher} the launcher object in use
940
952
  def start_test_server_in_background(args={})
941
953
  stop_test_server
942
- @calabash_launcher = Calabash::Cucumber::Launcher.new()
943
- @calabash_launcher.relaunch(args)
944
- @calabash_launcher
954
+ launcher = Calabash::Cucumber::Launcher.new
955
+ launcher.relaunch(args)
956
+ launcher
945
957
  end
946
958
 
947
959
  # Helper method to easily create page object instances from a cucumber execution context.
@@ -1006,23 +1018,6 @@ arguments => '#{arguments}'
1006
1018
  tap_mark(label, *args)
1007
1019
  end
1008
1020
 
1009
- # taps a view with mark `hash_or_string`
1010
- # @deprecated In later Calabash versions we will change the semantics of `tap` to take a general query
1011
- # (instead of a 'mark' now). We're deprecating this now to prepare people for a breaking change.
1012
- # @param {String} hash_or_string mark to pass to call `tap_mark(hash_or_string)`.
1013
- # @return {Array<Hash>} array containing the serialized version of the tapped view.
1014
- def tap(hash_or_string, *args)
1015
- deprecation_msg = 'Use tap_mark instead. In later Calabash versions we will change the semantics of `tap` to take a general query.'
1016
- _deprecated('0.10.0', deprecation_msg, :warn)
1017
- if hash_or_string.is_a?(String)
1018
- tap_mark(hash_or_string, *args)
1019
- elsif hash_or_string.respond_to?(:[])
1020
- wait_tap(hash_or_string[:query], hash_or_string)
1021
- else
1022
- raise(ArgumentError, "first parameter to tap must be a string or a hash. Was: #{hash_or_string.class}, #{hash_or_string}")
1023
- end
1024
- end
1025
-
1026
1021
  # taps a view with mark `label`. Equivalent to `touch("* marked:'#{label}'")`
1027
1022
  # @param {String} label the mark of the view to tap
1028
1023
  # @param {Array} args optional additional arguments to pass to `touch`.
@@ -1038,38 +1033,48 @@ arguments => '#{arguments}'
1038
1033
  query(q).map { |e| e['html'] }
1039
1034
  end
1040
1035
 
1041
- # sets the text value of the views matched by +uiquery+ to +txt+
1036
+ # Sets the text value of the views matched by +uiquery+ to +txt+.
1042
1037
  #
1043
- # @deprecated since 0.9.145
1038
+ # You should always try to enter text "like the user would" using the
1039
+ # `keyboard_enter_text` method. There are cases, however, when this does
1040
+ # not work or is very slow.
1044
1041
  #
1045
- # we have stopped testing this method. you have been warned.
1042
+ # Please note that if you use this method, the UITextFieldDelegate and
1043
+ # UITextViewDelegate methods ***will not be called*** if you use this
1044
+ # method of text entry. This means that if you have UI elements that
1045
+ # respond to text changes, they ***will not be updated***.
1046
1046
  #
1047
- # * to enter text using the native keyboard use 'keyboard_enter_text'
1048
- # * to delete text use 'keyboard_enter_text('Delete')"
1049
- # * to clear a text field or text view:
1050
- # - RECOMMENDED: use queries and touches to replicate what the user would do
1051
- # - for text fields, implement a clear text button and touch it
1052
- # - for text views, use touches to reveal text editing popup
1053
- # see https://github.com/calabash/calabash-ios/issues/151
1054
- # - use 'clear_text'
1055
- # https://github.com/calabash/calabash-ios/wiki/03.5-Calabash-iOS-Ruby-API
1047
+ # UIAutomation's keyboard.typeString is incredibly buggy. Calabash goes
1048
+ # to great lengths to provide a stable typing interface. However, there
1049
+ # are cases where our patches cause problems. If your app crashes or
1050
+ # hangs when calling `keyboard_enter_text` there are a couple of options.
1056
1051
  #
1057
- # raises an error if the +uiquery+ finds no matching queries or finds
1052
+ # 1. Try `fast_enter_text`. This may or may not cause delegate methods
1053
+ # to be called (see the note above).
1054
+ # 2. Call `keyboard.typeString` directly. This will bypass the Calabash
1055
+ # fixes (which sometimes cause hanging and/or crashes).
1056
+ #
1057
+ # ```
1058
+ # touch(" < touch a text field or text view > ")
1059
+ # wait_for_keyboard
1060
+ # uia("UIATarget.localTarget().frontMostApp().keyboard().typeString('your string')")
1061
+ # ```
1062
+ #
1063
+ # Please be aware that keyboard.typeString is prone to errors. We
1064
+ # recommend using `keyboard_enter_text` or `fast_enter_text` whenever
1065
+ # possible.
1066
+ #
1067
+ # One valid use of this method is on WebViews. Find examples in the
1068
+ # [CalWebApp features/steps/set_text_steps.rb](https://github.com/calabash/ios-webview-test-app/blob/master/CalWebViewApp/features/steps/set_text_steps.rb).
1069
+ #
1070
+ # @param [String] uiquery used to find the text input views
1071
+ # @param [String] txt the new text
1072
+ #
1073
+ # @raise[RuntimeError] If the +uiquery+ finds no matching queries or finds
1058
1074
  # a view that does not respond to the objc selector 'setText'
1075
+ #
1076
+ # @return [Array<String>] The text fields that were modified.
1059
1077
  def set_text(uiquery, txt)
1060
- msgs = ["'set_text' is deprecated and its behavior is now unpredictable",
1061
- "* to enter text using the native keyboard use 'keyboard_enter_text'",
1062
- "* to delete text use 'keyboard_enter_text('Delete')",
1063
- '* to clear a text field or text view:',
1064
- ' - RECOMMENDED: use queries and touches to replicate what the user would do',
1065
- ' * for text fields, implement a clear text button and touch it',
1066
- ' * for text views, use touches to reveal text editing popup',
1067
- ' see https://github.com/calabash/calabash-ios/issues/151',
1068
- " - use 'clear_text'",
1069
- 'https://github.com/calabash/calabash-ios/wiki/03.5-Calabash-iOS-Ruby-API']
1070
- msg = msgs.join("\n")
1071
- _deprecated('0.9.145', msg, :warn)
1072
-
1073
1078
  text_fields_modified = map(uiquery, :setText, txt)
1074
1079
 
1075
1080
  msg = "query '#{uiquery}' returned no matching views that respond to 'setText'"
@@ -1077,30 +1082,18 @@ arguments => '#{arguments}'
1077
1082
  text_fields_modified
1078
1083
  end
1079
1084
 
1080
- # sets the text value of the views matched by +uiquery+ to <tt>''</tt>
1085
+ # Sets the text value of the views matched by +uiquery+ to <tt>''</tt>
1081
1086
  # (the empty string)
1082
1087
  #
1083
- # using this sparingly and with caution
1084
- #
1085
- #
1086
- # it is recommended that you instead do some combination of the following
1087
- #
1088
- # * use queries and touches to replicate with the user would
1089
- # - for text fields, implement a clear text button and touch it
1090
- # - for text views, use touches to reveal text editing popup
1091
- # see https://github.com/calabash/calabash-ios/issues/151
1092
- #
1093
- # https://github.com/calabash/calabash-ios/wiki/03.5-Calabash-iOS-Ruby-API
1088
+ # Using this sparingly and with caution. We recommend using queries and
1089
+ # touches to replicate what the _user would do_.
1094
1090
  #
1095
- # raises an error if the +uiquery+ finds no matching queries or finds
1096
- # a _single_ view that does not respond to the objc selector 'setText'
1091
+ # @param [String] uiquery used to find the text input views
1097
1092
  #
1098
- # IMPORTANT
1099
- # calling:
1100
- #
1101
- # > clear_text("view")
1093
+ # @raise[RuntimeError] If the +uiquery+ finds no matching queries or finds
1094
+ # a view that does not respond to the objc selector 'setText'
1102
1095
  #
1103
- # will clear the text on _all_ visible views that respond to 'setText'
1096
+ # @return [Array<String>] The text fields that were modified.
1104
1097
  def clear_text(uiquery)
1105
1098
  views_modified = map(uiquery, :setText, '')
1106
1099
  msg = "query '#{uiquery}' returned no matching views that respond to 'setText'"
@@ -1108,7 +1101,6 @@ arguments => '#{arguments}'
1108
1101
  views_modified
1109
1102
  end
1110
1103
 
1111
-
1112
1104
  # Sets user preference (NSUserDefaults) value of key `key` to `val`.
1113
1105
  # @example
1114
1106
  # set_user_pref 'foo', {lastname: "Krukow"}
@@ -1153,8 +1145,8 @@ arguments => '#{arguments}'
1153
1145
  # @!visibility private
1154
1146
  # @todo broken currently
1155
1147
  def stop_test_server
1156
- l = @calabash_launcher || Calabash::Cucumber::Launcher.launcher_if_used
1157
- l.stop if l
1148
+ launcher = Calabash::Cucumber::Launcher.launcher_if_used
1149
+ launcher.stop if launcher
1158
1150
  end
1159
1151
 
1160
1152
  # @!visibility private
@@ -1182,15 +1174,19 @@ arguments => '#{arguments}'
1182
1174
  # when starting the console.
1183
1175
  # @return [Calabash::Cucumber::Launcher,nil] the currently active
1184
1176
  # calabash launcher
1177
+ #
1178
+ # @raise [RuntimeError] This method is not available on the Xamarin Test
1179
+ # Cloud
1185
1180
  def console_attach(uia_strategy = nil)
1186
- # setting the @calabash_launcher here for backward compatibility
1187
- @calabash_launcher = launcher.attach({:uia_strategy => uia_strategy})
1181
+ if Calabash::Cucumber::Environment.xtc?
1182
+ raise "This method is not available on the Xamarin Test Cloud"
1183
+ end
1184
+ launcher.attach({:uia_strategy => uia_strategy})
1188
1185
  end
1189
1186
 
1190
1187
  # @!visibility private
1191
1188
  def launcher
1192
- # setting the @calabash_launcher here for backward compatibility
1193
- @calabash_launcher = Calabash::Cucumber::Launcher.launcher
1189
+ Calabash::Cucumber::Launcher.launcher
1194
1190
  end
1195
1191
 
1196
1192
  # @!visibility private
@@ -1,6 +1,3 @@
1
- require 'json'
2
- require 'calabash-cucumber/utils/logging'
3
-
4
1
  module Calabash
5
2
  module Cucumber
6
3
 
@@ -9,8 +6,6 @@ module Calabash
9
6
  # app that is running on the current device.
10
7
  class Device
11
8
 
12
- include Calabash::Cucumber::Logging
13
-
14
9
  # @!visibility private
15
10
  GESTALT_IPHONE = 'iPhone'
16
11
 
@@ -166,44 +161,27 @@ module Calabash
166
161
  end
167
162
  end
168
163
 
169
- # Deprecated 0.16.2 server
170
- @system = version_data['system']
171
-
172
- # 0.16.2 server adds 'device_family' key.
173
- unless @device_family
174
- # Deprecated 0.16.2 server
175
- simulator_device = version_data['simulator_device']
176
- if @system == GESTALT_SIM_SYS
177
- @device_family = simulator_device
178
- else
179
- @device_family = @system.split(/[\d,.]/).first
180
- end
181
- end
182
-
183
164
  # 0.16.2 server adds 'ios_version' key
184
165
  unless @ios_version
185
166
  @ios_version = version_data['iOS_version']
186
167
  end
187
-
188
- # Deprecated 0.13.0
189
- @iphone_4in = version_data['4inch']
190
168
  end
191
169
 
192
170
  # Is this device a simulator or physical device?
193
171
  # @return [Boolean] true if this device is a simulator
194
172
  def simulator?
195
- # Post 0.16.2 server
196
- unless simulator_details.nil? || simulator_details.empty?
197
- true
173
+ details = simulator_details
174
+ if details
175
+ details != ""
198
176
  else
199
- system == GESTALT_SIM_SYS
177
+ false
200
178
  end
201
179
  end
202
180
 
203
181
  # Is this device a device or simulator?
204
182
  # @return [Boolean] true if this device is a physical device
205
183
  def device?
206
- not simulator?
184
+ !simulator?
207
185
  end
208
186
 
209
187
  # Is this device an iPhone?
@@ -290,19 +268,6 @@ module Calabash
290
268
  ios_version_object.major == 5
291
269
  end
292
270
 
293
- # @deprecated 0.11.2 Replaced with screen_dimensions.
294
- #
295
- # The screen size of the device.
296
- #
297
- # @return [Hash] representation of the screen size
298
- def screen_size
299
- _deprecated('0.11.2', 'Replaced with screen_dimensions', :warn)
300
- return screen_dimensions if screen_dimensions
301
- return { :width => 768, :height => 1024 } if ipad?
302
- return { :width => 320, :height => 568 } if iphone_4in?
303
- { :width => 320, :height => 480 }
304
- end
305
-
306
271
  # Is the app that is running an iPhone-only app emulated on an iPad?
307
272
  #
308
273
  # @note If the app is running in emulation mode, there will be a 1x or 2x
@@ -314,84 +279,6 @@ module Calabash
314
279
  iphone_app_emulated_on_ipad
315
280
  end
316
281
 
317
- # @deprecated 0.9.169 replaced with `server_version`
318
- #
319
- # @see #server_version
320
- #
321
- # The version of the embedded Calabash server running in the app under
322
- # test on this device.
323
- # @see #server_version
324
- # @return [String] the version of the embedded Calabash server
325
- def framework_version
326
- _deprecated('0.9.169', "use 'server_version', instead", :warn)
327
- @server_version
328
- end
329
-
330
- # @deprecated 0.10.0 no replacement
331
- def udid
332
- _deprecated('0.10.0', 'no replacement', :warn)
333
- @udid
334
- end
335
-
336
- # @deprecated 0.10.0 no replacement
337
- def udid=(value)
338
- _deprecated('0.10.0', 'no replacement', :warn)
339
- @udid = value
340
- end
341
-
342
- # @deprecated 0.9.168 replaced with iphone_4in?
343
- #
344
- # @see #iphone_4in?
345
- #
346
- # Is this device an iPhone 5?
347
- # @note Deprecated because the iPhone 5S reports as an iPhone6,*.
348
- # @return [Boolean] true if this device is an iPhone 5
349
- def iphone_5?
350
- _deprecated('0.9.168', "use 'iphone_4in?' instead", :warn)
351
- iphone_4in?
352
- end
353
-
354
- # @deprecated 0.13.1 - Call `iphone_4in?` instead.
355
- #
356
- # @see #iphone_4in?
357
- #
358
- # @note Deprecated after introducing new `form_factor` behavior.
359
- # @return [Boolean] true if this device is an iPhone 5 or 5s
360
- def iphone_4in
361
- _deprecated('0.13.1', "use 'iphone_4in?' instead", :warn)
362
- @iphone_4in
363
- end
364
-
365
- # @deprecated 0.16.2 No replacement.
366
- #
367
- # @example
368
- # # simulator
369
- # i386
370
- # x86_64
371
- #
372
- # @example
373
- # # examples from physical devices
374
- # iPhone7,1
375
- # iPhone5,2
376
- #
377
- # @attribute [r] system
378
- # @return [String] The model of this device.
379
- # this device.
380
- attr_reader :system
381
-
382
- # @deprecated 0.13.1 no replacement
383
- #
384
- # Indicates whether or not this device has a 4in screen.
385
- # @attribute [r] iphone_4in
386
- # @return [Boolean] `true` if this device has a 4in screen.
387
- attr_reader :iphone_4in
388
-
389
- # @deprecated 0.10.0 no replacement
390
- #
391
- # @!attribute [rw] udid
392
- # @return [String] The udid of this device.
393
- attr_accessor :udid
394
-
395
282
  private
396
283
 
397
284
  # @!visibility private