calabash 2.0.0.pre11 → 2.0.0.prelegacy

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -5
  3. data/bin/calabash +4 -3
  4. data/lib/calabash/android/adb.rb +37 -34
  5. data/lib/calabash/android/application.rb +1 -1
  6. data/lib/calabash/android/build/builder.rb +1 -1
  7. data/lib/calabash/android/build/java_keystore.rb +1 -1
  8. data/lib/calabash/android/build/resigner.rb +1 -1
  9. data/lib/calabash/android/device.rb +46 -204
  10. data/lib/calabash/android/environment.rb +1 -14
  11. data/lib/calabash/android/gestures.rb +22 -6
  12. data/lib/calabash/android/interactions.rb +17 -14
  13. data/lib/calabash/android/legacy.rb +141 -4
  14. data/lib/calabash/android/lib/.irbrc +1 -9
  15. data/lib/calabash/android/lib/AndroidManifest.xml +2 -23
  16. data/lib/calabash/android/lib/TestServer.apk +0 -0
  17. data/lib/calabash/android/life_cycle.rb +3 -3
  18. data/lib/calabash/android/orientation.rb +8 -8
  19. data/lib/calabash/android/physical_buttons.rb +16 -19
  20. data/lib/calabash/android/server.rb +1 -6
  21. data/lib/calabash/android/text.rb +12 -12
  22. data/lib/calabash/android.rb +26 -92
  23. data/lib/calabash/application.rb +0 -3
  24. data/lib/calabash/cli/generate.rb +18 -8
  25. data/lib/calabash/cli/helpers.rb +9 -4
  26. data/lib/calabash/cli/run.rb +1 -1
  27. data/lib/calabash/console_helpers.rb +11 -179
  28. data/lib/calabash/device.rb +19 -4
  29. data/lib/calabash/gestures.rb +198 -292
  30. data/lib/calabash/http/retriable_client.rb +3 -18
  31. data/lib/calabash/http.rb +0 -1
  32. data/lib/calabash/interactions.rb +40 -3
  33. data/lib/calabash/ios/conditions.rb +1 -1
  34. data/lib/calabash/ios/console_helpers.rb +2 -2
  35. data/lib/calabash/ios/date_picker.rb +8 -10
  36. data/lib/calabash/ios/device/device_implementation.rb +21 -9
  37. data/lib/calabash/ios/device/gestures_mixin.rb +55 -53
  38. data/lib/calabash/ios/device/keyboard_mixin.rb +0 -21
  39. data/lib/calabash/ios/device/rotation_mixin.rb +65 -3
  40. data/lib/calabash/ios/device/text_mixin.rb +21 -0
  41. data/lib/calabash/ios/device.rb +1 -0
  42. data/lib/calabash/ios/gestures.rb +90 -24
  43. data/lib/calabash/ios/interactions.rb +6 -1
  44. data/lib/calabash/ios/lib/.irbrc +2 -9
  45. data/lib/calabash/ios/orientation.rb +8 -8
  46. data/lib/calabash/ios/runtime.rb +14 -14
  47. data/lib/calabash/ios/scroll.rb +17 -25
  48. data/lib/calabash/ios/slider.rb +18 -11
  49. data/lib/calabash/ios/text.rb +74 -20
  50. data/lib/calabash/ios/uia.rb +1 -1
  51. data/lib/calabash/ios.rb +16 -77
  52. data/lib/calabash/legacy.rb +6 -9
  53. data/lib/calabash/lib/skeleton/{Gemfile.skeleton → Gemfile} +0 -0
  54. data/lib/calabash/lib/skeleton/config/{cucumber.yml.skeleton → cucumber.yml} +0 -0
  55. data/lib/calabash/lib/skeleton/features/{sample.feature.skeleton → sample.feature} +0 -0
  56. data/lib/calabash/lib/skeleton/features/step_definitions/{sample_steps.rb.skeleton → calabash_steps.rb} +8 -8
  57. data/lib/calabash/lib/skeleton/features/support/{dry_run.rb.skeleton → dry_run.rb} +5 -2
  58. data/lib/calabash/lib/skeleton/features/support/{env.rb.skeleton → env.rb} +8 -2
  59. data/lib/calabash/lib/skeleton/features/support/hooks.rb +83 -0
  60. data/lib/calabash/life_cycle.rb +8 -16
  61. data/lib/calabash/location.rb +15 -14
  62. data/lib/calabash/orientation.rb +8 -8
  63. data/lib/calabash/page.rb +4 -1
  64. data/lib/calabash/screenshot.rb +3 -3
  65. data/lib/calabash/text.rb +19 -31
  66. data/lib/calabash/utility.rb +8 -41
  67. data/lib/calabash/version.rb +1 -1
  68. data/lib/calabash/wait.rb +192 -177
  69. data/lib/calabash.rb +10 -53
  70. metadata +32 -43
  71. data/lib/calabash/android/device/helper_application.rb +0 -95
  72. data/lib/calabash/android/lib/HelperApplication.apk +0 -0
  73. data/lib/calabash/android/lib/HelperApplicationTestServer.apk +0 -0
  74. data/lib/calabash/android/web.rb +0 -12
  75. data/lib/calabash/http/forwarding_client.rb +0 -23
  76. data/lib/calabash/internal.rb +0 -48
  77. data/lib/calabash/ios/automator/automator.rb +0 -217
  78. data/lib/calabash/ios/automator/coordinates.rb +0 -37
  79. data/lib/calabash/ios/automator/device_agent.rb +0 -379
  80. data/lib/calabash/ios/automator.rb +0 -9
  81. data/lib/calabash/ios/legacy.rb +0 -6
  82. data/lib/calabash/ios/web.rb +0 -10
  83. data/lib/calabash/lib/skeleton/features/support/hooks.rb.skeleton +0 -34
  84. data/lib/calabash/retry.rb +0 -33
  85. data/lib/calabash/stubs.rb +0 -21
  86. data/lib/calabash/web.rb +0 -44
