calabash-cucumber 0.11.5.pre3 → 0.11.5.pre5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c95f4d2f10d62d51c4e738deaf8609a0f6b5c5c
4
- data.tar.gz: e7cb52842ae5531fff2d7f3e6762661ab5990a86
3
+ metadata.gz: 2d50dadedbe0fd3ab4421be5e585d026bd55c002
4
+ data.tar.gz: a8d3d2e54340109561018c73fb0fc0a7ede6669b
5
5
  SHA512:
6
- metadata.gz: 41d1cac4aff7835fc754925de60d8ecbe0b23ec42148ef7f745bdb2c11cc153adee1f0e393d1be529a3094461767b369dc5586f64316f3d1c9bdcf62c8d85c11
7
- data.tar.gz: d3c775f3d41f41ec239f1f37e80d79e3fe795c4cc379d3288949636be0be934fcf37138e65c53a816b90756e6f26a1d54218e1bff2626136cffbcdd22d77d233
6
+ metadata.gz: 77f902a52e4d614a19795d456cf08dafad343031f4e7d4adbf1276564c07194f82b526cf85f088a9bd9fe7afe172c6471459f5b47036c6db7e8426bb689e7b39
7
+ data.tar.gz: aca1228b4be8f4ec21b4809ca300fe6b1ea123f5dd5cbcb24f8cb9c8bc621381d7c9c6f8a7add5310f8ef556923c43d5046c8481abb0bc1e3425387fad833412
@@ -311,7 +311,7 @@ module Calabash
311
311
 
312
312
  if uia_available?
313
313
  if chr.length == 1
314
- uia_type_string chr
314
+ uia_type_string_raw chr
315
315
  else
316
316
  code = UIA_SUPPORTED_CHARS[chr]
317
317
 
@@ -325,10 +325,8 @@ module Calabash
325
325
  # keyboard and not a key
326
326
  if code.eql?(UIA_SUPPORTED_CHARS['Delete'])
327
327
  uia("uia.keyboard().elements().firstWithName('Delete').tap()")
328
- elsif code.eql?(UIA_SUPPORTED_CHARS['Return'])
329
- tap_keyboard_action_key
330
328
  else
331
- uia_type_string(code, '')
329
+ uia_type_string_raw(code)
332
330
  end
333
331
  end
334
332
  # noinspection RubyStringKeysInHashInspection
@@ -379,6 +377,56 @@ module Calabash
379
377
  end
380
378
  end
381
379
 
380
+ # @!visibility private
381
+ #
382
+ # Enters text into view identified by a query
383
+ #
384
+ # @note
385
+ # *IMPORTANT* enter_text defaults to calling 'setValue' in UIAutomation
386
+ # on the text field. This is fast, but in some cases might result in slightly
387
+ # different behaviour than using `keyboard_enter_text`.
388
+ # To force use of `keyboard_enter_text` in `enter_text` use
389
+ # option :use_keyboard
390
+ #
391
+ # @param [String] uiquery the element to enter text into
392
+ # @param [String] text the text to enter
393
+ # @param [Hash] options controls details of text entry
394
+ # @option options [Boolean] :use_keyboard (false) use the iOS keyboard
395
+ # to enter each character separately
396
+ # @option options [Boolean] :wait (true) call wait_for_element_exists with uiquery
397
+ # @option options [Hash] :wait_options ({}) if :wait pass this as options to wait_for_element_exists
398
+ def enter_text(uiquery, text, options = {})
399
+ default_opts = {:use_keyboard => false, :wait => true, :wait_options => {}}
400
+ options = default_opts.merge(options)
401
+ wait_for_element_exists(uiquery, options[:wait_options]) if options[:wait]
402
+ touch(uiquery, options)
403
+ wait_for_keyboard
404
+ if options[:use_keyboard]
405
+ keyboard_enter_text(text)
406
+ else
407
+ fast_enter_text(text)
408
+ end
409
+ end
410
+
411
+ # @!visibility private
412
+ #
413
+ # Enters text into current text input field
414
+ #
415
+ # @note
416
+ # *IMPORTANT* fast_enter_text defaults to calling 'setValue' in UIAutomation
417
+ # on the text field. This is fast, but in some cases might result in slightly
418
+ # different behaviour than using `keyboard_enter_text`.
419
+ # @param [String] text the text to enter
420
+ def fast_enter_text(text)
421
+ _ensure_can_enter_text
422
+ if uia_available?
423
+ uia_set_responder_value(text)
424
+ else
425
+ keyboard_enter_text(text)
426
+ end
427
+ end
428
+
429
+
382
430
  # Touches the keyboard action key.
383
431
  #
384
432
  # The action key depends on the keyboard. Some examples include:
@@ -395,16 +443,7 @@ module Calabash
395
443
  #
396
444
  # @raise [RuntimeError] if the text cannot be typed.
397
445
  def tap_keyboard_action_key
398
- if uia_available?
399
- run_loop = Calabash::Cucumber::Launcher.launcher.run_loop
400
- if run_loop[:uia_strategy] == :host
401
- uia_type_string "\\\\n", '', false
402
- else
403
- uia_type_string '\n', '', false
404
- end
405
- else
406
- keyboard_enter_char 'Return'
407
- end
446
+ keyboard_enter_char 'Return'
408
447
  end
409
448
 
410
449
  # @deprecated 0.10.0 replaced with `tap_keyboard_action_key`
