calabash-cucumber 0.19.2 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/dylibs/libCalabashDyn.dylib +0 -0
  3. data/dylibs/libCalabashDynSim.dylib +0 -0
  4. data/lib/calabash-cucumber.rb +9 -2
  5. data/lib/calabash-cucumber/abstract.rb +23 -0
  6. data/lib/calabash-cucumber/automator/automator.rb +158 -0
  7. data/lib/calabash-cucumber/automator/coordinates.rb +401 -0
  8. data/lib/calabash-cucumber/automator/device_agent.rb +424 -0
  9. data/lib/calabash-cucumber/automator/instruments.rb +441 -0
  10. data/lib/calabash-cucumber/connection_helpers.rb +1 -0
  11. data/lib/calabash-cucumber/core.rb +632 -138
  12. data/lib/calabash-cucumber/device_agent.rb +346 -0
  13. data/lib/calabash-cucumber/dot_dir.rb +1 -0
  14. data/lib/calabash-cucumber/environment.rb +1 -0
  15. data/lib/calabash-cucumber/environment_helpers.rb +4 -3
  16. data/lib/calabash-cucumber/http/http.rb +6 -4
  17. data/lib/calabash-cucumber/keyboard_helpers.rb +97 -679
  18. data/lib/calabash-cucumber/launcher.rb +107 -31
  19. data/lib/calabash-cucumber/log_tailer.rb +46 -0
  20. data/lib/calabash-cucumber/map.rb +7 -1
  21. data/lib/calabash-cucumber/rotation_helpers.rb +47 -139
  22. data/lib/calabash-cucumber/status_bar_helpers.rb +51 -20
  23. data/lib/calabash-cucumber/store/preferences.rb +3 -0
  24. data/lib/calabash-cucumber/uia.rb +333 -2
  25. data/lib/calabash-cucumber/usage_tracker.rb +2 -0
  26. data/lib/calabash-cucumber/version.rb +2 -2
  27. data/lib/calabash-cucumber/wait_helpers.rb +2 -0
  28. data/lib/calabash/formatters/html.rb +6 -1
  29. data/lib/frank-calabash.rb +10 -4
  30. data/scripts/.irbrc +3 -0
  31. data/staticlib/calabash.framework.zip +0 -0
  32. data/staticlib/libFrankCalabash.a +0 -0
  33. metadata +11 -6
  34. data/lib/calabash-cucumber/actions/instruments_actions.rb +0 -155
@@ -1,5 +1,7 @@
1
+
1
2
  module Calabash
2
3
  module Cucumber
4
+ # @!visibility private
3
5
  class UsageTracker
4
6
  require "calabash-cucumber/store/preferences"
5
7
  require "calabash-cucumber/logging"
@@ -3,10 +3,10 @@ module Calabash
3
3
 
4
4
  # @!visibility public
5
5
  # The Calabash iOS gem version.
6
- VERSION = "0.19.2"
6
+ VERSION = "0.20.0"
7
7
 
8
8
  # @!visibility public
9
9
  # The minimum required version of the Calabash embedded server.
10
- MIN_SERVER_VERSION = "0.19.2"
10
+ MIN_SERVER_VERSION = "0.20.0"
11
11
  end
12
12
  end
@@ -7,6 +7,8 @@ module Calabash
7
7
 
8
8
  # A collection of methods that help you wait for things.
9
9
  module WaitHelpers
10
+
11
+ # TODO This should not include Core!!! It should be included _by_ Core.
10
12
  include Calabash::Cucumber::Core
11
13
  include Calabash::Cucumber::TestsHelpers
12
14
 
@@ -2,9 +2,13 @@ require "cucumber/formatter/html"
2
2
  require "uri"
3
3
  require "pathname"
4
4
 
5
+ # @!visibility private
5
6
  module Calabash
7
+ # @!visibility private
6
8
  module Formatters
9
+ # @!visibility private
7
10
  class Html < ::Cucumber::Formatter::Html
11
+ # @!visibility private
8
12
  def embed_image(src, label)
9
13
  if _output_relative? && _relative_uri?(src)
10
14
  output_dir = Pathname.new(File.dirname(@io.path))
@@ -16,13 +20,14 @@ module Calabash
16
20
  end
17
21
  end
18
22
 
23
+ # @!visibility private
19
24
  def _relative_uri?(src)
20
25
  uri = URI.parse(src)
21
26
  return false if uri.scheme
22
27
  not Pathname.new(src).absolute?
23
28
  end
24
29
 
25
-
30
+ # @!visibility private
26
31
  def _output_relative?
27
32
  if @io.is_a?(File)
28
33
  path = @io.path
@@ -3,14 +3,15 @@ require 'calabash-cucumber/core'
3
3
  require 'calabash-cucumber/operations'
