calabash 2.0.0.pre11 → 2.0.0.prelegacy
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -5
- data/bin/calabash +4 -3
- data/lib/calabash/android/adb.rb +37 -34
- data/lib/calabash/android/application.rb +1 -1
- data/lib/calabash/android/build/builder.rb +1 -1
- data/lib/calabash/android/build/java_keystore.rb +1 -1
- data/lib/calabash/android/build/resigner.rb +1 -1
- data/lib/calabash/android/device.rb +46 -204
- data/lib/calabash/android/environment.rb +1 -14
- data/lib/calabash/android/gestures.rb +22 -6
- data/lib/calabash/android/interactions.rb +17 -14
- data/lib/calabash/android/legacy.rb +141 -4
- data/lib/calabash/android/lib/.irbrc +1 -9
- data/lib/calabash/android/lib/AndroidManifest.xml +2 -23
- data/lib/calabash/android/lib/TestServer.apk +0 -0
- data/lib/calabash/android/life_cycle.rb +3 -3
- data/lib/calabash/android/orientation.rb +8 -8
- data/lib/calabash/android/physical_buttons.rb +16 -19
- data/lib/calabash/android/server.rb +1 -6
- data/lib/calabash/android/text.rb +12 -12
- data/lib/calabash/android.rb +26 -92
- data/lib/calabash/application.rb +0 -3
- data/lib/calabash/cli/generate.rb +18 -8
- data/lib/calabash/cli/helpers.rb +9 -4
- data/lib/calabash/cli/run.rb +1 -1
- data/lib/calabash/console_helpers.rb +11 -179
- data/lib/calabash/device.rb +19 -4
- data/lib/calabash/gestures.rb +198 -292
- data/lib/calabash/http/retriable_client.rb +3 -18
- data/lib/calabash/http.rb +0 -1
- data/lib/calabash/interactions.rb +40 -3
- data/lib/calabash/ios/conditions.rb +1 -1
- data/lib/calabash/ios/console_helpers.rb +2 -2
- data/lib/calabash/ios/date_picker.rb +8 -10
- data/lib/calabash/ios/device/device_implementation.rb +21 -9
- data/lib/calabash/ios/device/gestures_mixin.rb +55 -53
- data/lib/calabash/ios/device/keyboard_mixin.rb +0 -21
- data/lib/calabash/ios/device/rotation_mixin.rb +65 -3
- data/lib/calabash/ios/device/text_mixin.rb +21 -0
- data/lib/calabash/ios/device.rb +1 -0
- data/lib/calabash/ios/gestures.rb +90 -24
- data/lib/calabash/ios/interactions.rb +6 -1
- data/lib/calabash/ios/lib/.irbrc +2 -9
- data/lib/calabash/ios/orientation.rb +8 -8
- data/lib/calabash/ios/runtime.rb +14 -14
- data/lib/calabash/ios/scroll.rb +17 -25
- data/lib/calabash/ios/slider.rb +18 -11
- data/lib/calabash/ios/text.rb +74 -20
- data/lib/calabash/ios/uia.rb +1 -1
- data/lib/calabash/ios.rb +16 -77
- data/lib/calabash/legacy.rb +6 -9
- data/lib/calabash/lib/skeleton/{Gemfile.skeleton → Gemfile} +0 -0
- data/lib/calabash/lib/skeleton/config/{cucumber.yml.skeleton → cucumber.yml} +0 -0
- data/lib/calabash/lib/skeleton/features/{sample.feature.skeleton → sample.feature} +0 -0
- data/lib/calabash/lib/skeleton/features/step_definitions/{sample_steps.rb.skeleton → calabash_steps.rb} +8 -8
- data/lib/calabash/lib/skeleton/features/support/{dry_run.rb.skeleton → dry_run.rb} +5 -2
- data/lib/calabash/lib/skeleton/features/support/{env.rb.skeleton → env.rb} +8 -2
- data/lib/calabash/lib/skeleton/features/support/hooks.rb +83 -0
- data/lib/calabash/life_cycle.rb +8 -16
- data/lib/calabash/location.rb +15 -14
- data/lib/calabash/orientation.rb +8 -8
- data/lib/calabash/page.rb +4 -1
- data/lib/calabash/screenshot.rb +3 -3
- data/lib/calabash/text.rb +19 -31
- data/lib/calabash/utility.rb +8 -41
- data/lib/calabash/version.rb +1 -1
- data/lib/calabash/wait.rb +192 -177
- data/lib/calabash.rb +10 -53
- metadata +32 -43
- data/lib/calabash/android/device/helper_application.rb +0 -95
- data/lib/calabash/android/lib/HelperApplication.apk +0 -0
- data/lib/calabash/android/lib/HelperApplicationTestServer.apk +0 -0
- data/lib/calabash/android/web.rb +0 -12
- data/lib/calabash/http/forwarding_client.rb +0 -23
- data/lib/calabash/internal.rb +0 -48
- data/lib/calabash/ios/automator/automator.rb +0 -217
- data/lib/calabash/ios/automator/coordinates.rb +0 -37
- data/lib/calabash/ios/automator/device_agent.rb +0 -379
- data/lib/calabash/ios/automator.rb +0 -9
- data/lib/calabash/ios/legacy.rb +0 -6
- data/lib/calabash/ios/web.rb +0 -10
- data/lib/calabash/lib/skeleton/features/support/hooks.rb.skeleton +0 -34
- data/lib/calabash/retry.rb +0 -33
- data/lib/calabash/stubs.rb +0 -21
- 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(
|
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
|
-
|
17
|
+
query("*").map{|e| e['class']}.uniq
|
96
18
|
end
|
97
19
|
|
98
20
|
# List the visible element ids.
|
99
21
|
def ids
|
100
|
-
|
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
|
174
|
-
puts Color.cyan('>
|
175
|
-
puts Color.cyan('>
|
176
|
-
puts Color.cyan(">
|
177
|
-
puts Color.cyan('>
|
178
|
-
puts Color.cyan('>
|
179
|
-
puts Color.cyan('>
|
180
|
-
puts Color.cyan('>
|
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
|
data/lib/calabash/device.rb
CHANGED
@@ -5,7 +5,7 @@ module Calabash
|
|
5
5
|
include Utility
|
6
6
|
|
7
7
|
# @!visibility private
|
8
|
-
@@default
|
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
|
-
|
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
|
-
|
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
|
242
|
+
def enter_text(text)
|
228
243
|
abstract_method!
|
229
244
|
end
|
230
245
|
|