@@ -15,7 +15,7 @@ module Calabash
15
15
  # @param {String} str string to escape
16
16
  # @return {String} escaped version of `str`
17
17
  def escape_string(str)
18
- escape_quotes(escape_backslashes(str))
18
+ escape_newlines(escape_quotes(escape_backslashes(str)))
19
19
  end
20
20
 
21
21
  # call this method to properly escape blackslashes (\) in Calabash methods
@@ -37,6 +37,24 @@ module Calabash
37
37
  str.gsub(backslash, backslash*4)
38
38
  end
39
39
 
40
+ # call this method to properly escape newlines (\n) in Calabash methods
41
+ # (queries and uia actions).
42
+ # This helper frees you from manual escaping.
43
+ # Note entering a 'newline' character only works in iOS UITextViews
44
+ # @note
45
+ # In ruby it is important to remember that "\n" is a *single character* string containing
46
+ # a new-line.
47
+ #
48
+ # @example
49
+ # quoted = escape_newlines("Karl's \n annoying problem")
50
+ # # => "Karl's \\n annoying problem"
51
+ # @param {String} str string to escape
52
+ # @return {String} escaped version of `str`
53
+ def escape_newlines(str)
54
+ nl = "\n"
55
+ str.gsub(nl, "\\n")
56
+ end
57
+
40
58
  # call this method to properly escape single quotes in Calabash queries
41
59
  # Calabash iOS has some annoying rules for text containing single quotes.
42
60
  # This helper frees you from manual escaping.
@@ -144,13 +144,22 @@ module Calabash
144
144
  # @param {Array} args_arr array describing the query, e.g., `[:button, {marked:'foo'}]`
145
145
  # @param {Array} opts optional arguments specifying a chained sequence of method calls (see example)
146
146
  def uia_call(args_arr, *opts)
147
- uia_call_method(:queryEl, args_arr, *opts)
147
+ uia_call_method(:queryEl, [args_arr], *opts)
148
148
  end
149
149
 
150
150
  # Similar to `uia_call` but searches all windows
151
151
  # @see #uia_call
152
152
  def uia_call_windows(args_arr, *opts)
153
- uia_call_method(:queryElWindows, args_arr, *opts)
153
+ uia_call_method(:queryElWindows, [args_arr], *opts)
154
+ end
155
+
156
+ # Advanced method used for fast keyboard entry by calling the setValue method
157
+ # on the input with current keyboard focus.
158
+ # This is an alternative to calling `keyboard_enter_text`
159
+ #
160
+ # @param {String} value the value to set
161
+ def uia_set_responder_value(value)
162
+ uia_call_method(:elementWithKeyboardFocus, [], setValue: value)
154
163
  end
155
164
 
156
165
  # @!visibility private
@@ -228,6 +237,16 @@ module Calabash
228
237
  uia_handle_command(:swipeOffset, offset, options)
229
238
  end
230
239
 
240
+ # @!visibility private
241
+ def uia_drag_inside(dir, queryparts, options={})
242
+ uia_call_method(:swipe, [dir, queryparts, options])
243
+ end
244
+
245
+ # @!visibility private
246
+ def uia_drag_inside_mark(dir, mark, options={})
247
+ uia_call_method(:swipeMark, [dir, "\"#{mark}\"", options])
248
+ end
249
+
231
250
  # @!visibility private
232
251
  def uia_pinch(*queryparts)
233
252
  uia_handle_command(:pinch, queryparts)
@@ -288,6 +307,10 @@ module Calabash
288
307
  end
289
308
  end
290
309
 
310
+ def uia_type_string_raw(str)
311
+ uia("uia.keyboard().typeString('#{str}')")
312
+ end
313
+
291
314
  # @!visibility private
292
315
  def uia_enter
293
316
  uia_handle_command(:enter)
@@ -319,9 +342,9 @@ module Calabash
319
342
  # @!visibility private
320
343
  def uia_call_method(cmd, args_arr, *opts)
321
344
  if opts.empty?
322
- return uia_handle_command(cmd, args_arr)
345
+ return uia_handle_command(cmd, *args_arr)
323
346
  end
324
- js_cmd = uia_serialize_command(cmd, args_arr)
347
+ js_cmd = uia_serialize_command(cmd, *args_arr)
325
348
 
326
349
  js_args = []
327
350
  opts.each do |invocation|
@@ -3,7 +3,7 @@ module Calabash
3
3
 
4
4
  # @!visibility public
5
5
  # The Calabash iOS gem version.
6
- VERSION = '0.11.5.pre3'
6
+ VERSION = '0.11.5.pre5'
7
7
 
8
8
  # @!visibility public
9
9
  # The minimum required version of the calabash.framework or, for Xamarin
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calabash-cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5.pre3
4
+ version: 0.11.5.pre5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Krukow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-29 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: 1.1.1.pre7
173
+ version: 1.1.1.pre9
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ~>
179
179
  - !ruby/object:Gem::Version
180
- version: 1.1.1.pre7
180
+ version: 1.1.1.pre9
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -224,16 +224,16 @@ dependencies:
224
224
  name: redcarpet
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ~>
227
+ - - '='
228
228
  - !ruby/object:Gem::Version
229
- version: '3.1'
229
+ version: 3.2.0
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - ~>
234
+ - - '='
235
235
  - !ruby/object:Gem::Version
236
- version: '3.1'
236
+ version: 3.2.0
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: pry
239
239
  requirement: !ruby/object:Gem::Requirement