4
4
  require 'calabash-cucumber/launcher'
5
5
 
6
- # base module for Frank-Calabash
6
+ # @!visibility private
7
7
  module Calabash
8
8
  module Cucumber
9
9
  module Map
10
+ # @!visibility private
10
11
  def raw_map(query, method_name, *method_args)
11
12
  operation_map = {
12
- :method_name => method_name,
13
- :arguments => method_args
13
+ :method_name => method_name,
14
+ :arguments => method_args
14
15
  }
15
16
  res = http({:method => :post, :path => 'cal_map'},
16
17
  {:query => query, :operation => operation_map})
@@ -26,8 +27,11 @@ module Calabash
26
27
  end
27
28
  end
28
29
 
30
+ # @!visibility private
29
31
  module Frank
32
+ # @!visibility private
30
33
  module Calabash
34
+ # @!visibility private
31
35
  def launch(options={})
32
36
  launcher = ::Calabash::Cucumber::Launcher.launcher
33
37
  #noinspection RubyResolve
@@ -37,17 +41,19 @@ module Frank
37
41
  launcher.relaunch(options)
38
42
  end
39
43
 
44
+ # @!visibility private
40
45
  def calabash_client
41
46
  Client.new
42
47
  end
43
48
 
49
+ # @!visibility private
44
50
  module Operations
45
51
  include ::Calabash::Cucumber::Operations
46
52
  end
47
53
 
54
+ # @!visibility private
48
55
  class Client
49
56
  include Operations
50
57
  end
51
-
52
58
  end
53
59
  end
@@ -84,5 +84,8 @@ def enable_usage_tracking(level="system_info")
84
84
  level
85
85
  end
86
86
 
87
+ xcode = RunLoop::Xcode.new
88
+ Calabash::Cucumber::UIA.redefine_instance_methods_if_necessary(xcode)
89
+
87
90
  puts_console_details
88
91
  puts_message_of_the_day
Binary file
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.19.2
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Krukow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-30 00:00:00.000000000 Z
11
+ date: 2016-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -132,7 +132,7 @@ dependencies:
132
132
  requirements:
133
133
  - - ">="
134
134
  - !ruby/object:Gem::Version
135
- version: 2.1.3
135
+ version: 2.2.0
136
136
  - - "<"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.0'
@@ -142,7 +142,7 @@ dependencies:
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 2.1.3
145
+ version: 2.2.0
146
146
  - - "<"
147
147
  - !ruby/object:Gem::Version
148
148
  version: '3.0'
@@ -401,7 +401,11 @@ files:
401
401
  - features-skeleton/support/patches/cucumber.rb
402
402
  - features/step_definitions/calabash_steps.rb
403
403
  - lib/calabash-cucumber.rb
404
- - lib/calabash-cucumber/actions/instruments_actions.rb
404
+ - lib/calabash-cucumber/abstract.rb
405
+ - lib/calabash-cucumber/automator/automator.rb
406
+ - lib/calabash-cucumber/automator/coordinates.rb
407
+ - lib/calabash-cucumber/automator/device_agent.rb
408
+ - lib/calabash-cucumber/automator/instruments.rb
405
409
  - lib/calabash-cucumber/calabash_steps.rb
406
410
  - lib/calabash-cucumber/connection.rb
407
411
  - lib/calabash-cucumber/connection_helpers.rb
@@ -410,6 +414,7 @@ files:
410
414
  - lib/calabash-cucumber/cucumber.rb
411
415
  - lib/calabash-cucumber/date_picker.rb
412
416
  - lib/calabash-cucumber/device.rb
417
+ - lib/calabash-cucumber/device_agent.rb
413
418
  - lib/calabash-cucumber/dot_dir.rb
414
419
  - lib/calabash-cucumber/dylibs.rb
415
420
  - lib/calabash-cucumber/environment.rb
@@ -422,6 +427,7 @@ files:
422
427
  - lib/calabash-cucumber/keyboard_helpers.rb
423
428
  - lib/calabash-cucumber/keychain_helpers.rb
424
429
  - lib/calabash-cucumber/launcher.rb
430
+ - lib/calabash-cucumber/log_tailer.rb
425
431
  - lib/calabash-cucumber/logging.rb
426
432
  - lib/calabash-cucumber/map.rb
427
433
  - lib/calabash-cucumber/operations.rb
@@ -468,4 +474,3 @@ signing_key:
468
474
  specification_version: 4
469
475
  summary: Client for calabash-ios-server for automated functional testing on iOS
470
476
  test_files: []