@@ -5,99 +5,21 @@ module Calabash
5
5
  # Methods you can use in the Calabash console to help you
6
6
  # interact with your app.
7
7
  module ConsoleHelpers
8
- # Reloads all required files that have git changes
9
- def reload_git_files
10
- files_to_reload =
11
- (`cd ../../../ && git status`.lines.grep(/modified/).map{|l| l.split(" ").last.gsub('../', '')} +
12
- `cd ../../../ && git ls-files --others --exclude-standard`.lines).map(&:chomp)
13
-
14
- $LOADED_FEATURES.each do |file|
15
- files_to_reload.each do |reload_name|
16
- if file.end_with?(reload_name)
17
- puts "LOADING #{file}"
18
- load file
19
- break
20
- end
21
- end
22
- end
23
-
24
- true
25
- end
26
-
27
- # Outputs all calabash methods
28
- def cal_methods
29
- c = Class.new(BasicObject) do
30
- include Calabash
31
- end
32
-
33
- ConsoleHelpers.puts_unbound_methods(c, 'cal.')
34
- true
35
- end
36
-
37
- # Outputs a calabash method
38
- def cal_method(method)
39
- c = Class.new(BasicObject) do
40
- include Calabash
41
- end
42
-
43
- ConsoleHelpers.puts_unbound_method(c, method.to_sym, 'cal.')
44
- true
45
- end
46
-
47
- # Outputs all calabash iOS methods
48
- def cal_ios_methods
49
- c = Class.new(BasicObject) do
50
- include Calabash::IOSInternal
51
- end
52
-
53
- ConsoleHelpers.puts_unbound_methods(c, 'cal_ios.')
54
- true
55
- end
56
-
57
- # Outputs a calabash Android method
58
- def cal_ios_method(method)
59
- c = Class.new(BasicObject) do
60
- include Calabash::IOSInternal
61
- end
62
-
63
- ConsoleHelpers.puts_unbound_method(c, method.to_sym, 'cal_ios.')
64
- true
65
- end
66
-
67
- # Outputs all calabash Android methods
68
- def cal_android_methods
69
- c = Class.new(BasicObject) do
70
- include Calabash::AndroidInternal
71
- end
72
-
73
- ConsoleHelpers.puts_unbound_methods(c, 'cal_android.')
74
- true
75
- end
76
-
77
- # Outputs a calabash Android method
78
- def cal_android_method(method)
79
- c = Class.new(BasicObject) do
80
- include Calabash::AndroidInternal
81
- end
82
-
83
- ConsoleHelpers.puts_unbound_method(c, method.to_sym, 'cal_android.')
84
- true
85
- end
86
8
 
