frank-cucumber 1.1.1 → 1.1.2
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.
- data/frank-cucumber.gemspec +1 -1
- data/frank-skeleton/frank_static_resources.bundle/index.html +6 -16
- data/frank-skeleton/frank_static_resources.bundle/index.html.haml +12 -14
- data/frank-skeleton/frank_static_resources.bundle/js/controller.coffee +6 -1
- data/frank-skeleton/frank_static_resources.bundle/js/controller.js +8 -1
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/css/symbiote.css +1 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_elements.scss +28 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_header.scss +61 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_inspect_tabs_list_tabs.scss +194 -0
- data/frank-skeleton/frank_static_resources.bundle/{jquery.treeview.css → stylesheets/sass/_jquery.treeview.scss} +18 -20
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_jqui.scss +2 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_layout.scss +13 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_mixins.sass +137 -0
- data/frank-skeleton/frank_static_resources.bundle/{reset.css → stylesheets/sass/_reset.scss} +2 -2
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_selector_test_toolbar.scss +81 -0
- data/frank-skeleton/frank_static_resources.bundle/{_solarized_colors.scss → stylesheets/sass/_solarized.scss} +0 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_typography.scss +11 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_unicode.scss +3 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_z_index.scss +2 -0
- data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/symbiote.scss +26 -0
- data/frank-skeleton/libCocoaHTTPServer.a +0 -0
- data/frank-skeleton/libFrank.a +0 -0
- data/frank-skeleton/libShelley.a +0 -0
- data/lib/frank-cucumber.rb +1 -0
- data/lib/frank-cucumber/cli.rb +14 -3
- data/lib/frank-cucumber/core_frank_steps.rb +53 -28
- data/lib/frank-cucumber/frank_helper.rb +32 -4
- data/lib/frank-cucumber/rect.rb +24 -0
- data/lib/frank-cucumber/version.rb +1 -1
- data/test/rect_test.rb +25 -0
- metadata +114 -35
- data/frank-skeleton/frank_static_resources.bundle/symbiote.css +0 -505
@@ -49,6 +49,15 @@ module FrankHelper
|
|
49
49
|
raise 'could not detect running Frank server' unless @server_base_url
|
50
50
|
end
|
51
51
|
end
|
52
|
+
|
53
|
+
# Get the correct quote for the selector
|
54
|
+
def get_selector_quote(selector)
|
55
|
+
if selector.index("'") == nil
|
56
|
+
return "'"
|
57
|
+
else
|
58
|
+
return '"'
|
59
|
+
end
|
60
|
+
end
|
52
61
|
|
53
62
|
#@api private
|
54
63
|
#@return [:String] convient shorthand for {Frank::Cucumber::FrankHelper.selector_engine}, defaulting to 'uiquery'
|
@@ -107,7 +116,8 @@ module FrankHelper
|
|
107
116
|
# @return [Boolean]
|
108
117
|
# @see #check_view_with_mark_exists
|
109
118
|
def view_with_mark_exists(expected_mark)
|
110
|
-
|
119
|
+
quote = get_selector_quote(expected_mark)
|
120
|
+
element_exists( "view marked:#{quote}#{expected_mark}#{quote}" )
|
111
121
|
end
|
112
122
|
|
113
123
|
# Assert whether there are any views in the current view heirarchy which contain the specified accessibility label.
|
@@ -115,7 +125,8 @@ module FrankHelper
|
|
115
125
|
# @raise an rspec exception if the assertion fails
|
116
126
|
# @see #view_with_mark_exists
|
117
127
|
def check_view_with_mark_exists(expected_mark)
|
118
|
-
|
128
|
+
quote = get_selector_quote(expected_mark)
|
129
|
+
check_element_exists( "view marked:#{quote}#{expected_mark}#{quote}" )
|
119
130
|
end
|
120
131
|
|
121
132
|
# Assert whether there are no views in the current view heirarchy which contain the specified accessibility label.
|
@@ -123,7 +134,8 @@ module FrankHelper
|
|
123
134
|
# @raise an rspec exception if the assertion fails
|
124
135
|
# @see #view_with_mark_exists, #check_view_with_mark_exists
|
125
136
|
def check_view_with_mark_does_not_exist(expected_mark)
|
126
|
-
|
137
|
+
quote = get_selector_quote(expected_mark)
|
138
|
+
check_element_does_not_exist( "view marked:#{quote}#{expected_mark}#{quote}" )
|
127
139
|
end
|
128
140
|
|
129
141
|
|
@@ -194,6 +206,23 @@ module FrankHelper
|
|
194
206
|
!matches.empty?
|
195
207
|
end
|
196
208
|
|
209
|
+
def accessibility_frame(selector)
|
210
|
+
frames = frankly_map( selector, 'accessibilityFrame' )
|
211
|
+
raise "the supplied selector [#{selector}] did not match any views" if frames.empty?
|
212
|
+
raise "the supplied selector [#{selector}] matched more than one views (#{frames.count} views matched)" if frames.count > 1
|
213
|
+
Rect.from_api_repr( frames.first )
|
214
|
+
end
|
215
|
+
|
216
|
+
def drag_with_initial_delay(args)
|
217
|
+
from, to = args.values_at(:from,:to)
|
218
|
+
raise ArgumentError.new('must specify a :from parameter') if from.nil?
|
219
|
+
raise ArgumentError.new('must specify a :to parameter') if to.nil?
|
220
|
+
|
221
|
+
dest_frame = accessibility_frame(to)
|
222
|
+
|
223
|
+
frankly_map( from, 'FEX_dragWithInitialDelayToX:y:', dest_frame.center.x, dest_frame.center.y )
|
224
|
+
end
|
225
|
+
|
197
226
|
|
198
227
|
# Ask Frank to invoke the specified method on the app delegate of the iOS application under automation.
|
199
228
|
# @param method_sig [String] the method signature
|
@@ -222,7 +251,6 @@ module FrankHelper
|
|
222
251
|
# @return [Array] an array with an element for each view matched by the selector, each element in the array gives the return value from invoking the specified method on that view.
|
223
252
|
def frankly_map( selector, method_name, *method_args )
|
224
253
|
operation_map = Gateway.build_operation_map(method_name.to_s, method_args)
|
225
|
-
|
226
254
|
res = frank_server.send_post(
|
227
255
|
'map',
|
228
256
|
:query => selector,
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Frank module Cucumber
|
2
|
+
|
3
|
+
class Rect
|
4
|
+
attr_reader :x, :y, :width, :height
|
5
|
+
|
6
|
+
def self.from_api_repr( hash )
|
7
|
+
x,y = hash["origin"]["x"], hash["origin"]["y"]
|
8
|
+
width,height = hash["size"]["width"],hash["size"]["height"]
|
9
|
+
self.new( x, y, width, height )
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(x,y,width,height)
|
13
|
+
@x,@y,@width,@height = x,y,width,height
|
14
|
+
end
|
15
|
+
|
16
|
+
def center
|
17
|
+
OpenStruct.new(
|
18
|
+
x: @x.to_f + (@width.to_f/2),
|
19
|
+
y: @y.to_f + (@height.to_f/2)
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end end
|
data/test/rect_test.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'test_helper.rb'
|
2
|
+
|
3
|
+
require_relative '../lib/frank-cucumber/rect'
|
4
|
+
|
5
|
+
module Frank module Cucumber
|
6
|
+
|
7
|
+
describe Rect do
|
8
|
+
it 'parsing from the api hash representation correctly' do
|
9
|
+
api_repr = { "origin" => {"x" => 1.1, "y" => 2.2}, "size" => { "height" => 11.1, "width" => 22.2 } }
|
10
|
+
rect = Rect.from_api_repr( api_repr )
|
11
|
+
|
12
|
+
rect.x.must_equal 1.1
|
13
|
+
rect.y.must_equal 2.2
|
14
|
+
rect.width.must_equal 22.2
|
15
|
+
rect.height.must_equal 11.1
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'calculates the center correctly' do
|
19
|
+
rect = Rect.new( 100, 200, 11, 21 )
|
20
|
+
rect.center.x.must_equal 105.5
|
21
|
+
rect.center.y.must_equal 210.5
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frank-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cucumber
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: rspec
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '2.0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: sim_launcher
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: 0.4.6
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.4.6
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: i18n
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :runtime
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: plist
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :runtime
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: json
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :runtime
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: dnssd
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,10 +118,15 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :runtime
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: thor
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
132
|
- - ! '>='
|
@@ -99,21 +134,31 @@ dependencies:
|
|
99
134
|
version: '0'
|
100
135
|
type: :runtime
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: xcodeproj
|
105
|
-
requirement: &70212062177680 !ruby/object:Gem::Requirement
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
138
|
none: false
|
107
139
|
requirements:
|
108
140
|
- - ! '>='
|
109
141
|
- !ruby/object:Gem::Version
|
110
142
|
version: '0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: xcodeproj
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ~>
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 0.3.5
|
111
151
|
type: :runtime
|
112
152
|
prerelease: false
|
113
|
-
version_requirements:
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ~>
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 0.3.5
|
114
159
|
- !ruby/object:Gem::Dependency
|
115
160
|
name: rr
|
116
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
none: false
|
118
163
|
requirements:
|
119
164
|
- - ! '>='
|
@@ -121,10 +166,15 @@ dependencies:
|
|
121
166
|
version: '0'
|
122
167
|
type: :development
|
123
168
|
prerelease: false
|
124
|
-
version_requirements:
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
125
175
|
- !ruby/object:Gem::Dependency
|
126
176
|
name: yard
|
127
|
-
requirement:
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
128
178
|
none: false
|
129
179
|
requirements:
|
130
180
|
- - ! '>='
|
@@ -132,10 +182,15 @@ dependencies:
|
|
132
182
|
version: '0'
|
133
183
|
type: :development
|
134
184
|
prerelease: false
|
135
|
-
version_requirements:
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
136
191
|
- !ruby/object:Gem::Dependency
|
137
192
|
name: pry
|
138
|
-
requirement:
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
139
194
|
none: false
|
140
195
|
requirements:
|
141
196
|
- - ! '>='
|
@@ -143,10 +198,15 @@ dependencies:
|
|
143
198
|
version: '0'
|
144
199
|
type: :development
|
145
200
|
prerelease: false
|
146
|
-
version_requirements:
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
147
207
|
- !ruby/object:Gem::Dependency
|
148
208
|
name: pry-debugger
|
149
|
-
requirement:
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
150
210
|
none: false
|
151
211
|
requirements:
|
152
212
|
- - ! '>='
|
@@ -154,7 +214,12 @@ dependencies:
|
|
154
214
|
version: '0'
|
155
215
|
type: :development
|
156
216
|
prerelease: false
|
157
|
-
version_requirements:
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
158
223
|
description: Use cucumber to test native iOS apps via Frank
|
159
224
|
email:
|
160
225
|
- gems@thepete.net
|
@@ -193,13 +258,14 @@ files:
|
|
193
258
|
- lib/frank-cucumber/launcher.rb
|
194
259
|
- lib/frank-cucumber/localize.yml
|
195
260
|
- lib/frank-cucumber/location_helper.rb
|
261
|
+
- lib/frank-cucumber/rect.rb
|
196
262
|
- lib/frank-cucumber/scroll_helper.rb
|
197
263
|
- lib/frank-cucumber/version.rb
|
198
264
|
- lib/frank-cucumber/wait_helper.rb
|
199
265
|
- test/keyboard_helper_test.rb
|
200
266
|
- test/launcher_test.rb
|
267
|
+
- test/rect_test.rb
|
201
268
|
- test/test_helper.rb
|
202
|
-
- frank-skeleton/frank_static_resources.bundle/_solarized_colors.scss
|
203
269
|
- frank-skeleton/frank_static_resources.bundle/images/ajax-loader.gif
|
204
270
|
- frank-skeleton/frank_static_resources.bundle/images/file.gif
|
205
271
|
- frank-skeleton/frank_static_resources.bundle/images/folder-closed.gif
|
@@ -220,7 +286,6 @@ files:
|
|
220
286
|
- frank-skeleton/frank_static_resources.bundle/images/treeview-red.gif
|
221
287
|
- frank-skeleton/frank_static_resources.bundle/index.html
|
222
288
|
- frank-skeleton/frank_static_resources.bundle/index.html.haml
|
223
|
-
- frank-skeleton/frank_static_resources.bundle/jquery.treeview.css
|
224
289
|
- frank-skeleton/frank_static_resources.bundle/js/accessible_views_view.coffee
|
225
290
|
- frank-skeleton/frank_static_resources.bundle/js/accessible_views_view.js
|
226
291
|
- frank-skeleton/frank_static_resources.bundle/js/controller.coffee
|
@@ -269,8 +334,21 @@ files:
|
|
269
334
|
- frank-skeleton/frank_static_resources.bundle/pictos/pictos-web.woff
|
270
335
|
- frank-skeleton/frank_static_resources.bundle/pictos/pictos.css
|
271
336
|
- frank-skeleton/frank_static_resources.bundle/pictos/pictos_base64.css
|
272
|
-
- frank-skeleton/frank_static_resources.bundle/
|
273
|
-
- frank-skeleton/frank_static_resources.bundle/
|
337
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/css/symbiote.css
|
338
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_elements.scss
|
339
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_header.scss
|
340
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_inspect_tabs_list_tabs.scss
|
341
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_jquery.treeview.scss
|
342
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_jqui.scss
|
343
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_layout.scss
|
344
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_mixins.sass
|
345
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_reset.scss
|
346
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_selector_test_toolbar.scss
|
347
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_solarized.scss
|
348
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_typography.scss
|
349
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_unicode.scss
|
350
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_z_index.scss
|
351
|
+
- frank-skeleton/frank_static_resources.bundle/stylesheets/sass/symbiote.scss
|
274
352
|
- frank-skeleton/frank_static_resources.bundle/ViewAttributeMapping.plist
|
275
353
|
homepage: http://rubygems.org/gems/frank-cucumber
|
276
354
|
licenses: []
|
@@ -292,12 +370,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
292
370
|
version: '0'
|
293
371
|
requirements: []
|
294
372
|
rubyforge_project:
|
295
|
-
rubygems_version: 1.8.
|
373
|
+
rubygems_version: 1.8.24
|
296
374
|
signing_key:
|
297
375
|
specification_version: 3
|
298
376
|
summary: Use cucumber to test native iOS apps via Frank
|
299
377
|
test_files:
|
300
378
|
- test/keyboard_helper_test.rb
|
301
379
|
- test/launcher_test.rb
|
380
|
+
- test/rect_test.rb
|
302
381
|
- test/test_helper.rb
|
303
382
|
has_rdoc:
|
@@ -1,505 +0,0 @@
|
|
1
|
-
/*This should only be enabled for testing rotation when you're */
|
2
|
-
/*not actually running Symbiote in a device*/
|
3
|
-
button#ui-locator-rotator{
|
4
|
-
display: none;
|
5
|
-
}
|
6
|
-
|
7
|
-
html {
|
8
|
-
background-color: #efefef;
|
9
|
-
font-family: "Helvetica Neue", "HelveticaNeue", Arial;
|
10
|
-
font-size: 16px;
|
11
|
-
}
|
12
|
-
|
13
|
-
input, button {
|
14
|
-
padding: 8px 2em 8px 0.5em;
|
15
|
-
-webkit-border-radius: 3px;
|
16
|
-
-moz-border-radius: 3px;
|
17
|
-
border-radius: 3px;
|
18
|
-
-webkit-box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
19
|
-
-moz-box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
20
|
-
box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
21
|
-
}
|
22
|
-
|
23
|
-
input {
|
24
|
-
text-align: left;
|
25
|
-
border-bottom: 1px solid rgba(255,255,255, .2);
|
26
|
-
}
|
27
|
-
|
28
|
-
button {
|
29
|
-
color: #fff;
|
30
|
-
text-shadow: 0 -1px rgba(0,0,0, .3);
|
31
|
-
background-image: -webkit-linear-gradient(top, #ddd, #999);
|
32
|
-
background-image: -moz-linear-gradient(top, #ddd, #999);
|
33
|
-
background-image: linear-gradient(top, #ddd, #999);
|
34
|
-
}
|
35
|
-
|
36
|
-
button:hover {
|
37
|
-
background-image: -webkit-linear-gradient(top, #ccc, #999);
|
38
|
-
background-image: -moz-linear-gradient(top, #ccc, #999);
|
39
|
-
background-image: linear-gradient(top, #ccc, #999);
|
40
|
-
}
|
41
|
-
|
42
|
-
button:active { background: #999; }
|
43
|
-
|
44
|
-
#header {
|
45
|
-
position: relative;
|
46
|
-
height: 40px;
|
47
|
-
padding-left: 10px;
|
48
|
-
overflow: hidden;
|
49
|
-
color: #fff;
|
50
|
-
text-shadow: 0 -1px rgba(0,0,0, .4);
|
51
|
-
background-image: -webkit-linear-gradient(top, rgba(102,102,102, 1), rgba(51,51,51, 1) );
|
52
|
-
background-image: -moz-linear-gradient(top, rgba(102,102,102, 1), rgba(51,51,51, 1) );
|
53
|
-
background-image: linear-gradient(top, rgba(102,102,102, 1), rgba(51,51,51, 1) );
|
54
|
-
}
|
55
|
-
|
56
|
-
#header a {
|
57
|
-
color: #aaff00;
|
58
|
-
font-size: 20px;
|
59
|
-
font-weight: bold;
|
60
|
-
}
|
61
|
-
|
62
|
-
#header h1 {
|
63
|
-
font-size: 2em;
|
64
|
-
float: left;
|
65
|
-
}
|
66
|
-
|
67
|
-
.toast {
|
68
|
-
padding-left: 40px;
|
69
|
-
padding-top: 8px;
|
70
|
-
float: left;
|
71
|
-
height: 40px;
|
72
|
-
color: hotpink;
|
73
|
-
font-size: 1.1em;
|
74
|
-
font-style: italic;
|
75
|
-
|
76
|
-
-moz-transition:all 0.2s linear;
|
77
|
-
-webkit-transition:all 0.2s linear;
|
78
|
-
-o-transition:all 0.2s linear;
|
79
|
-
}
|
80
|
-
|
81
|
-
.toast {
|
82
|
-
padding-top: 40px;
|
83
|
-
}
|
84
|
-
.toast.show {
|
85
|
-
padding-top: 8px;
|
86
|
-
}
|
87
|
-
|
88
|
-
#refresh {
|
89
|
-
float: right;
|
90
|
-
}
|
91
|
-
|
92
|
-
#refresh button, #refresh span {
|
93
|
-
height: 40px;
|
94
|
-
width: 40px;
|
95
|
-
position: relative;
|
96
|
-
display: block;
|
97
|
-
text-align: center;
|
98
|
-
border-radius: 3px 0 0 3px;
|
99
|
-
}
|
100
|
-
#refresh span {
|
101
|
-
position: absolute;
|
102
|
-
top: 0;
|
103
|
-
right: 0;
|
104
|
-
background: url('images/loader.png') center center no-repeat;
|
105
|
-
background-size: 80% auto;
|
106
|
-
-webkit-transition: background 1s;
|
107
|
-
-moz-transition: background 1s;
|
108
|
-
transition: background 1s;
|
109
|
-
}
|
110
|
-
|
111
|
-
.working #refresh span {
|
112
|
-
background-image:url('images/loader.gif');
|
113
|
-
background-size: 80% auto;
|
114
|
-
}
|
115
|
-
|
116
|
-
#selector-test {
|
117
|
-
position: relative;
|
118
|
-
/*top: -60px;*/
|
119
|
-
padding: 10px;
|
120
|
-
/*text-align: center;*/
|
121
|
-
}
|
122
|
-
|
123
|
-
#selector-test > input {
|
124
|
-
display: inline-block;
|
125
|
-
position: relative;
|
126
|
-
}
|
127
|
-
#selector-test input#query {
|
128
|
-
width: 40%;
|
129
|
-
}
|
130
|
-
|
131
|
-
#selector-test input#selector_engine {
|
132
|
-
width: 13em;
|
133
|
-
}
|
134
|
-
|
135
|
-
.dropdown {
|
136
|
-
position: relative;
|
137
|
-
display: inline-block;
|
138
|
-
}
|
139
|
-
|
140
|
-
.dropdown button {
|
141
|
-
position: relative;
|
142
|
-
width: 100%;
|
143
|
-
}
|
144
|
-
.dropdown ul {
|
145
|
-
position: absolute;
|
146
|
-
top: 100%;
|
147
|
-
float: left;
|
148
|
-
list-style: none;
|
149
|
-
}
|
150
|
-
|
151
|
-
.dropdown * {
|
152
|
-
z-index: 1;
|
153
|
-
}
|
154
|
-
.dropdown ul {
|
155
|
-
z-index: 1;
|
156
|
-
opacity: 0;
|
157
|
-
visibility:hidden;
|
158
|
-
-webkit-transition: visibility 0s linear 0.2s,opacity 0.2s linear;
|
159
|
-
-moz-transition: visibility 0s linear 0.2s,opacity 0.2s linear;
|
160
|
-
-o-transition: visibility 0s linear 0.2s,opacity 0.2s linear;
|
161
|
-
transition: visibility 0s linear 0.2s,opacity 0.2s linear;
|
162
|
-
}
|
163
|
-
.dropdown ul.shown {
|
164
|
-
opacity: 1;
|
165
|
-
visibility:visible;
|
166
|
-
transition-delay:0s;
|
167
|
-
-webkit-transition-delay:0s;
|
168
|
-
-moz-transition-delay:0s;
|
169
|
-
-o-transition-delay:0s;
|
170
|
-
}
|
171
|
-
|
172
|
-
.dropdown .drop-indicator {
|
173
|
-
color: #eee;
|
174
|
-
position: absolute;
|
175
|
-
width: 2em;
|
176
|
-
right: 0;
|
177
|
-
top: 6px;
|
178
|
-
bottom: 6px;
|
179
|
-
border-left: 1px solid white;
|
180
|
-
text-align: center;
|
181
|
-
cursor: pointer;
|
182
|
-
-webkit-user-select: none;
|
183
|
-
-moz-user-select: none;
|
184
|
-
user-select: none;
|
185
|
-
}
|
186
|
-
|
187
|
-
.dropdown button {
|
188
|
-
padding: 8px 2em 8px 0.8em;
|
189
|
-
}
|
190
|
-
|
191
|
-
.action-buttons button {
|
192
|
-
width: 9.2em;
|
193
|
-
}
|
194
|
-
.selector-engine button {
|
195
|
-
width: 7.2em;
|
196
|
-
}
|
197
|
-
|
198
|
-
.selector-engine-label {
|
199
|
-
padding-left: 1em;
|
200
|
-
}
|
201
|
-
|
202
|
-
/*.action-buttons {*/
|
203
|
-
/*position: relative;*/
|
204
|
-
/*display: inline-block;*/
|
205
|
-
/*width: 9em;*/
|
206
|
-
/*top: 60px;*/
|
207
|
-
/*}*/
|
208
|
-
|
209
|
-
/*.action-buttons button {*/
|
210
|
-
/*position: relative;*/
|
211
|
-
/*width: 100%;*/
|
212
|
-
/*}*/
|
213
|
-
/*.action-buttons .drop-indicator {*/
|
214
|
-
/*color: #eee;*/
|
215
|
-
/*position: absolute;*/
|
216
|
-
/*width: 1.5em;*/
|
217
|
-
/*right: 0;*/
|
218
|
-
/*top: 0;*/
|
219
|
-
/*padding: 5px;*/
|
220
|
-
/*}*/
|
221
|
-
|
222
|
-
/*.action-buttons * {*/
|
223
|
-
/*z-index: 1;*/
|
224
|
-
/*}*/
|
225
|
-
/*.action-buttons .extra-actions {*/
|
226
|
-
/*z-index: 1;*/
|
227
|
-
/*opacity: 0;*/
|
228
|
-
/*visibility:hidden;*/
|
229
|
-
/*-webkit-transition: visibility 0s linear 0.2s,opacity 0.2s linear;*/
|
230
|
-
/*-moz-transition: visibility 0s linear 0.2s,opacity 0.2s linear;*/
|
231
|
-
/*-o-transition: visibility 0s linear 0.2s,opacity 0.2s linear;*/
|
232
|
-
/*transition: visibility 0s linear 0.2s,opacity 0.2s linear;*/
|
233
|
-
/*}*/
|
234
|
-
/*.action-buttons .extra-actions.shown {*/
|
235
|
-
/*opacity: 1;*/
|
236
|
-
/*visibility:visible;*/
|
237
|
-
/*transition-delay:0s;*/
|
238
|
-
/*-webkit-transition-delay:0s;*/
|
239
|
-
/*-moz-transition-delay:0s;*/
|
240
|
-
/*-o-transition-delay:0s;*/
|
241
|
-
/*}*/
|
242
|
-
|
243
|
-
.the-columns {
|
244
|
-
position: absolute;
|
245
|
-
top: 90px;
|
246
|
-
right: 0;
|
247
|
-
bottom: 0;
|
248
|
-
left: 0;
|
249
|
-
}
|
250
|
-
|
251
|
-
#inspect-tabs, #list-tabs {
|
252
|
-
position: absolute;
|
253
|
-
top: 0;
|
254
|
-
bottom: 0;
|
255
|
-
}
|
256
|
-
|
257
|
-
#inspect-tabs {
|
258
|
-
right: 0;
|
259
|
-
left: 60%;
|
260
|
-
overflow: hidden;
|
261
|
-
border-left: 1px solid rgba(255,255,255, .1);
|
262
|
-
-webkit-transition: left .3s;
|
263
|
-
-moz-transition: left .3s;
|
264
|
-
transition: left .3s;
|
265
|
-
-webkit-box-shadow: inset 3px 0 3px 0 rgba(0,0,0, .4);
|
266
|
-
-moz-box-shadow: inset 3px 0 3px 0 rgba(0,0,0, .4);
|
267
|
-
box-shadow: inset 3px 0 3px 0 rgba(0,0,0, .4);
|
268
|
-
-webkit-border-radius: 3px 0 0 0;
|
269
|
-
-moz-border-radius: 3px 0 0 0;
|
270
|
-
border-radius: 3px 0 0 0;
|
271
|
-
}
|
272
|
-
|
273
|
-
#list-tabs {
|
274
|
-
right: 40%;
|
275
|
-
left: 0;
|
276
|
-
-webkit-transition: right .3s;
|
277
|
-
-moz-transition: right .3s;
|
278
|
-
transition: right .3s;
|
279
|
-
-webkit-border-radius: 0 3px 0 0;
|
280
|
-
-moz-border-radius: 0 3px 0 0;
|
281
|
-
border-radius: 0 3px 0 0;
|
282
|
-
-webkit-box-shadow: inset -3px 0 3px 0 rgba(0,0,0, .4);
|
283
|
-
-moz-box-shadow: inset -3px 0 3px 0 rgba(0,0,0, .4);
|
284
|
-
box-shadow: inset -3px 0 3px 0 rgba(0,0,0, .4);
|
285
|
-
}
|
286
|
-
|
287
|
-
/* respond to landscape view. */
|
288
|
-
.landscape #inspect-tabs { left: 50%; }
|
289
|
-
.landscape #list-tabs { right: 50%; }
|
290
|
-
|
291
|
-
|
292
|
-
#list-tabs > div, #dom-detail {
|
293
|
-
position: absolute;
|
294
|
-
top: 40px;
|
295
|
-
right: 0;
|
296
|
-
bottom: 0;
|
297
|
-
left: 0;
|
298
|
-
overflow-y: scroll;
|
299
|
-
}
|
300
|
-
|
301
|
-
#inspect-tabs > ul, #list-tabs > ul {
|
302
|
-
overflow: hidden;
|
303
|
-
-webkit-box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
304
|
-
-moz-box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
305
|
-
box-shadow: inset 0 1px 3px 0px rgba(0,0,0, .7);
|
306
|
-
}
|
307
|
-
|
308
|
-
#inspect-tabs > ul > li, #list-tabs > ul > li {
|
309
|
-
float: left;
|
310
|
-
position: relative;
|
311
|
-
width: 50%;
|
312
|
-
display: inline-block;
|
313
|
-
font-size: 12px;
|
314
|
-
margin: 0;
|
315
|
-
padding: 0;
|
316
|
-
text-align: center;
|
317
|
-
border: none;
|
318
|
-
-webkit-border-radius: 0;
|
319
|
-
-moz-border-radius: 0;
|
320
|
-
border-radius: 0;
|
321
|
-
}
|
322
|
-
|
323
|
-
#inspect-tabs > ul > li > a, #list-tabs > ul > li > a {
|
324
|
-
float: none;
|
325
|
-
padding: inherit;
|
326
|
-
line-height: 40px;
|
327
|
-
cursor: pointer;
|
328
|
-
display: block;
|
329
|
-
color: #fff;
|
330
|
-
font-size: 16px;
|
331
|
-
font-weight: bold;
|
332
|
-
text-shadow: 0 -1px rgba(0,0,0, .3);
|
333
|
-
background-image: -webkit-linear-gradient(top, rgba(221,221,221, .6), rgba(153,153,153, .6) );
|
334
|
-
background-image: -moz-linear-gradient(top, rgba(221,221,221, .6), rgba(153,153,153, .6) );
|
335
|
-
background-image: linear-gradient(top, rgba(221,221,221, .6), rgba(153,153,153, .6) );
|
336
|
-
-webkit-box-shadow: inset 0 0 2px 0px rgba(0,0,0, .4);
|
337
|
-
-moz-box-shadow: inset 0 0 2px 0px rgba(0,0,0, .4);
|
338
|
-
box-shadow: inset 0 0 2px 0px rgba(0,0,0, .4);
|
339
|
-
}
|
340
|
-
|
341
|
-
#inspect-tabs > ul > li.ui-tabs-selected > a,
|
342
|
-
#inspect-tabs > ul > li.ui-tabs-selected > a:hover,
|
343
|
-
#list-tabs > ul > li.ui-tabs-selected > a,
|
344
|
-
#list-tabs > ul > li.ui-tabs-selected > a:hover {
|
345
|
-
background-image: -webkit-linear-gradient( top, rgba(35,128,204, .6), rgba(21,78,124, .6) );
|
346
|
-
background-image: -moz-linear-gradient(top, #2380CC, #154E7C);
|
347
|
-
background-image: linear-gradient(top, #2380CC, #154E7C);
|
348
|
-
}
|
349
|
-
|
350
|
-
#inspect-tabs > ul > li > a:hover, #list-tabs > ul > li > a:hover {
|
351
|
-
background-image: -webkit-linear-gradient(top, rgba(204,204,204, .6), rgba(153,153,153, .6) );
|
352
|
-
background-image: -moz-linear-gradient(top, rgba(204,204,204, .6), rgba(153,153,153, .6) );
|
353
|
-
background-image: linear-gradient(top, rgba(204,204,204, .6), rgba(153,153,153, .6) );
|
354
|
-
}
|
355
|
-
|
356
|
-
#inspect-tabs > ul > li > a:active, #list-tabs > ul > li > a:active {
|
357
|
-
background: rgba(153,153,153, .6);
|
358
|
-
-webkit-box-shadow: inset 0 0 3px 0px rgba(0,0,0, .4);
|
359
|
-
-moz-box-shadow: inset 0 0 3px 0px rgba(0,0,0, .4);
|
360
|
-
box-shadow: inset 0 0 3px 0px rgba(0,0,0, .4);
|
361
|
-
}
|
362
|
-
|
363
|
-
a#dump_button {
|
364
|
-
vertical-align: middle;
|
365
|
-
}
|
366
|
-
|
367
|
-
#dom-dump {
|
368
|
-
padding: 0 10px 10px 10px;
|
369
|
-
}
|
370
|
-
|
371
|
-
div#dom-dump .treeview .hovered-in-locator {
|
372
|
-
color: #2aa198;
|
373
|
-
}
|
374
|
-
|
375
|
-
#dom-detail, #accessible-views-tab { padding: 10px; }
|
376
|
-
|
377
|
-
#dom-detail {
|
378
|
-
font-size:0.8em;
|
379
|
-
word-break: break-word;
|
380
|
-
}
|
381
|
-
|
382
|
-
#dom-detail li {
|
383
|
-
padding: 6px 0;
|
384
|
-
border-top: 2px solid rgba(255,255,255, .7);
|
385
|
-
border-bottom: 1px solid rgba(0, 0, 0, .2);
|
386
|
-
-webkit-transition: background-color .1s;
|
387
|
-
-moz-transition: background-color .1s;
|
388
|
-
transition: background-color .1s;
|
389
|
-
}
|
390
|
-
#dom-detail li:first-child { border-top: none; }
|
391
|
-
#dom-detail li:last-child { border-bottom: none; }
|
392
|
-
|
393
|
-
#dom-detail li:hover {
|
394
|
-
background-color: rgba(255,255,255, .4);
|
395
|
-
}
|
396
|
-
|
397
|
-
#dom-detail .key {
|
398
|
-
font-size: 1.5em;
|
399
|
-
}
|
400
|
-
|
401
|
-
#dom-detail .value:before {
|
402
|
-
content: "\21b3";
|
403
|
-
padding-left: 2px;
|
404
|
-
color: #999;
|
405
|
-
}
|
406
|
-
|
407
|
-
#dom-detail .interesting {
|
408
|
-
font-weight: bold;
|
409
|
-
}
|
410
|
-
|
411
|
-
#accessible-views-tab div.hints{
|
412
|
-
font-size: 0.8em;
|
413
|
-
border: 1px dashed #d33682;
|
414
|
-
padding: 10px;
|
415
|
-
margin-bottom: 20px;
|
416
|
-
}
|
417
|
-
|
418
|
-
#accessible-views a {
|
419
|
-
display: block;
|
420
|
-
margin: 10px 0;
|
421
|
-
color: #d33682;
|
422
|
-
font-style: italic;
|
423
|
-
-webkit-transition: color .15s;
|
424
|
-
-moz-transition: color .15s;
|
425
|
-
transition: color .15s;
|
426
|
-
}
|
427
|
-
#accessible-views a:hover {
|
428
|
-
color: #268bd2;
|
429
|
-
}
|
430
|
-
|
431
|
-
#accessible-views span{
|
432
|
-
font-style: normal;
|
433
|
-
font-weight: bold;
|
434
|
-
}
|
435
|
-
|
436
|
-
#ui-locator {
|
437
|
-
padding: 0;
|
438
|
-
}
|
439
|
-
|
440
|
-
#live-view, #asploder, #ui-live-view-rotator {
|
441
|
-
text-align: center;
|
442
|
-
display: inline-block;
|
443
|
-
float: right;
|
444
|
-
}
|
445
|
-
|
446
|
-
#live-view button {
|
447
|
-
-webkit-border-radius: 0;
|
448
|
-
-moz-border-radius: 0;
|
449
|
-
border-radius: 0;
|
450
|
-
}
|
451
|
-
|
452
|
-
#live-view button.down,#asploder button.down {
|
453
|
-
background-image: -webkit-linear-gradient(top, #2380CC, #154E7C);
|
454
|
-
background-image: -moz-linear-gradient(top, #2380CC, #154E7C);
|
455
|
-
background-image: linear-gradient(top, #2380CC, #154E7C);
|
456
|
-
}
|
457
|
-
|
458
|
-
#live-view button span {
|
459
|
-
font-family: Pictos;
|
460
|
-
font-size: 20px;
|
461
|
-
}
|
462
|
-
|
463
|
-
#ui-locator-view{
|
464
|
-
position: absolute;
|
465
|
-
z-index: -1;
|
466
|
-
top: 40px;
|
467
|
-
right: 0;
|
468
|
-
bottom: 0;
|
469
|
-
left: 0;
|
470
|
-
text-align: center;
|
471
|
-
-webkit-transition: -webkit-transform .3s;
|
472
|
-
-moz-transition: -moz-transform .3s;
|
473
|
-
transition: transform .3s;
|
474
|
-
}
|
475
|
-
|
476
|
-
#ui-locator-rotator {
|
477
|
-
float: right;
|
478
|
-
font-family: Pictos;
|
479
|
-
-webkit-border-radius: 0 0 0 3px;
|
480
|
-
-moz-border-radius: 0 0 0 3px;
|
481
|
-
border-radius: 0 0 0 3px;
|
482
|
-
}
|
483
|
-
|
484
|
-
#ui-locator-view.landscape{
|
485
|
-
position: absolute;
|
486
|
-
-webkit-transform: rotate(90deg);
|
487
|
-
-moz-transform: rotate(90deg);
|
488
|
-
transform: rotate(90deg);
|
489
|
-
}
|
490
|
-
|
491
|
-
#query {
|
492
|
-
width: 300px;
|
493
|
-
}
|
494
|
-
|
495
|
-
ul {
|
496
|
-
list-style-type: none;
|
497
|
-
}
|
498
|
-
|
499
|
-
ul.features li {
|
500
|
-
margin-top: 5px;
|
501
|
-
}
|
502
|
-
|
503
|
-
/* jqui */
|
504
|
-
.ui-state-disabled { cursor: default !important; }
|
505
|
-
.ui-tabs .ui-tabs-hide { display: none !important; }
|