471
- has_rdoc:
@@ -1,155 +0,0 @@
1
- require 'calabash-cucumber/uia'
2
- require 'calabash-cucumber/connection_helpers'
3
- require 'calabash-cucumber/query_helpers'
4
-
5
- # @!visibility private
6
- class Calabash::Cucumber::InstrumentsActions
7
- include Calabash::Cucumber::UIA
8
- include Calabash::Cucumber::ConnectionHelpers
9
- include Calabash::Cucumber::QueryHelpers
10
-
11
- require "calabash-cucumber/map"
12
-
13
- # @!visibility private
14
- def touch(options)
15
- query_action(options, :uia_tap_offset)
16
- end
17
-
18
- # @!visibility private
19
- def double_tap(options)
20
- query_action(options, :uia_double_tap_offset)
21
- end
22
-
23
- # @!visibility private
24
- def two_finger_tap(options)
25
- query_action(options, :uia_two_finger_tap_offset)
26
- end
27
-
28
- # @!visibility private
29
- def flick(options)
30
- query_action(options) do |offset|
31
- delta = {:offset => options[:delta] || {}}
32
- uia_flick_offset(offset, point_from(offset, delta))
33
- end
34
- end
35
-
36
- # @!visibility private
37
- def touch_hold(options)
38
- query_action(options) do |offset|
39
- duration = options[:duration] || 3
40
- uia_touch_hold_offset(duration, offset)
41
- end
42
- end
43
-
44
- # @!visibility private
45
- def swipe(dir, options={})
46
- options = options.merge(:direction => dir)
47
- query_action(options, :uia_swipe_offset, options)
48
- end
49
-
50
- # @!visibility private
51
- def pan(from, to, options={})
52
- query_action(:query => from) do |from_offset|
53
- query_action(:query => to) do |to_offset|
54
- uia_pan_offset(from_offset, to_offset, options)
55
- end
56
- end
57
- end
58
-
59
- # @!visibility private
60
- def pinch(in_out, options)
61
- query_action(options) do |offset|
62
- options[:duration] = options[:duration] || 0.5
63
- uia_pinch_offset(in_out, offset, options)
64
- end
65
- end
66
-
67
- # @!visibility private
68
- def send_app_to_background(secs)
69
- uia_send_app_to_background(secs)
70
- end
71
-
72
- private
73
-
74
- # @!visibility private
75
- # Data interface
76
- # options[:query] or options[:offset]
77
- def query_action(options, action=nil, *args, &block)
78
- ui_query = options[:query]
79
- offset = options[:offset]
80
- if ui_query
81
- res = find_and_normalize(ui_query)
82
- return res if res.empty?
83
- el = res.first
84
- final_offset = point_from(el, options)
85
- if block_given?
86
- yield final_offset
87
- else
88
- self.send(action, final_offset, *args)
89
- end
90
- [el]
91
- else
92
- ##implies offset
93
- if block_given?
94
- yield offset
95
- else
96
- self.send(action, offset, *args)
97
- end
98
- end
99
- end
100
-
101
- # @!visibility private
102
- def find_and_normalize(ui_query)
103
- raw_result = Calabash::Cucumber::Map.raw_map(ui_query, :query)
104
- orientation = raw_result['status_bar_orientation']
105
- res = raw_result['results']
106
-
107
- return res if res.empty?
108
-
109
- first_res = res.first
110
- normalize_rect_for_orientation!(orientation, first_res['rect']) if first_res['rect']
111
-
112
- res
113
- end
114
-
115
- # @!visibility private
116
- def normalize_rect_for_orientation!(orientation, rect)
117
- orientation = orientation.to_sym
118
- launcher = Calabash::Cucumber::Launcher.launcher
119
- device = launcher.device
120
-
121
- # Coordinate translations for orientation is handled in the server for iOS 8+
122
- if device.ios_major_version.to_i >= 8
123
- return
124
- end
125
-
126
- # We cannot use Device#screen_dimensions here because on iPads the height
127
- # and width are the opposite of what we expect.
128
- # @todo Move all coordinate/orientation translation into the server.
129
- if device.ipad?
130
- screen_size = { :width => 768, :height => 1024 }
131
- elsif device.iphone_4in?
132
- screen_size = { :width => 320, :height => 568 }
133
- else
134
- screen_size = { :width => 320, :height => 480 }
135
- end
136
-
137
- case orientation
138
- when :right
139
- cx = rect['center_x']
140
- rect['center_x'] = rect['center_y']
141
- rect['center_y'] = screen_size[:width] - cx
142
- when :left
143
- cx = rect['center_x']
144
- rect['center_x'] = screen_size[:height] - rect['center_y']
145
- rect['center_y'] = cx
146
- when :up
147
- cy = rect['center_y']
148
- cx = rect['center_x']
149
- rect['center_y'] = screen_size[:height] - cy
150
- rect['center_x'] = screen_size[:width] - cx
151
- else
152
- # no-op by design.
153
- end
154
- end
155
- end