calabash-cucumber 0.18.2 → 0.19.0.pre1

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