Module: Calabash::Cucumber::KeyboardHelpers
- Included in:
- Core, Operations
- Defined in:
- lib/calabash-cucumber/keyboard_helpers.rb
Overview
Collection of methods for interacting with the keyboard.
We’ve gone to great lengths to provide the fastest keyboard entry possible.
Instance Method Summary collapse
-
#docked_keyboard_visible? ⇒ Boolean
Returns true if a docked keyboard is visible.
-
#keyboard_visible? ⇒ Boolean
Returns true if there is a visible keyboard.
-
#lookup_key_name(key_code) ⇒ Object
Waits for a keyboard to appear and returns the localized name of the ‘key_code` signifier.
-
#split_keyboard_visible? ⇒ Boolean
Returns true if a split keyboard is visible.
-
#undocked_keyboard_visible? ⇒ Boolean
Returns true if an undocked keyboard is visible.
-
#wait_for_keyboard(options = {}) ⇒ Object
Waits for a keyboard to appear and once it does appear waits for ‘:post_timeout` seconds.
-
#wait_for_no_keyboard(options = {}) ⇒ Object
Waits for a keyboard to disappear.
Instance Method Details
#docked_keyboard_visible? ⇒ Boolean
Returns true if a docked keyboard is visible.
A docked keyboard is pinned to the bottom of the view.
Keyboards on the iPhone and iPod are docked.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 27 def docked_keyboard_visible? keyboard = _query_for_keyboard return false if keyboard.nil? return true if device_family_iphone? keyboard_height = keyboard['rect']['height'] keyboard_y = keyboard['rect']['y'] dimensions = screen_dimensions scale = dimensions[:scale] if landscape? screen_height = dimensions[:width]/scale else screen_height = dimensions[:height]/scale end screen_height - keyboard_height == keyboard_y end |
#keyboard_visible? ⇒ Boolean
Returns true if there is a visible keyboard.
78 79 80 81 82 83 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 78 def keyboard_visible? # Order matters! docked_keyboard_visible? || undocked_keyboard_visible? || split_keyboard_visible? end |
#lookup_key_name(key_code) ⇒ Object
Waits for a keyboard to appear and returns the localized name of the ‘key_code` signifier
147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 147 def lookup_key_name(key_code) wait_for_keyboard begin response_json = JSON.parse(http(:path => 'keyboard-language')) rescue JSON::ParserError raise RuntimeError, "Could not parse output of keyboard-language route. Did the app crash?" end if response_json['outcome'] != 'SUCCESS' screenshot_and_raise "failed to retrieve the keyboard localization" end localized_lang = response_json['results']['input_mode'] RunLoop::L10N.new.lookup_localization_name(key_code, localized_lang) end |
#split_keyboard_visible? ⇒ Boolean
Returns true if a split keyboard is visible.
A split keyboard is floats in the middle of the view and is split to allow faster thumb typing
keyboards on the Phone and iPod are docked and not split.
70 71 72 73 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 70 def split_keyboard_visible? return false if device_family_iphone? _query_for_split_keyboard && !_query_for_keyboard end |
#undocked_keyboard_visible? ⇒ Boolean
Returns true if an undocked keyboard is visible.
A undocked keyboard is floats in the middle of the view.
keyboards on the iPhone and iPod are docked.
54 55 56 57 58 59 60 61 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 54 def undocked_keyboard_visible? return false if device_family_iphone? keyboard = _query_for_keyboard return false if keyboard.nil? !docked_keyboard_visible? end |
#wait_for_keyboard(options = {}) ⇒ Object
Waits for a keyboard to appear and once it does appear waits for ‘:post_timeout` seconds.
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 107 def wait_for_keyboard(={}) default_opts = { :timeout_message => "Keyboard did not appear", :post_timeout => 0.3 } merged_opts = default_opts.merge() wait_for(merged_opts) do keyboard_visible? end true end |
#wait_for_no_keyboard(options = {}) ⇒ Object
Waits for a keyboard to disappear.
131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/calabash-cucumber/keyboard_helpers.rb', line 131 def wait_for_no_keyboard(={}) default_opts = { :timeout_message => "Keyboard is visible", } merged_opts = default_opts.merge() wait_for(merged_opts) do !keyboard_visible? end true end |