87
9
  # Outputs all visible elements as a tree.
88
10
  def tree
89
- ConsoleHelpers.dump(Calabash::Internal.with_default_device {|device| device.dump})
11
+ ConsoleHelpers.dump(Device.default.dump)
90
12
  true
91
13
  end
92
14
 
93
15
  # List the visible element classes.
94
16
  def classes
95
- cal.query("*").map{|e| e['class']}.uniq
17
+ query("*").map{|e| e['class']}.uniq
96
18
  end
97
19
 
98
20
  # List the visible element ids.
99
21
  def ids
100
- cal.query("*").map{|e| e['id']}.compact
22
+ query("*").map{|e| e['id']}.compact
101
23
  end
102
24
 
103
25
  # Copy all the commands entered in the current console session into the OS
@@ -170,31 +92,14 @@ module Calabash
170
92
  # @!visibility private
171
93
  def puts_console_details
172
94
  puts ''
173
- puts '# => Useful Console Methods <= #'
174
- puts Color.cyan('> ids => List all the visible ids.')
175
- puts Color.cyan('> classes => List all the visible classes.')
176
- puts Color.cyan("> tree => The app's visible view hierarchy.")
177
- puts Color.cyan('> copy => Copy console commands to the Clipboard.')
178
- puts Color.cyan('> clear => Clear the console.')
179
- puts Color.cyan('> verbose => Turn debug logging on.')
180
- puts Color.cyan('> quiet => Turn debug logging off.')
181
- puts Color.cyan('> cal_methods => Print all cross-platform Calabash methods.')
182
- puts Color.cyan('> cal_method(method) => Print all information about a Calabash method')
183
-
184
- if defined?(Calabash::AndroidInternal)
185
- puts ''
186
- puts 'Android specific'
187
- puts Color.cyan('> cal_android_methods => Print all Android-specific Calabash methods.')
188
- puts Color.cyan('> cal_android_method(method) => Print all information about an Android-specific Calabash method.')
189
- end
190
-
191
- if defined?(Calabash::IOSInternal)
192
- puts ''
193
- puts 'iOS specific'
194
- puts Color.cyan('> cal_ios_methods => Print all iOS-specific Calabash methods.')
195
- puts Color.cyan('> cal_ios_method(method) => Print all information about an ios-specific Calabash method.')
196
- end
197
-
95
+ puts Color.blue('# => Useful Methods <= #')
96
+ puts Color.cyan('> ids => List all the visible ids.')
97
+ puts Color.cyan('> classes => List all the visible classes.')
98
+ puts Color.cyan("> tree => The app's visible view hierarchy.")
99
+ puts Color.cyan('> copy => Copy console commands to the Clipboard.')
100
+ puts Color.cyan('> clear => Clear the console.')
101
+ puts Color.cyan('> verbose => Turn debug logging on.')
102
+ puts Color.cyan('> quiet => Turn debug logging off.')
198
103
  puts ''
199
104
  end
200
105
 
@@ -286,78 +191,5 @@ module Calabash
286
191
  def self.visible?(data)
287
192
  raise AbstractMethodError
288
193
  end
