calabash 1.9.9.pre3 → 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.
- checksums.yaml +4 -4
- data/README.md +10 -33
- data/bin/calabash +45 -36
- data/lib/calabash.rb +137 -13
- data/lib/calabash/android.rb +6 -0
- data/lib/calabash/android/adb.rb +25 -1
- data/lib/calabash/android/application.rb +14 -3
- data/lib/calabash/android/build/builder.rb +16 -3
- data/lib/calabash/android/build/java_keystore.rb +10 -0
- data/lib/calabash/android/build/resigner.rb +23 -1
- data/lib/calabash/android/build/test_server.rb +2 -0
- data/lib/calabash/android/defaults.rb +1 -0
- data/lib/calabash/android/device.rb +55 -3
- data/lib/calabash/android/environment.rb +10 -0
- data/lib/calabash/android/interactions.rb +106 -3
- data/lib/calabash/android/legacy.rb +143 -0
- data/lib/calabash/android/lib/TestServer.apk +0 -0
- data/lib/calabash/android/life_cycle.rb +6 -4
- data/lib/calabash/android/physical_buttons.rb +12 -1
- data/lib/calabash/android/screenshot.rb +1 -0
- data/lib/calabash/android/scroll.rb +115 -0
- data/lib/calabash/android/server.rb +3 -1
- data/lib/calabash/android/text.rb +16 -25
- data/lib/calabash/application.rb +29 -0
- data/lib/calabash/cli/build.rb +15 -1
- data/lib/calabash/cli/console.rb +9 -5
- data/lib/calabash/cli/generate.rb +5 -0
- data/lib/calabash/cli/helpers.rb +7 -1
- data/lib/calabash/cli/resign.rb +1 -0
- data/lib/calabash/cli/run.rb +10 -6
- data/lib/calabash/cli/setup_keystore.rb +2 -0
- data/lib/calabash/color.rb +7 -0
- data/lib/calabash/console_helpers.rb +4 -2
- data/lib/calabash/defaults.rb +1 -0
- data/lib/calabash/device.rb +8 -9
- data/lib/calabash/environment.rb +5 -0
- data/lib/calabash/gestures.rb +159 -66
- data/lib/calabash/http/retriable_client.rb +3 -1
- data/lib/calabash/interactions.rb +68 -5
- data/lib/calabash/ios.rb +4 -0
- data/lib/calabash/ios/application.rb +8 -1
- data/lib/calabash/ios/conditions.rb +3 -1
- data/lib/calabash/ios/date_picker.rb +412 -0
- data/lib/calabash/ios/defaults.rb +1 -0
- data/lib/calabash/ios/device.rb +1 -0
- data/lib/calabash/ios/device/device_implementation.rb +33 -16
- data/lib/calabash/ios/device/gestures_mixin.rb +202 -48
- data/lib/calabash/ios/device/ipad_1x_2x_mixin.rb +253 -0
- data/lib/calabash/ios/device/keyboard_mixin.rb +2 -0
- data/lib/calabash/ios/device/rotation_mixin.rb +11 -8
- data/lib/calabash/ios/device/routes/condition_route_mixin.rb +1 -0
- data/lib/calabash/ios/device/routes/handle_route_mixin.rb +5 -1
- data/lib/calabash/ios/device/routes/map_route_mixin.rb +1 -0
- data/lib/calabash/ios/device/routes/response_parser.rb +1 -0
- data/lib/calabash/ios/device/routes/uia_route_mixin.rb +44 -6
- data/lib/calabash/ios/device/runtime_attributes.rb +4 -5
- data/lib/calabash/ios/device/text_mixin.rb +2 -0
- data/lib/calabash/ios/device/uia_keyboard_mixin.rb +9 -0
- data/lib/calabash/ios/device/uia_mixin.rb +1 -0
- data/lib/calabash/ios/gestures.rb +82 -8
- data/lib/calabash/ios/interactions.rb +30 -1
- data/lib/calabash/ios/orientation.rb +21 -21
- data/lib/calabash/ios/runtime.rb +154 -2
- data/lib/calabash/ios/slider.rb +70 -0
- data/lib/calabash/ios/text.rb +11 -47
- data/lib/calabash/ios/uia.rb +24 -2
- data/lib/calabash/legacy.rb +7 -0
- data/lib/calabash/lib/skeleton/config/cucumber.yml +1 -3
- data/lib/calabash/lib/skeleton/features/support/dry_run.rb +8 -0
- data/lib/calabash/lib/skeleton/features/support/env.rb +15 -1
- data/lib/calabash/life_cycle.rb +78 -32
- data/lib/calabash/location.rb +2 -1
- data/lib/calabash/orientation.rb +0 -1
- data/lib/calabash/page.rb +51 -5
- data/lib/calabash/patch.rb +1 -0
- data/lib/calabash/patch/array.rb +7 -7
- data/lib/calabash/query.rb +17 -2
- data/lib/calabash/query_result.rb +14 -0
- data/lib/calabash/screenshot.rb +28 -8
- data/lib/calabash/text.rb +105 -8
- data/lib/calabash/utility.rb +6 -6
- data/lib/calabash/version.rb +1 -1
- data/lib/calabash/wait.rb +37 -11
- metadata +14 -7
@@ -0,0 +1,70 @@
|
|
1
|
+
module Calabash
|
2
|
+
module IOS
|
3
|
+
|
4
|
+
# An interface for interacting with UISliders.
|
5
|
+
module Slider
|
6
|
+
|
7
|
+
# Sets the value of the first UISliders matched by `query` to `value`.
|
8
|
+
#
|
9
|
+
# If `query` matches a view that is not a UISlider or UISlider subclass,
|
10
|
+
# an error will be raised.
|
11
|
+
#
|
12
|
+
# An error will be raised if more than on view is matched by `query`.
|
13
|
+
#
|
14
|
+
# To avoid matching more than one UISlider (or subclass):
|
15
|
+
# * Make the query more specific: "UISlider marked:'volume'"
|
16
|
+
# * Use the index language feature: "UISlider index:0"
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# slider_set_value("UISlider marked:'office slider'", 2)
|
20
|
+
# slider_set_value("slider marked:'weather slider'", -1)
|
21
|
+
# slider_set_value("UISlider", 11)
|
22
|
+
#
|
23
|
+
# @param [String, Hash, Calabash::Query] query A query to that indicates
|
24
|
+
# in which slider to set the value.
|
25
|
+
# @param [Numeric] value The value to set the slider to. value.to_s should
|
26
|
+
# produce a String representation of a Number.
|
27
|
+
#
|
28
|
+
# @param [options] options Options to control the behavior of the gesture.
|
29
|
+
# @option options [Boolean] :animate (true) Animate the change.
|
30
|
+
# @option options [Boolean] :notify_targets (true) Simulate a UIEvent by
|
31
|
+
# calling every target/action pair defined on the UISlider matching
|
32
|
+
# `query`.
|
33
|
+
#
|
34
|
+
# @raise [RuntimeError] When `query` does not match exactly one slider.
|
35
|
+
# @raise [RuntimeError] When setting the value of the slider matched by
|
36
|
+
# `query` is not successful.
|
37
|
+
def slider_set_value(query, value, options={})
|
38
|
+
Query.ensure_valid_query(query)
|
39
|
+
|
40
|
+
default_options = {
|
41
|
+
:animate => true,
|
42
|
+
:notify_targets => true
|
43
|
+
}
|
44
|
+
|
45
|
+
merged_options = default_options.merge(options)
|
46
|
+
|
47
|
+
found_none = "Expected '#{query}' to match exactly one view, but found no matches."
|
48
|
+
query_object = Query.new(query)
|
49
|
+
wait_for(found_none) do
|
50
|
+
results = query(query_object)
|
51
|
+
if results.length > 1
|
52
|
+
message = [
|
53
|
+
"Expected '#{query}' to match exactly one view, but found '#{results.length}'",
|
54
|
+
results.join("\n")
|
55
|
+
].join("\n")
|
56
|
+
fail(message)
|
57
|
+
else
|
58
|
+
results.length == 1
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
value_str = value.to_s
|
63
|
+
|
64
|
+
args = [merged_options[:animate], merged_options[:notify_targets]]
|
65
|
+
|
66
|
+
Device.default.map_route(query, :changeSlider, value_str, *args)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/calabash/ios/text.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Calabash
|
2
2
|
module IOS
|
3
3
|
# Methods for entering text and interacting with iOS keyboards.
|
4
|
-
# @!visibility private
|
5
4
|
module Text
|
6
5
|
# @!visibility private
|
7
6
|
def _enter_text(text)
|
@@ -74,43 +73,6 @@ module Calabash
|
|
74
73
|
Device.default.split_keyboard_visible?
|
75
74
|
end
|
76
75
|
|
77
|
-
# Returns true if there is a visible keyboard.
|
78
|
-
#
|
79
|
-
# @return [Boolean] Returns true if there is a visible keyboard.
|
80
|
-
def keyboard_visible?
|
81
|
-
docked_keyboard_visible? || undocked_keyboard_visible? || split_keyboard_visible?
|
82
|
-
end
|
83
|
-
|
84
|
-
# Waits for a keyboard to appear.
|
85
|
-
#
|
86
|
-
# @see Calabash::Wait.default_options
|
87
|
-
#
|
88
|
-
# @param [Number] timeout How long to wait for the keyboard.
|
89
|
-
# @raise [Calabash::Wait::TimeoutError] Raises error if no keyboard
|
90
|
-
# appears.
|
91
|
-
def wait_for_keyboard(timeout=nil)
|
92
|
-
keyboard_timeout = keyboard_wait_timeout(timeout)
|
93
|
-
message = "Timed out after #{keyboard_timeout} seconds waiting for the keyboard to appear"
|
94
|
-
wait_for(message, timeout: keyboard_timeout) do
|
95
|
-
keyboard_visible?
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# Waits for the keyboard to disappear.
|
100
|
-
#
|
101
|
-
# @see Calabash::Wait.default_options
|
102
|
-
#
|
103
|
-
# @param [Number] timeout How log to wait for the keyboard to disappear.
|
104
|
-
# @raise [Calabash::Wait::TimeoutError] Raises error if any keyboard is
|
105
|
-
# visible after the `timeout`.
|
106
|
-
def wait_for_no_keyboard(timeout=nil)
|
107
|
-
keyboard_timeout = keyboard_wait_timeout(timeout)
|
108
|
-
message = "Timed out after #{keyboard_timeout} seconds waiting for the keyboard to disappear"
|
109
|
-
wait_for(message, timeout: keyboard_timeout) do
|
110
|
-
!keyboard_visible?
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
76
|
# Touches the keyboard action key.
|
115
77
|
#
|
116
78
|
# The action key depends on the keyboard. Some examples include:
|
@@ -128,11 +90,21 @@ module Calabash
|
|
128
90
|
# @todo Refactor uia_route to a public API call
|
129
91
|
# @todo Move this documentation to the public method
|
130
92
|
# @!visibility private
|
131
|
-
def
|
93
|
+
def _tap_keyboard_action_key(action_key)
|
94
|
+
unless action_key.nil?
|
95
|
+
raise ArgumentError,
|
96
|
+
"An iOS keyboard does not have multiple action keys"
|
97
|
+
end
|
98
|
+
|
132
99
|
char_sequence = ESCAPED_KEYBOARD_CHARACTERS[:action]
|
133
100
|
Device.default.uia_route("uia.keyboard().typeString('#{char_sequence}')")
|
134
101
|
end
|
135
102
|
|
103
|
+
# @!visibility private
|
104
|
+
def _keyboard_visible?
|
105
|
+
docked_keyboard_visible? || undocked_keyboard_visible? || split_keyboard_visible?
|
106
|
+
end
|
107
|
+
|
136
108
|
# Touches the keyboard delete key.
|
137
109
|
#
|
138
110
|
# The 'delete' key difficult to find and touch because its behavior
|
@@ -238,14 +210,6 @@ module Calabash
|
|
238
210
|
#'International' => nil,
|
239
211
|
#'More' => nil,
|
240
212
|
}
|
241
|
-
|
242
|
-
def keyboard_wait_timeout(timeout)
|
243
|
-
if timeout.nil?
|
244
|
-
Calabash::Gestures::DEFAULT_GESTURE_WAIT_TIMEOUT
|
245
|
-
else
|
246
|
-
timeout
|
247
|
-
end
|
248
|
-
end
|
249
213
|
end
|
250
214
|
end
|
251
215
|
end
|
data/lib/calabash/ios/uia.rb
CHANGED
@@ -1,22 +1,44 @@
|
|
1
1
|
module Calabash
|
2
2
|
module IOS
|
3
|
-
|
3
|
+
|
4
|
+
# Methods for interacting directly with Apple's UIAutomation API.
|
5
|
+
#
|
6
|
+
# https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html
|
7
|
+
# https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/
|
8
|
+
#
|
9
|
+
# Calabash iOS uses this API to perform gestures. It is sometimes helpful
|
10
|
+
# to drop down into this API to explore your app.
|
4
11
|
module UIA
|
5
12
|
|
6
|
-
# Evaluates `script`
|
13
|
+
# Evaluates `script` using Apples's UIAutomation API.
|
7
14
|
#
|
15
|
+
# @example
|
16
|
+
# uia("UIATarget.localTarget().shake()")
|
17
|
+
# uia("UIATarget.localTarget().frontMostApp().keyboard().buttons()['Delete']")
|
18
|
+
# uia("UIATarget.localTarget().frontMostApp().mainWindow().elements()")
|
8
19
|
def uia(script)
|
9
20
|
Device.default.evaluate_uia(script)
|
10
21
|
end
|
11
22
|
|
23
|
+
# Evaluates `script` after prefixing with "UIATarget.localTarget()"
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# uia_with_target("shake()")
|
12
27
|
def uia_with_target(script)
|
13
28
|
uia("UIATarget.localTarget().#{script}")
|
14
29
|
end
|
15
30
|
|
31
|
+
# Evaluates `script` after prefixing with
|
32
|
+
# "UIATarget.localTarget().frontMostApp()"
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
# uia_with_app("keyboard().buttons()['Delete'])
|
16
36
|
def uia_with_app(script)
|
17
37
|
uia("UIATarget.localTarget().frontMostApp().#{script}")
|
18
38
|
end
|
19
39
|
|
40
|
+
# Evaluates `script` after prefixing with
|
41
|
+
# "UIATarget.localTarget().frontMostApp().mainWindow()"
|
20
42
|
def uia_with_main_window(script)
|
21
43
|
uia("UIATarget.localTarget().frontMostApp().mainWindow().#{script}")
|
22
44
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Cucumber does not load env.rb when running a dry-run. As the pages inherit
|
2
|
+
# from Calabash::Page and assert that the scopes IOS and Android are defined,
|
3
|
+
# we should require calabash.
|
4
|
+
|
5
|
+
if ARGV.include?('--dry-run')
|
6
|
+
require 'calabash/android'
|
7
|
+
require 'calabash/ios'
|
8
|
+
end
|
@@ -1,7 +1,21 @@
|
|
1
1
|
require 'calabash'
|
2
|
+
require 'calabash/android/application'
|
3
|
+
require 'calabash/ios/application'
|
2
4
|
|
3
5
|
platform = ENV['PLATFORM']
|
4
6
|
|
7
|
+
unless platform
|
8
|
+
application = Calabash::Application.default_from_environment
|
9
|
+
|
10
|
+
if application.android_application?
|
11
|
+
platform = 'android'
|
12
|
+
elsif application.ios_application?
|
13
|
+
platform = 'ios'
|
14
|
+
else
|
15
|
+
raise "Application '#{application}' is neither an Android app or an iOS app"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
5
19
|
case platform
|
6
20
|
when 'android'
|
7
21
|
require 'calabash/android'
|
@@ -26,7 +40,7 @@ case platform
|
|
26
40
|
[
|
27
41
|
'ERROR! Unable to start the cucumber test:',
|
28
42
|
message,
|
29
|
-
"
|
43
|
+
"Run cucumber with the ENV variable 'CAL_APP', or run cucumber using $ calabash run"
|
30
44
|
]
|
31
45
|
|
32
46
|
Calabash::Logger.error(failure_messages.join("\n"))
|
data/lib/calabash/life_cycle.rb
CHANGED
@@ -1,58 +1,93 @@
|
|
1
1
|
module Calabash
|
2
|
-
|
2
|
+
|
3
|
+
# Methods for managing an app's life cycle.
|
4
|
+
#
|
5
|
+
# The life cycle of an app includes:
|
6
|
+
# * installing / uninstalling
|
7
|
+
# * stopping / starting
|
8
|
+
# * clearing the application data
|
9
|
+
# * sending the application to background and resuming it
|
3
10
|
module LifeCycle
|
4
|
-
|
5
|
-
|
11
|
+
# Start the given application (and its test-server) on the port of
|
12
|
+
# {Calabash::Defaults#default_server Calabash.default_server}.
|
13
|
+
# This method will **not** install the application specified. If no
|
14
|
+
# application is given, it will start
|
15
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
16
|
+
#
|
17
|
+
# @note This method will fail if the application (and test-server for
|
18
|
+
# Android) is not installed, or if the application installed is not the
|
19
|
+
# same as the one specified.
|
20
|
+
#
|
21
|
+
# @note On Android, if a test-server is already running on the port of
|
22
|
+
# {Calabash::Defaults#default_server Calabash.default_server} then that
|
23
|
+
# application will be shut down.
|
24
|
+
#
|
25
|
+
# @param [String, Calabash::Application] path_or_application A path to the
|
26
|
+
# application, or an instance of {Calabash::Application}.
|
27
|
+
# Defaults to
|
28
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
29
|
+
# @param [Hash] options Options for specifying the details the app start
|
30
|
+
# @option options [Hash] :activity Android-only. Specify which activity
|
31
|
+
# to start. If none is given, launch the default launchable activity.
|
32
|
+
# @option options [Hash] :extras Android-only. Specify the extras for the
|
33
|
+
# startup intent.
|
34
|
+
def start_app(path_or_application = nil, **options)
|
35
|
+
path_or_application ||= Calabash.default_application
|
6
36
|
|
7
37
|
unless path_or_application
|
8
|
-
raise 'No application given, and
|
38
|
+
raise 'No application given, and Calabash.default_application is not set'
|
9
39
|
end
|
10
40
|
|
11
|
-
Device.default.start_app(path_or_application,
|
41
|
+
Device.default.start_app(path_or_application, options.dup)
|
12
42
|
end
|
13
43
|
|
44
|
+
# Stop the app running on
|
45
|
+
# {Calabash::Defaults#default_server Calabash.default_server}
|
14
46
|
def stop_app
|
15
47
|
Device.default.stop_app
|
16
48
|
end
|
17
49
|
|
18
50
|
# Installs the given application. If the application is already installed,
|
19
51
|
# the application will be uninstalled, and installed afterwards. If no
|
20
|
-
# application is given, it will install
|
52
|
+
# application is given, it will install
|
53
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
21
54
|
#
|
22
55
|
# If the given application is an instance of
|
23
|
-
#
|
56
|
+
# {Calabash::Android::Application}, the same procedure is executed for the
|
24
57
|
# test-server of the application, if it is set.
|
25
58
|
#
|
26
59
|
# @param [String, Calabash::Application] path_or_application A path to the
|
27
|
-
# application, or an instance of
|
28
|
-
#
|
60
|
+
# application, or an instance of {Calabash::Application}.
|
61
|
+
# Defaults to
|
62
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
29
63
|
def install_app(path_or_application = nil)
|
30
|
-
path_or_application ||=
|
64
|
+
path_or_application ||= Calabash.default_application
|
31
65
|
|
32
66
|
unless path_or_application
|
33
|
-
raise 'No application given, and
|
67
|
+
raise 'No application given, and Calabash.default_application is not set'
|
34
68
|
end
|
35
69
|
|
36
70
|
Device.default.install_app(path_or_application)
|
37
71
|
end
|
38
72
|
|
39
73
|
# Installs the given application *if it is not already installed*. If no
|
40
|
-
# application is given, it will ensure `
|
74
|
+
# application is given, it will ensure `Calabash.default_application` is installed.
|
41
75
|
# If the application has changed, it will be installed using the same
|
42
|
-
# approach as
|
76
|
+
# approach as {#install_app}.
|
43
77
|
#
|
44
78
|
# If the given application is an instance of
|
45
|
-
#
|
79
|
+
# {Calabash::Android::Application}, the same procedure is executed for the
|
46
80
|
# test-server of the application, if it is set.
|
47
81
|
#
|
48
82
|
# @param [String, Calabash::Application] path_or_application A path to the
|
49
|
-
# application, or an instance of
|
50
|
-
#
|
83
|
+
# application, or an instance of {Calabash::Application}.
|
84
|
+
# Defaults to
|
85
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
51
86
|
def ensure_app_installed(path_or_application = nil)
|
52
|
-
path_or_application ||=
|
87
|
+
path_or_application ||= Calabash.default_application
|
53
88
|
|
54
89
|
unless path_or_application
|
55
|
-
raise 'No application given, and
|
90
|
+
raise 'No application given, and Calabash.default_application is not set'
|
56
91
|
end
|
57
92
|
|
58
93
|
Device.default.ensure_app_installed(path_or_application)
|
@@ -60,16 +95,17 @@ module Calabash
|
|
60
95
|
|
61
96
|
# Uninstalls the given application. Does nothing if the application is
|
62
97
|
# already uninstalled. If no application is given, it will uninstall
|
63
|
-
#
|
98
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
64
99
|
#
|
65
100
|
# @param [String, Calabash::Application] path_or_application A path to the
|
66
|
-
# application, or an instance of
|
67
|
-
#
|
101
|
+
# application, or an instance of {Calabash::Application}.
|
102
|
+
# Defaults to
|
103
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
68
104
|
def uninstall_app(path_or_application = nil)
|
69
|
-
path_or_application ||=
|
105
|
+
path_or_application ||= Calabash.default_application
|
70
106
|
|
71
107
|
unless path_or_application
|
72
|
-
raise 'No application given, and
|
108
|
+
raise 'No application given, and Calabash.default_application is not set'
|
73
109
|
end
|
74
110
|
|
75
111
|
Device.default.uninstall_app(path_or_application)
|
@@ -77,27 +113,37 @@ module Calabash
|
|
77
113
|
|
78
114
|
# Clears the contents of the given application. This is roughly equivalent to
|
79
115
|
# reinstalling the application. If no application is given, it will clear
|
80
|
-
#
|
116
|
+
# {Calabash::Defaults#default_application Calabash.default_application}.
|
81
117
|
#
|
82
118
|
# @param [String, Calabash::Application] path_or_application A path to the
|
83
|
-
# application, or an instance of
|
84
|
-
#
|
119
|
+
# application, or an instance of {Calabash::Application}.
|
120
|
+
# Defaults to
|
121
|
+
# {Calabash::Defaults#default_application Calabash.default_application}
|
85
122
|
def clear_app_data(path_or_application = nil)
|
86
|
-
path_or_application ||=
|
123
|
+
path_or_application ||= Calabash.default_application
|
87
124
|
|
88
125
|
unless path_or_application
|
89
|
-
raise 'No application given, and
|
126
|
+
raise 'No application given, and Calabash.default_application is not set'
|
90
127
|
end
|
91
128
|
|
92
129
|
Device.default.clear_app_data(path_or_application)
|
93
130
|
end
|
94
131
|
|
95
132
|
# Sends the current app to the background and resumes it after
|
96
|
-
# `for_seconds`.
|
133
|
+
# `for_seconds`.
|
134
|
+
#
|
135
|
+
# On iOS, `for_seconds` must be between 1 and 60 seconds.
|
136
|
+
#
|
137
|
+
# On iOS the _current app_ is the app under test (your app).
|
138
|
+
#
|
139
|
+
# On Android you can control the app lifecycle more granularity using
|
140
|
+
# {Calabash::Android::Interactions#go_home \#go_home} and
|
141
|
+
# {Calabash::Android::LifeCycle#resume_app \#resume_app}.
|
142
|
+
#
|
143
|
+
# @param [Numeric] for_seconds How long to keep the app to the background.
|
97
144
|
#
|
98
|
-
# On
|
99
|
-
#
|
100
|
-
# #{Calabash::Android::LifeCycle#resume_app}.
|
145
|
+
# @raise [ArgumentError] On iOS, if number of seconds is less than 1 and
|
146
|
+
# more than 60 seconds.
|
101
147
|
def send_current_app_to_background(for_seconds = 10)
|
102
148
|
_send_current_app_to_background(for_seconds)
|
103
149
|
|