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.
- checksums.yaml +4 -4
- data/bin/calabash-ios +0 -16
- data/bin/calabash-ios-build.rb +0 -86
- data/bin/calabash-ios-helpers.rb +0 -65
- data/bin/calabash-ios-setup.rb +5 -119
- data/bin/calabash-ios-sim.rb +0 -37
- data/bin/frank-calabash +0 -1
- data/doc/calabash-ios-help.txt +0 -8
- data/dylibs/libCalabashDyn.dylib +0 -0
- data/dylibs/libCalabashDynSim.dylib +0 -0
- data/features-skeleton/support/01_launch.rb +3 -4
- data/features/step_definitions/calabash_steps.rb +1 -7
- data/lib/calabash-cucumber.rb +1 -2
- data/lib/calabash-cucumber/actions/instruments_actions.rb +2 -3
- data/lib/calabash-cucumber/core.rb +97 -101
- data/lib/calabash-cucumber/device.rb +5 -118
- data/lib/calabash-cucumber/environment.rb +109 -5
- data/lib/calabash-cucumber/environment_helpers.rb +4 -66
- data/lib/calabash-cucumber/http/http.rb +114 -0
- data/lib/calabash-cucumber/http_helpers.rb +3 -1
- data/lib/calabash-cucumber/ipad_1x_2x.rb +5 -7
- data/lib/calabash-cucumber/keyboard_helpers.rb +0 -44
- data/lib/calabash-cucumber/launcher.rb +425 -808
- data/lib/calabash-cucumber/logging.rb +2 -74
- data/lib/calabash-cucumber/operations.rb +0 -2
- data/lib/calabash-cucumber/rotation_helpers.rb +2 -82
- data/lib/calabash-cucumber/status_bar_helpers.rb +2 -8
- data/lib/calabash-cucumber/store/preferences.rb +2 -1
- data/lib/calabash-cucumber/uia.rb +4 -9
- data/lib/calabash-cucumber/version.rb +2 -2
- data/lib/calabash-cucumber/wait_helpers.rb +0 -2
- data/staticlib/calabash.framework.zip +0 -0
- data/staticlib/libFrankCalabash.a +0 -0
- metadata +13 -143
- data/lib/calabash-cucumber/actions/playback_actions.rb +0 -109
- data/lib/calabash-cucumber/deprecated.rb +0 -34
- data/lib/calabash-cucumber/launch/simulator_helper.rb +0 -62
- data/lib/calabash-cucumber/launch/simulator_launcher.rb +0 -617
- data/lib/calabash-cucumber/playback_helpers.rb +0 -225
- data/lib/calabash-cucumber/resources/cell_swipe_ios4_ipad.base64 +0 -51
- data/lib/calabash-cucumber/resources/cell_swipe_ios4_iphone.base64 +0 -51
- data/lib/calabash-cucumber/resources/cell_swipe_ios5_ipad.base64 +0 -74
- data/lib/calabash-cucumber/resources/cell_swipe_ios5_iphone.base64 +0 -74
- data/lib/calabash-cucumber/resources/double_tap_ios5_ipad.base64 +0 -15
- data/lib/calabash-cucumber/resources/double_tap_ios5_iphone.base64 +0 -15
- data/lib/calabash-cucumber/resources/double_tap_ios6_ipad.base64 +0 -22
- data/lib/calabash-cucumber/resources/double_tap_ios6_iphone.base64 +0 -22
- data/lib/calabash-cucumber/resources/pan_ios5_ipad.base64 +0 -199
- data/lib/calabash-cucumber/resources/pan_ios5_iphone.base64 +0 -199
- data/lib/calabash-cucumber/resources/pan_ios6_ipad.base64 +0 -206
- data/lib/calabash-cucumber/resources/pan_ios6_iphone.base64 +0 -206
- data/lib/calabash-cucumber/resources/pinch_in_ios4_ipad.base64 +0 -104
- data/lib/calabash-cucumber/resources/pinch_in_ios4_iphone.base64 +0 -104
- data/lib/calabash-cucumber/resources/pinch_in_ios5_ipad.base64 +0 -144
- data/lib/calabash-cucumber/resources/pinch_in_ios5_iphone.base64 +0 -144
- data/lib/calabash-cucumber/resources/pinch_in_ios6_ipad.base64 +0 -70
- data/lib/calabash-cucumber/resources/pinch_in_ios6_iphone.base64 +0 -70
- data/lib/calabash-cucumber/resources/pinch_out_ios5_ipad.base64 +0 -207
- data/lib/calabash-cucumber/resources/pinch_out_ios5_iphone.base64 +0 -207
- data/lib/calabash-cucumber/resources/pinch_out_ios6_ipad.base64 +0 -96
- data/lib/calabash-cucumber/resources/pinch_out_ios6_iphone.base64 +0 -96
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_ipad.base64 +0 -2
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_iphone.base64 +0 -2
- data/lib/calabash-cucumber/resources/swipe_down_ios5_ipad.base64 +0 -18
- data/lib/calabash-cucumber/resources/swipe_down_ios5_iphone.base64 +0 -31
- data/lib/calabash-cucumber/resources/swipe_down_ios6_ipad.base64 +0 -25
- data/lib/calabash-cucumber/resources/swipe_down_ios6_iphone.base64 +0 -25
- data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_ipad.base64 +0 -15
- data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_iphone.base64 +0 -15
- data/lib/calabash-cucumber/resources/swipe_left_ios4_ipad.base64 +0 -18
- data/lib/calabash-cucumber/resources/swipe_left_ios4_iphone.base64 +0 -18
- data/lib/calabash-cucumber/resources/swipe_left_ios5_ipad.base64 +0 -17
- data/lib/calabash-cucumber/resources/swipe_left_ios5_iphone.base64 +0 -34
- data/lib/calabash-cucumber/resources/swipe_left_ios6_ipad.base64 +0 -28
- data/lib/calabash-cucumber/resources/swipe_left_ios6_iphone.base64 +0 -28
- data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_ipad.base64 +0 -17
- data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_iphone.base64 +0 -17
- data/lib/calabash-cucumber/resources/swipe_right_ios4_ipad.base64 +0 -13
- data/lib/calabash-cucumber/resources/swipe_right_ios4_iphone.base64 +0 -13
- data/lib/calabash-cucumber/resources/swipe_right_ios5_ipad.base64 +0 -17
- data/lib/calabash-cucumber/resources/swipe_right_ios5_iphone.base64 +0 -17
- data/lib/calabash-cucumber/resources/swipe_right_ios6_ipad.base64 +0 -25
- data/lib/calabash-cucumber/resources/swipe_right_ios6_iphone.base64 +0 -25
- data/lib/calabash-cucumber/resources/swipe_up_ios5_ipad.base64 +0 -34
- data/lib/calabash-cucumber/resources/swipe_up_ios5_iphone.base64 +0 -28
- data/lib/calabash-cucumber/resources/swipe_up_ios6_ipad.base64 +0 -25
- data/lib/calabash-cucumber/resources/swipe_up_ios6_iphone.base64 +0 -25
- data/lib/calabash-cucumber/resources/touch_done_ios4_ipad.base64 +0 -7
- data/lib/calabash-cucumber/resources/touch_done_ios4_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_done_ios5_ipad.base64 +0 -7
- data/lib/calabash-cucumber/resources/touch_done_ios5_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_hold_ios5_ipad.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_hold_ios5_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_hold_ios6_ipad.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_hold_ios6_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios4_ipad.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios4_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios5_ipad.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios5_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios7_ipad.base64 +0 -9
- data/lib/calabash-cucumber/resources/touch_ios7_iphone.base64 +0 -9
- data/lib/calabash-cucumber/resources/wheel_down_ios4_ipad.base64 +0 -159
- data/lib/calabash-cucumber/resources/wheel_down_ios4_iphone.base64 +0 -159
- data/lib/calabash-cucumber/resources/wheel_down_ios5_ipad.base64 +0 -156
- data/lib/calabash-cucumber/resources/wheel_down_ios5_iphone.base64 +0 -156
- data/lib/calabash-cucumber/resources/wheel_up_ios4_ipad.base64 +0 -166
- data/lib/calabash-cucumber/resources/wheel_up_ios4_iphone.base64 +0 -166
- data/lib/calabash-cucumber/resources/wheel_up_ios5_ipad.base64 +0 -156
- data/lib/calabash-cucumber/resources/wheel_up_ios5_iphone.base64 +0 -156
- data/lib/calabash-cucumber/utils/logging.rb +0 -111
- data/lib/calabash-cucumber/utils/plist_buddy.rb +0 -45
- data/lib/calabash-cucumber/utils/simulator_accessibility.rb +0 -334
- data/lib/calabash-cucumber/utils/xctools.rb +0 -101
- data/scripts/.irbrc +0 -64
- data/scripts/launch.rb +0 -48
@@ -1,111 +0,0 @@
|
|
1
|
-
|
2
|
-
module Calabash
|
3
|
-
module Cucumber
|
4
|
-
|
5
|
-
# Internal logging methods for the calabash-ios gem.
|
6
|
-
module Logging
|
7
|
-
|
8
|
-
# @!visibility private
|
9
|
-
# Has full console logging been enabled?
|
10
|
-
#
|
11
|
-
# The return value is controlled by the `CALABASH_FULL_CONSOLE_OUTPUT`
|
12
|
-
# environment variable.
|
13
|
-
#
|
14
|
-
# This is considered one level above debug logging - maybe we should call
|
15
|
-
# the info log level.
|
16
|
-
#
|
17
|
-
# @return [Boolean] Returns `true` if full logging has been enabled.
|
18
|
-
def full_console_logging?
|
19
|
-
ENV['CALABASH_FULL_CONSOLE_OUTPUT'] == '1'
|
20
|
-
end
|
21
|
-
|
22
|
-
# @!visibility private
|
23
|
-
# Has debug logging been enabled?
|
24
|
-
#
|
25
|
-
# The return value is controlled by the `DEBUG` environment variable.
|
26
|
-
#
|
27
|
-
# @return [Boolean] Returns `true` if debug logging has been enabled.
|
28
|
-
def debug_logging?
|
29
|
-
ENV['DEBUG'] == '1'
|
30
|
-
end
|
31
|
-
|
32
|
-
# Prints a blue warning message.
|
33
|
-
# @param [String] msg the message to print
|
34
|
-
# @return [void]
|
35
|
-
def calabash_warn(msg)
|
36
|
-
begin
|
37
|
-
warn "\033[34m\nWARN: #{msg}\033[0m"
|
38
|
-
rescue
|
39
|
-
warn "\nWARN: #{msg}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# Prints a green info message.
|
44
|
-
# @param [String] msg the message to print
|
45
|
-
# @return [void]
|
46
|
-
def calabash_info(msg)
|
47
|
-
begin
|
48
|
-
puts "\033[32m\nINFO: #{msg}\033[0m"
|
49
|
-
rescue
|
50
|
-
puts "\nINFO: #{msg}"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# @!visibility private
|
55
|
-
# Controls printing of deprecation warnings.
|
56
|
-
#
|
57
|
-
# To inhibit deprecation message set this to '1'
|
58
|
-
#
|
59
|
-
# Inhibiting deprecation messages is not recommend.
|
60
|
-
CALABASH_NO_DEPRECATION = ENV['CALABASH_NO_DEPRECATION'] || '0'
|
61
|
-
|
62
|
-
# @!visibility private
|
63
|
-
# Have deprecation warnings been turned off?
|
64
|
-
#
|
65
|
-
# The return value is controlled but the `CALABASH_NO_DEPRECATION`
|
66
|
-
# environment variable.
|
67
|
-
def no_deprecation_warnings?
|
68
|
-
ENV['CALABASH_NO_DEPRECATION'] == '1'
|
69
|
-
end
|
70
|
-
|
71
|
-
# @!visibility private
|
72
|
-
# Prints a deprecated message that includes the line number.
|
73
|
-
#
|
74
|
-
# If deprecation warns have been turned off this method does nothing.
|
75
|
-
#
|
76
|
-
# @param [String] version indicates when the feature was deprecated
|
77
|
-
# @param [String] msg deprecation message (possibly suggesting alternatives)
|
78
|
-
# @param [Symbol] type { :warn | :pending } - :pending will raise a
|
79
|
-
# cucumber pending error
|
80
|
-
# @return [void]
|
81
|
-
def _deprecated(version, msg, type)
|
82
|
-
allowed = [:pending, :warn]
|
83
|
-
unless allowed.include?(type)
|
84
|
-
raise "type '#{type}' must be on of '#{allowed}'"
|
85
|
-
end
|
86
|
-
|
87
|
-
unless no_deprecation_warnings?
|
88
|
-
|
89
|
-
if RUBY_VERSION < '2.0'
|
90
|
-
stack = Kernel.caller()[1..6].join("\n")
|
91
|
-
else
|
92
|
-
stack = Kernel.caller(0, 6)[1..-1].join("\n")
|
93
|
-
end
|
94
|
-
|
95
|
-
msg = "deprecated '#{version}' - #{msg}\n#{stack}"
|
96
|
-
|
97
|
-
if type.eql?(:pending)
|
98
|
-
pending(msg)
|
99
|
-
else
|
100
|
-
begin
|
101
|
-
warn "\033[34m\nWARN: #{msg}\033[0m"
|
102
|
-
rescue
|
103
|
-
warn "\nWARN: #{msg}"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'run_loop'
|
2
|
-
|
3
|
-
module Calabash
|
4
|
-
module Cucumber
|
5
|
-
# @!visibility private
|
6
|
-
# A module for reading and writing property list values.
|
7
|
-
module PlistBuddy
|
8
|
-
|
9
|
-
# Reads key from file and returns the result.
|
10
|
-
# @param [String] key the key to inspect (may not be nil or empty)
|
11
|
-
# @param [String] file the plist to read
|
12
|
-
# @param [Hash] opts options for controlling execution
|
13
|
-
# @option opts [Boolean] :verbose (false) controls log level
|
14
|
-
# @return [String] the value of the key
|
15
|
-
# @raise [ArgumentError] if nil or empty key
|
16
|
-
def plist_read(key, file, opts={})
|
17
|
-
RunLoop::PlistBuddy.new.plist_read(key, file, opts)
|
18
|
-
end
|
19
|
-
|
20
|
-
# Checks if the key exists in plist.
|
21
|
-
# @param [String] key the key to inspect (may not be nil or empty)
|
22
|
-
# @param [String] file the plist to read
|
23
|
-
# @param [Hash] opts options for controlling execution
|
24
|
-
# @option opts [Boolean] :verbose (false) controls log level
|
25
|
-
# @return [Boolean] true if the key exists in plist file
|
26
|
-
def plist_key_exists?(key, file, opts={})
|
27
|
-
plist_read(key, file, opts) != nil
|
28
|
-
end
|
29
|
-
|
30
|
-
# Replaces or creates the value of key in the file.
|
31
|
-
#
|
32
|
-
# @param [String] key the key to set (may not be nil or empty)
|
33
|
-
# @param [String] type the plist type (used only when adding a value)
|
34
|
-
# @param [String] value the new value
|
35
|
-
# @param [String] file the plist to read
|
36
|
-
# @param [Hash] opts options for controlling execution
|
37
|
-
# @option opts [Boolean] :verbose (false) controls log level
|
38
|
-
# @return [Boolean] true if the operation was successful
|
39
|
-
# @raise [ArgumentError] if nil or empty key
|
40
|
-
def plist_set(key, type, value, file, opts={})
|
41
|
-
RunLoop::PlistBuddy.new.plist_set(key, type, value, file, opts)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,334 +0,0 @@
|
|
1
|
-
require 'calabash-cucumber/utils/xctools'
|
2
|
-
require 'calabash-cucumber/utils/plist_buddy'
|
3
|
-
require 'calabash-cucumber/utils/logging'
|
4
|
-
require 'sim_launcher'
|
5
|
-
require 'cfpropertylist'
|
6
|
-
require 'run_loop'
|
7
|
-
|
8
|
-
module Calabash
|
9
|
-
module Cucumber
|
10
|
-
|
11
|
-
# @deprecated 0.10.0 Replaced with RunLoop::SimControl
|
12
|
-
# Public methods for common simulator tasks and private methods for
|
13
|
-
# enabling accessibility on the simulator.
|
14
|
-
module SimulatorAccessibility
|
15
|
-
|
16
|
-
include Calabash::Cucumber::XcodeTools
|
17
|
-
include Calabash::Cucumber::PlistBuddy
|
18
|
-
|
19
|
-
# Quits the iOS Simulator.
|
20
|
-
#
|
21
|
-
# ATM there can only be only simulator open at a time, so simply doing
|
22
|
-
# what the sim_launcher gem does:
|
23
|
-
#
|
24
|
-
# ```
|
25
|
-
# def quit_simulator
|
26
|
-
# `echo 'application "iPhone Simulator" quit' | osascript`
|
27
|
-
# end
|
28
|
-
# ```
|
29
|
-
#
|
30
|
-
# works. I am not sure if we will ever be able to launch more than one
|
31
|
-
# simulator, but in case we can, this method will quit the simulator
|
32
|
-
# that is indicated by `xcode-select` or `DEVELOPER_DIR`.
|
33
|
-
def quit_simulator
|
34
|
-
RunLoop::SimControl.new.quit_sim
|
35
|
-
end
|
36
|
-
|
37
|
-
# Launches the iOS Simulator indicated by `xcode-select` or `DEVELOPER_DIR`.
|
38
|
-
def launch_simulator
|
39
|
-
RunLoop::SimControl.new.launch_sim
|
40
|
-
end
|
41
|
-
|
42
|
-
# Resets the simulator content and settings. It is analogous to touching
|
43
|
-
# the menu item.
|
44
|
-
#
|
45
|
-
# It works by deleting the following directories:
|
46
|
-
#
|
47
|
-
# * ~/Library/Application Support/iPhone Simulator/Library
|
48
|
-
# * ~/Library/Application Support/iPhone Simulator/Library/<sdk>[-64]
|
49
|
-
#
|
50
|
-
# and relaunching the iOS Simulator which will recreate the Library
|
51
|
-
# directory and the latest SDK directory.
|
52
|
-
def reset_simulator_content_and_settings
|
53
|
-
quit_simulator
|
54
|
-
sim_lib_path = File.join(simulator_app_support_dir(), 'Library')
|
55
|
-
FileUtils.rm_rf(sim_lib_path)
|
56
|
-
existing_simulator_support_sdk_dirs.each do |dir|
|
57
|
-
FileUtils.rm_rf(dir)
|
58
|
-
end
|
59
|
-
|
60
|
-
launch_simulator
|
61
|
-
|
62
|
-
# this is tricky because we need to wait for the simulator to recreate
|
63
|
-
# the directories. specifically, we need the Accessibility plist to be
|
64
|
-
# exist so subsequent calabash launches will be able to enable
|
65
|
-
# accessibility.
|
66
|
-
#
|
67
|
-
# the directories take ~3.0 - ~5.0 to create.
|
68
|
-
counter = 0
|
69
|
-
loop do
|
70
|
-
break if counter == 80
|
71
|
-
dirs = existing_simulator_support_sdk_dirs
|
72
|
-
if dirs.count == 0
|
73
|
-
sleep(0.2)
|
74
|
-
else
|
75
|
-
break if dirs.all? { |dir|
|
76
|
-
plist = File.expand_path("#{dir}/Library/Preferences/com.apple.Accessibility.plist")
|
77
|
-
File.exists?(plist)
|
78
|
-
}
|
79
|
-
sleep(0.2)
|
80
|
-
end
|
81
|
-
counter = counter + 1
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# @deprecated 0.10.0 replaced with RunLoop::SimControl#enable_accessibility_on_simulators
|
86
|
-
# @!visibility private
|
87
|
-
# Enables accessibility on any existing iOS Simulator by adjusting the
|
88
|
-
# simulator's Library/Preferences/com.apple.Accessibility.plist contents.
|
89
|
-
#
|
90
|
-
# A simulator 'exists' if has an Application Support directory. for
|
91
|
-
# example, the 6.1, 7.0.3-64, and 7.1 simulators exist if the following
|
92
|
-
# directories are present:
|
93
|
-
#
|
94
|
-
# ~/Library/Application Support/iPhone Simulator/Library/6.1
|
95
|
-
# ~/Library/Application Support/iPhone Simulator/Library/7.0.3-64
|
96
|
-
# ~/Library/Application Support/iPhone Simulator/Library/7.1
|
97
|
-
#
|
98
|
-
# A simulator is 'possible' if the SDK is available in the Xcode version.
|
99
|
-
#
|
100
|
-
# This method merges (uniquely) the possible and existing SDKs.
|
101
|
-
#
|
102
|
-
# This method also hides the AXInspector.
|
103
|
-
#
|
104
|
-
# @param [Hash] opts controls the behavior of the method
|
105
|
-
# @option opts [Boolean] :verbose controls logging output
|
106
|
-
# @return [Boolean] true if enabling accessibility worked on all sdk
|
107
|
-
# directories
|
108
|
-
def enable_accessibility_on_simulators(opts={})
|
109
|
-
_deprecated('0.10.0', 'replaced with RunLoop::SimControl#enable_accessibility_on_simulators', :warn)
|
110
|
-
possible = possible_simulator_support_sdk_dirs
|
111
|
-
existing = existing_simulator_support_sdk_dirs
|
112
|
-
dirs = (possible + existing).uniq
|
113
|
-
results = dirs.map do |dir|
|
114
|
-
enable_accessibility_in_sdk_dir(dir, opts)
|
115
|
-
end
|
116
|
-
results.all? { |elm| elm }
|
117
|
-
end
|
118
|
-
|
119
|
-
@private
|
120
|
-
|
121
|
-
# @deprecated 0.10.0 no replacement
|
122
|
-
# @!visibility private
|
123
|
-
# Enables accessibility on the simulator indicated by `sim_app_support_sdk_dir.`
|
124
|
-
#
|
125
|
-
# @note This will quit the simulator.
|
126
|
-
#
|
127
|
-
# @example
|
128
|
-
# path = '/6.1'
|
129
|
-
# enable_accessibility_in_sdk_dir(path)
|
130
|
-
#
|
131
|
-
# This method also hides the AXInspector.
|
132
|
-
#
|
133
|
-
# If the Library/Preferences/com.apple.Accessibility.plist does not exist
|
134
|
-
# this method will create a Library/Preferences/com.apple.Accessibility.plist
|
135
|
-
# that (oddly) the Simulator will _not_ overwrite.
|
136
|
-
#
|
137
|
-
# @see enable_accessibility_on_simulators for the public API.
|
138
|
-
#
|
139
|
-
# @param [String] sim_app_support_sdk_dir the directory where the
|
140
|
-
# Library/Preferences/com.apple.Accessibility.plist can be found.
|
141
|
-
#
|
142
|
-
# @param [Hash] opts controls the behavior of the method
|
143
|
-
# @option opts [Boolean] :verbose controls logging output
|
144
|
-
# @return [Boolean] if the plist exists and the plist was successfully
|
145
|
-
# updated.
|
146
|
-
def enable_accessibility_in_sdk_dir(sim_app_support_sdk_dir, opts={})
|
147
|
-
_deprecated('0.10.0', 'no replacement', :warn)
|
148
|
-
default_opts = {:verbose => false}
|
149
|
-
merged = default_opts.merge(opts)
|
150
|
-
|
151
|
-
quit_simulator
|
152
|
-
|
153
|
-
verbose = merged[:verbose]
|
154
|
-
sdk = File.basename(sim_app_support_sdk_dir)
|
155
|
-
msgs = ["cannot enable accessibility for #{sdk} SDK"]
|
156
|
-
|
157
|
-
plist_path = File.expand_path("#{sim_app_support_sdk_dir}/Library/Preferences/com.apple.Accessibility.plist")
|
158
|
-
|
159
|
-
hash = accessibility_properties_hash()
|
160
|
-
|
161
|
-
if File.exist?(plist_path)
|
162
|
-
res = hash.map do |hash_key, settings|
|
163
|
-
success = plist_set(settings[:key], settings[:type], settings[:value], plist_path)
|
164
|
-
unless success
|
165
|
-
if verbose
|
166
|
-
if settings[:type] == 'bool'
|
167
|
-
value = settings[:value] ? 'YES' : 'NO'
|
168
|
-
else
|
169
|
-
value = settings[:value]
|
170
|
-
end
|
171
|
-
msgs << "could not set #{hash_key} => '#{settings[:key]}' to #{value}"
|
172
|
-
calabash_warn(msgs.join("\n"))
|
173
|
-
end
|
174
|
-
end
|
175
|
-
success
|
176
|
-
end
|
177
|
-
res.all? { |elm| elm }
|
178
|
-
else
|
179
|
-
FileUtils.mkdir_p("#{sim_app_support_sdk_dir}/Library/Preferences")
|
180
|
-
plist = CFPropertyList::List.new
|
181
|
-
data = {}
|
182
|
-
# CFPropertyList gem is super wonky
|
183
|
-
# it matches Boolean to a string type with 'true/false' values
|
184
|
-
# - stick with PlistBuddy
|
185
|
-
# hash.each do |_, settings|
|
186
|
-
# data[settings[:key]] = settings[:value]
|
187
|
-
# end
|
188
|
-
plist.value = CFPropertyList.guess(data)
|
189
|
-
plist.save(plist_path, CFPropertyList::List::FORMAT_BINARY)
|
190
|
-
enable_accessibility_in_sdk_dir(sim_app_support_sdk_dir)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
|
195
|
-
# @deprecated 0.10.0 no replacement
|
196
|
-
# @!visibility private
|
197
|
-
# A hash table of the accessibility properties that control whether or not
|
198
|
-
# accessibility is enabled and whether the AXInspector is visible.
|
199
|
-
# @return [Hash] table of accessibility properties found in the
|
200
|
-
# Library/Preferences/com.apple.Accessibility.plist
|
201
|
-
def accessibility_properties_hash
|
202
|
-
_deprecated('0.10.0', 'no replacement', :warn)
|
203
|
-
{
|
204
|
-
# this is required
|
205
|
-
:access_enabled => {:key => 'AccessibilityEnabled',
|
206
|
-
:value => 'true',
|
207
|
-
:type => 'bool'},
|
208
|
-
# i _think_ this is legacy
|
209
|
-
:app_access_enabled => {:key => 'ApplicationAccessibilityEnabled',
|
210
|
-
:value => 'true',
|
211
|
-
:type => 'bool'},
|
212
|
-
|
213
|
-
# i don't know what this does
|
214
|
-
:automation_enabled => {:key => 'AutomationEnabled',
|
215
|
-
:value => 'true',
|
216
|
-
:type => 'bool'},
|
217
|
-
|
218
|
-
# determines if the Accessibility Inspector is showing
|
219
|
-
:inspector_showing => {:key => 'AXInspectorEnabled',
|
220
|
-
:value => 'false',
|
221
|
-
:type => 'bool'},
|
222
|
-
|
223
|
-
# controls if the Accessibility Inspector is expanded or not expanded
|
224
|
-
:inspector_full_size => {:key => 'AXInspector.enabled',
|
225
|
-
:value => 'false',
|
226
|
-
:type => 'bool'},
|
227
|
-
|
228
|
-
# controls the frame of the Accessibility Inspector
|
229
|
-
# this is a 'string' => {{0, 0}, {276, 166}}
|
230
|
-
:inspector_frame => {:key => 'AXInspector.frame',
|
231
|
-
:value => '{{270, -13}, {276, 166}}',
|
232
|
-
:type => 'string'}
|
233
|
-
}
|
234
|
-
end
|
235
|
-
|
236
|
-
# @deprecated 0.10.0 no replacement
|
237
|
-
# @!visibility private
|
238
|
-
# The absolute path to the iPhone Simulator Application Support directory.
|
239
|
-
# @return [String] absolute path
|
240
|
-
# @todo add deprecation message - ATM {Calabash::Cucumber::Launcher.reset_app_sandbox} is using this
|
241
|
-
def simulator_app_support_dir
|
242
|
-
File.expand_path('~/Library/Application Support/iPhone Simulator')
|
243
|
-
end
|
244
|
-
|
245
|
-
# @deprecated 0.10.0 no replacement
|
246
|
-
# @!visibility private
|
247
|
-
# The absolute path to the SDK's com.apple.Accessibility.plist file.
|
248
|
-
# @param [String] sdk_dir base path the SDK directory
|
249
|
-
# @return [String] an absolute path
|
250
|
-
def plist_path_with_sdk_dir(sdk_dir)
|
251
|
-
_deprecated('0.10.0', 'no replacement', :warn)
|
252
|
-
File.expand_path("#{sdk_dir}/Library/Preferences/com.apple.Accessibility.plist")
|
253
|
-
end
|
254
|
-
|
255
|
-
# @deprecated 0.10.0 no replacement
|
256
|
-
# @!visibility private
|
257
|
-
# Returns a list of absolute paths the existing simulator directories.
|
258
|
-
#
|
259
|
-
# A simulator 'exists' if has an Application Support directory. for
|
260
|
-
# example, the 6.1, 7.0.3-64, and 7.1 simulators exist if the following
|
261
|
-
# directories are present:
|
262
|
-
#
|
263
|
-
# ~/Library/Application Support/iPhone Simulator/Library/6.1
|
264
|
-
# ~/Library/Application Support/iPhone Simulator/Library/7.0.3-64
|
265
|
-
# ~/Library/Application Support/iPhone Simulator/Library/7.1
|
266
|
-
#
|
267
|
-
# @return[Array<String>] a list of absolute paths to simulator directories
|
268
|
-
# @todo add deprecation message - ATM ::reset_content_and_settings is using this
|
269
|
-
def existing_simulator_support_sdk_dirs
|
270
|
-
sim_app_support_path = simulator_app_support_dir()
|
271
|
-
Dir.glob("#{sim_app_support_path}/*").select { |path|
|
272
|
-
path =~ /(\d)\.(\d)\.?(\d)?(-64)?/
|
273
|
-
}
|
274
|
-
end
|
275
|
-
|
276
|
-
# @deprecated 0.10 no replacement
|
277
|
-
# @!visibility private
|
278
|
-
# Returns a list of possible SDKs per Xcode version.
|
279
|
-
#
|
280
|
-
# It is not enough to ask for the available sdks because of the new 64-bit
|
281
|
-
# variants that started to appear Xcode 5 and the potential for patch level
|
282
|
-
# versions.
|
283
|
-
#
|
284
|
-
# Unfortunately, this method will need be maintained per Xcode version.
|
285
|
-
#
|
286
|
-
# @return [Array<String>] ex. ['6.1', '7.1', '7.0.3', '7.0.3-64']
|
287
|
-
def possible_simulator_sdks
|
288
|
-
_deprecated('0.10.0', 'no replacement', :warn)
|
289
|
-
sdk_detector = SimLauncher::SdkDetector.new
|
290
|
-
available = sdk_detector.available_sdk_versions
|
291
|
-
instruments_version = instruments(:version)
|
292
|
-
|
293
|
-
# in Xcode 5.1* SDK 7.0 ==> 7.0.3
|
294
|
-
if (instruments_version == '5.1' or instruments_version == '5.1.1') and available.include?('7.0')
|
295
|
-
available << '7.0.3'
|
296
|
-
available << '7.0.3-64'
|
297
|
-
end
|
298
|
-
|
299
|
-
if instruments_version == '5.1.1' and available.include?('7.1')
|
300
|
-
available << '7.1'
|
301
|
-
available << '7.1-64'
|
302
|
-
end
|
303
|
-
|
304
|
-
gem_compat_xcode_versions = ['5.1', '5.1.1']
|
305
|
-
unless gem_compat_xcode_versions.include?(instruments_version)
|
306
|
-
msg = ["expected Xcode instruments version to be '5.1' or '5.1.1'",
|
307
|
-
"but found version '#{instruments_version}'",
|
308
|
-
"Gem needs a manual update for Xcode #{instruments_version}!"].join("\n")
|
309
|
-
calabash_warn(msg)
|
310
|
-
end
|
311
|
-
|
312
|
-
# in Xcode 5.1* SDK 7.0 ==> 7.0.3 so we should not include '7.0'
|
313
|
-
# if the user's support directory already contains a 7.0 and 7.0-64 dir
|
314
|
-
# we will detect it by reading from disk.
|
315
|
-
(available - ['7.0']).uniq.sort
|
316
|
-
end
|
317
|
-
|
318
|
-
# @deprecated 0.10.0 no replacement
|
319
|
-
# @!visibility private
|
320
|
-
# Return absolute paths to possible simulator support sdk dirs.
|
321
|
-
#
|
322
|
-
# these directories may or may not exist
|
323
|
-
# @return [Array<String>] an array of absolute paths
|
324
|
-
def possible_simulator_support_sdk_dirs
|
325
|
-
_deprecated('0.10.0', 'no replacement', :warn)
|
326
|
-
base_dir = simulator_app_support_dir
|
327
|
-
possible_simulator_sdks.map { |sdk|
|
328
|
-
"#{base_dir}/#{sdk}"
|
329
|
-
}
|
330
|
-
end
|
331
|
-
|
332
|
-
end
|
333
|
-
end
|
334
|
-
end
|