289
-
290
- # @!visibility private
291
- def self.puts_unbound_methods(clazz, prefix)
292
- (clazz.instance_methods - BasicObject.instance_methods).each do |method_sym|
293
- signature,description = method_signature(clazz.instance_method(method_sym))
294
-
295
- puts_method(signature, description, prefix)
296
- end
297
- end
298
-
299
- # @!visibility private
300
- def self.puts_unbound_method(clazz, method, prefix)
301
- signature,description = method_signature(clazz.instance_method(method), true)
302
-
303
- puts_method(signature, description, prefix)
304
- end
305
-
306
- # @!visibility private
307
- def self.puts_method(signature, description, prefix)
308
- if signature != nil
309
- puts Color.yellow(description)
310
- puts Color.blue("#{prefix}#{signature}")
311
- puts ''
312
- end
313
- end
314
-
315
- # @!visibility private
316
- def self.method_signature(method, full_description = false)
317
- file_name, line = method.source_location
318
-
319
- file = File.open(file_name, 'r')
320
-
321
- description = nil
322
- read_next_lines = false
323
-
324
- (line-1).times do
325
- line = file.gets.strip
326
-
327
- if line.start_with?('#')
328
- if line.length == 1 || line.start_with?("# @")
329
- read_next_lines = false
330
- end
331
-
332
- if description.nil?
333
- description = line[2..-1]
334
- read_next_lines = true
335
- elsif read_next_lines || full_description
336
- description = "#{description}\n#{line[2..-1]}"
337
- end
338
- else
339
- description = nil
340
- end
341
- end
342
-
343
- signature = file.gets.strip[4..-1]
344
-
345
- method_name = if signature.index('(')
346
- signature[0,signature.index('(')]
347
- else
348
- signature
349
- end
350
-
351
- # Remove alias'ed methods
352
- if method_name != method.name.to_s
353
- signature = nil
354
- end
355
-
356
- if description && description.start_with?("@!visibility private")
357
- signature = nil
358
- end
359
-
360
- [signature,description]
361
- end
362
194
  end
363
195
  end
@@ -5,7 +5,7 @@ module Calabash
5
5
  include Utility
6
6
 
7
7
  # @!visibility private
8
- @@default ||= nil
8
+ @@default = nil
9
9
 
10
10
  # @!visibility private
11
11
  def self.default
@@ -180,14 +180,29 @@ module Calabash
180
180
  # @see Calabash::Gestures#pan
181
181
  # @!visibility private
182
182
  def pan(query, from, to, options={})
183
- _pan(query, from, to, options)
183
+ Query.ensure_valid_query(query)
184
+
185
+ ensure_valid_swipe_params(from, to)
186
+
187
+ gesture_options = options.dup
188
+ gesture_options[:duration] ||= 0.5
189
+ gesture_options[:timeout] ||= Calabash::Gestures::DEFAULT_GESTURE_WAIT_TIMEOUT
190
+
191
+ _pan(query, from, to, gesture_options)
184
192
  end
185
193
 
186
194
  # Performs a `pan` between two elements.
187
195
  # @see Calabash::Gestures#pan_between
188
196
  # @!visibility private
189
197
  def pan_between(query_from, query_to, options={})
190
- _pan_between(query_from, query_to, options)
198
+ Query.ensure_valid_query(query_from)
199
+ Query.ensure_valid_query(query_to)
200
+
201
+ gesture_options = options.dup
202
+ gesture_options[:duration] ||= 1
203
+ gesture_options[:timeout] ||= Calabash::Gestures::DEFAULT_GESTURE_WAIT_TIMEOUT
204
+
205
+ _pan_between(query_from, query_to, gesture_options)
191
206
  end
192
207
 
193
208
  # Performs a `flick` on the (first) view that matches `query`.
@@ -224,7 +239,7 @@ module Calabash
224
239
  # Enter `text` into the currently focused view.
225
240
  # @see Calabash::Text#enter_text
226
241
  # @!visibility private
227
- def enter_text(text, options={})
242
+ def enter_text(text)
228
243
  abstract_method!
229
244
  end
230
245