frank-cucumber 0.9.8 → 1.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/frank-cucumber.gemspec +1 -1
- 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/cli.rb +0 -16
- data/lib/frank-cucumber/core_frank_steps.rb +2 -26
- data/lib/frank-cucumber/frank_helper.rb +10 -2
- data/lib/frank-cucumber/frank_localize.rb +0 -2
- data/lib/frank-cucumber/frankifier.rb +2 -20
- data/lib/frank-cucumber/gateway.rb +4 -2
- data/lib/frank-cucumber/launcher.rb +4 -0
- data/lib/frank-cucumber/localize.yml +0 -11
- data/lib/frank-cucumber/version.rb +1 -1
- data/test/launcher_test.rb +12 -1
- metadata +32 -33
- data/lib/frank-cucumber/scroll_helper.rb +0 -24
data/frank-cucumber.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.add_dependency( "cucumber" )
|
24
24
|
s.add_dependency( "rspec", [">=2.0"] )
|
25
|
-
s.add_dependency( "sim_launcher", [">=0.4.
|
25
|
+
s.add_dependency( "sim_launcher", [">=0.4.6"] )
|
26
26
|
s.add_dependency( "i18n" )
|
27
27
|
s.add_dependency( "plist" )
|
28
28
|
s.add_dependency( "json" ) # TODO: figure out how to be more permissive as to which JSON gems we allow
|
Binary file
|
data/frank-skeleton/libFrank.a
CHANGED
Binary file
|
data/frank-skeleton/libShelley.a
CHANGED
Binary file
|
data/lib/frank-cucumber/cli.rb
CHANGED
@@ -73,8 +73,6 @@ module Frank
|
|
73
73
|
|
74
74
|
FileUtils.mv( Dir.glob( "#{build_output_dir}/*.app" ).first, frankified_app_dir )
|
75
75
|
|
76
|
-
fix_frankified_apps_bundle_identifier
|
77
|
-
|
78
76
|
in_root do
|
79
77
|
FileUtils.cp_r(
|
80
78
|
File.join( 'Frank',static_bundle),
|
@@ -165,20 +163,6 @@ module Frank
|
|
165
163
|
File.join( build_output_dir, app_bundle_name )
|
166
164
|
end
|
167
165
|
|
168
|
-
def fix_frankified_apps_bundle_identifier
|
169
|
-
# as of iOS 6 the iOS Simulator locks up with a black screen if you try and launch an app which has the same
|
170
|
-
# bundle identifier as a previously installed app but which is in fact a different app. This impacts us because our
|
171
|
-
# Frankified app is different but has the same bundle identifier as the standard non-Frankified app which most users
|
172
|
-
# will want to have installed in the simulator as well.
|
173
|
-
#
|
174
|
-
# We work around this by modifying the Frankified app's bundle identifier inside its Info.plist.
|
175
|
-
inside frankified_app_dir do
|
176
|
-
existing_bundle_identifier = `/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' Info.plist`.chomp
|
177
|
-
new_bundle_identifier = existing_bundle_identifier + '.frankified'
|
178
|
-
run %Q|/usr/libexec/PlistBuddy -c 'Set :CFBundleIdentifier #{new_bundle_identifier}' Info.plist|
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
166
|
end
|
183
167
|
end
|
184
168
|
|
@@ -132,32 +132,8 @@ When /^I enter the text "([^\\"]*)" from keyboard to the textfield "([^\\"]*)"$/
|
|
132
132
|
end
|
133
133
|
|
134
134
|
# -- Rotate -- #
|
135
|
-
Given /^the device is in (a )?landscape orientation$/ do |
|
136
|
-
|
137
|
-
if 'flat' == frankly_current_orientation
|
138
|
-
rotate_simulator_right
|
139
|
-
sleep 1
|
140
|
-
end
|
141
|
-
|
142
|
-
unless frankly_oriented_landscape?
|
143
|
-
rotate_simulator_left
|
144
|
-
sleep 1
|
145
|
-
raise "expected orientation to be landscape after rotating left, but it is #{frankly_current_orientation}" unless frankly_oriented_landscape?
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
Given /^the device is in (a )?portrait orientation$/ do |ignored|
|
150
|
-
# for some reason the simulator sometimes starts of reporting its orientation as 'flat'. Workaround for this is to rotate the device then wait a bit
|
151
|
-
if 'flat' == frankly_current_orientation
|
152
|
-
rotate_simulator_right
|
153
|
-
sleep 1
|
154
|
-
end
|
155
|
-
|
156
|
-
unless frankly_oriented_portrait?
|
157
|
-
rotate_simulator_left
|
158
|
-
sleep 1
|
159
|
-
raise "Expected orientation to be portrait after rotating left, but it is #{frankly_current_orientation}" unless frankly_oriented_portrait?
|
160
|
-
end
|
135
|
+
Given /^the device is in (a )?(landscape|portrait) orientation$/ do |_,orientation|
|
136
|
+
frankly_set_orientation orientation
|
161
137
|
end
|
162
138
|
|
163
139
|
When /^I simulate a memory warning$/ do
|
@@ -3,7 +3,6 @@ require 'frank-cucumber/gateway'
|
|
3
3
|
require 'frank-cucumber/host_scripting'
|
4
4
|
require 'frank-cucumber/wait_helper'
|
5
5
|
require 'frank-cucumber/keyboard_helper'
|
6
|
-
require 'frank-cucumber/scroll_helper'
|
7
6
|
require 'frank-cucumber/bonjour'
|
8
7
|
|
9
8
|
module Frank module Cucumber
|
@@ -25,7 +24,6 @@ module Frank module Cucumber
|
|
25
24
|
module FrankHelper
|
26
25
|
include WaitHelper
|
27
26
|
include KeyboardHelper
|
28
|
-
include ScrollHelper
|
29
27
|
include HostScripting
|
30
28
|
|
31
29
|
# @!attribute [rw] selector_engine
|
@@ -275,6 +273,16 @@ module FrankHelper
|
|
275
273
|
orientation
|
276
274
|
end
|
277
275
|
|
276
|
+
|
277
|
+
# set the device orientation
|
278
|
+
# @param orientation can be 'landscape','landscape_left','landscape_right','portrait', or 'portrait_upside_down'
|
279
|
+
def frankly_set_orientation(orientation)
|
280
|
+
orientation = orientation.to_s
|
281
|
+
orientation = 'landscape_left' if orientation == 'landscape'
|
282
|
+
res = frank_server.send_post( 'orientation', orientation )
|
283
|
+
return Gateway.evaluate_frankly_response( res, "set_orientation #{orientation}" )
|
284
|
+
end
|
285
|
+
|
278
286
|
# @return [Boolean] Does the device running the application have accessibility enabled.
|
279
287
|
# If accessibility is not enabled then a lot of Frank functionality will not work.
|
280
288
|
def frankly_is_accessibility_enabled
|
@@ -19,15 +19,10 @@ class Frankifier
|
|
19
19
|
decide_on_project
|
20
20
|
decide_on_target
|
21
21
|
report_project_and_target
|
22
|
-
|
23
|
-
check_target_build_configuration_is_valid!
|
24
|
-
|
25
22
|
say ''
|
26
23
|
add_linker_flag
|
27
|
-
|
28
24
|
say ''
|
29
25
|
add_library_search_path
|
30
|
-
|
31
26
|
save_changes
|
32
27
|
end
|
33
28
|
|
@@ -83,11 +78,11 @@ class Frankifier
|
|
83
78
|
setting_array = Array( build_settings_to_edit[build_setting] )
|
84
79
|
|
85
80
|
if setting_array.find{ |flag| flag.start_with? "$(FRANK_" }
|
86
|
-
say "It appears that your
|
81
|
+
say "It appears that your Debug configuration's #{build_setting} build setting already include some FRANK setup. Namely: #{setting_array.inspect}. I won't change anything here."
|
87
82
|
return
|
88
83
|
end
|
89
84
|
|
90
|
-
say "Adding $(inherited) and $(#{entry_to_add}) to your
|
85
|
+
say "Adding $(inherited) and $(#{entry_to_add}) to your Debug configuration's #{build_setting} build setting ..."
|
91
86
|
setting_array.unshift "$(inherited)"
|
92
87
|
setting_array << "$(#{entry_to_add})"
|
93
88
|
setting_array.uniq! # mainly to avoid duplicate $(inherited) entries
|
@@ -96,19 +91,6 @@ class Frankifier
|
|
96
91
|
build_settings_to_edit[build_setting] = setting_array
|
97
92
|
end
|
98
93
|
|
99
|
-
def check_target_build_configuration_is_valid!
|
100
|
-
unless @target.build_configuration_list.build_configurations.object_named @target_build_configuration
|
101
|
-
say %Q|I'm trying to Frankify the '#{@target_build_configuration}' build configuration, but I don't see it that build configuration in your XCode target. Here's a list of the build configurations I see:|
|
102
|
-
@target.build_configuration_list.build_configurations.each do |bc|
|
103
|
-
say " '#{bc.name}'"
|
104
|
-
end
|
105
|
-
say ''
|
106
|
-
say %Q|Please specify one of those build configurations using the --build_configuration flag|
|
107
|
-
exit
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
94
|
def build_settings_to_edit
|
113
95
|
@_build_settings_to_edit ||= @target.build_configuration_list.build_settings(@target_build_configuration)
|
114
96
|
end
|
@@ -54,10 +54,12 @@ class Gateway
|
|
54
54
|
end
|
55
55
|
|
56
56
|
#taken from Ian Dee's Encumber
|
57
|
-
def send_post( verb,
|
57
|
+
def send_post( verb, command )
|
58
|
+
command = command.to_json unless command.is_a? String
|
59
|
+
|
58
60
|
url = frank_url_for( verb )
|
59
61
|
req = Net::HTTP::Post.new url.path
|
60
|
-
req.body =
|
62
|
+
req.body = command
|
61
63
|
|
62
64
|
make_http_request( url, req )
|
63
65
|
end
|
@@ -24,6 +24,10 @@ module Launcher
|
|
24
24
|
end
|
25
25
|
raise "\n\n"+("="*80)+"\n"+message+"\n"+("="*80)+"\n\n"
|
26
26
|
end
|
27
|
+
|
28
|
+
if app_path_problem = SimLauncher.check_app_path(app_path)
|
29
|
+
raise "\n\n"+("="*80)+"\n"+app_path_problem+"\n"+("="*80)+"\n\n"
|
30
|
+
end
|
27
31
|
end
|
28
32
|
|
29
33
|
def launch_app(app_path, sdk = nil, version = 'iphone')
|
@@ -63,14 +63,3 @@ ja:
|
|
63
63
|
simulate_memory_warning: メモリ警告をシミュレート
|
64
64
|
toggle_in_call_status_bar: 着信ステータスバーを切り替える
|
65
65
|
simulate_hardware_keyboard: ハードウェアキーボードをシミュレート
|
66
|
-
|
67
|
-
es:
|
68
|
-
iphone_simulator: Simulador iOS
|
69
|
-
hardware: Hardware
|
70
|
-
home: Inicio
|
71
|
-
rotate_left: Girar a la izquierda
|
72
|
-
rotate_right: Girar a la derecha
|
73
|
-
shake_gesture: Agitar
|
74
|
-
simulate_memory_warning: Simular aviso de memoria
|
75
|
-
toggle_in_call_status_bar: Activar/Desactivar barra de estado durante llamada
|
76
|
-
simulate_hardware_keyboard: Simular teclado físico
|
data/test/launcher_test.rb
CHANGED
@@ -9,6 +9,11 @@ def wait_for_frank_to_come_up
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "frank cucumber launcher" do
|
12
|
+
DUMMY_APP_PATH = '/tmp/dummy_app_path'
|
13
|
+
|
14
|
+
before do
|
15
|
+
`mkdir -p #{DUMMY_APP_PATH}`
|
16
|
+
end
|
12
17
|
|
13
18
|
describe "when the path is wrong" do
|
14
19
|
|
@@ -27,6 +32,12 @@ describe "frank cucumber launcher" do
|
|
27
32
|
e.message.must_match "suggestion_1"
|
28
33
|
end
|
29
34
|
end
|
35
|
+
|
36
|
+
it "throws exception when app path doesn't exist" do
|
37
|
+
assert_raises(RuntimeError) do
|
38
|
+
enforce('/foo/bar/baz/not/a/real/path')
|
39
|
+
end
|
40
|
+
end
|
30
41
|
end
|
31
42
|
|
32
43
|
describe "when starting the simulator with the specified params" do
|
@@ -37,7 +48,7 @@ describe "frank cucumber launcher" do
|
|
37
48
|
end
|
38
49
|
|
39
50
|
it 'selects iphone mode by default' do
|
40
|
-
launch_app(
|
51
|
+
launch_app(DUMMY_APP_PATH, 'X.Y')
|
41
52
|
@version.must_equal 'iphone'
|
42
53
|
end
|
43
54
|
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frank-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0.pre2
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Pete Hodgson
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cucumber
|
17
|
-
requirement: &
|
17
|
+
requirement: &70209931333500 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70209931333500
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec
|
28
|
-
requirement: &
|
28
|
+
requirement: &70209931332480 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,21 +33,21 @@ dependencies:
|
|
33
33
|
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70209931332480
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sim_launcher
|
39
|
-
requirement: &
|
39
|
+
requirement: &70209931331180 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.4.
|
44
|
+
version: 0.4.6
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70209931331180
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: i18n
|
50
|
-
requirement: &
|
50
|
+
requirement: &70209931329940 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70209931329940
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: plist
|
61
|
-
requirement: &
|
61
|
+
requirement: &70209931328260 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70209931328260
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: json
|
72
|
-
requirement: &
|
72
|
+
requirement: &70209931326220 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70209931326220
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: dnssd
|
83
|
-
requirement: &
|
83
|
+
requirement: &70209931324360 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70209931324360
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: thor
|
94
|
-
requirement: &
|
94
|
+
requirement: &70209931323000 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70209931323000
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: xcodeproj
|
105
|
-
requirement: &
|
105
|
+
requirement: &70209931321020 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70209931321020
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rr
|
116
|
-
requirement: &
|
116
|
+
requirement: &70209931318860 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *70209931318860
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: yard
|
127
|
-
requirement: &
|
127
|
+
requirement: &70209931316340 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ! '>='
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '0'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *70209931316340
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: pry
|
138
|
-
requirement: &
|
138
|
+
requirement: &70209935385440 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ! '>='
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: '0'
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *70209935385440
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: pry-debugger
|
149
|
-
requirement: &
|
149
|
+
requirement: &70209935381600 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ! '>='
|
@@ -154,7 +154,7 @@ dependencies:
|
|
154
154
|
version: '0'
|
155
155
|
type: :development
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *70209935381600
|
158
158
|
description: Use cucumber to test native iOS apps via Frank
|
159
159
|
email:
|
160
160
|
- gems@thepete.net
|
@@ -192,7 +192,6 @@ files:
|
|
192
192
|
- lib/frank-cucumber/keyboard_helper.rb
|
193
193
|
- lib/frank-cucumber/launcher.rb
|
194
194
|
- lib/frank-cucumber/localize.yml
|
195
|
-
- lib/frank-cucumber/scroll_helper.rb
|
196
195
|
- lib/frank-cucumber/version.rb
|
197
196
|
- lib/frank-cucumber/wait_helper.rb
|
198
197
|
- test/keyboard_helper_test.rb
|
@@ -286,9 +285,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
286
285
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
287
286
|
none: false
|
288
287
|
requirements:
|
289
|
-
- - ! '
|
288
|
+
- - ! '>'
|
290
289
|
- !ruby/object:Gem::Version
|
291
|
-
version:
|
290
|
+
version: 1.3.1
|
292
291
|
requirements: []
|
293
292
|
rubyforge_project:
|
294
293
|
rubygems_version: 1.8.10
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Frank
|
2
|
-
module Cucumber
|
3
|
-
|
4
|
-
module ScrollHelper
|
5
|
-
|
6
|
-
def scroll_view_to_top( selector )
|
7
|
-
frankly_map( selector, "FEX_scrollToTop" )
|
8
|
-
end
|
9
|
-
|
10
|
-
def scroll_view_to_bottom( selector )
|
11
|
-
frankly_map( selector, "FEX_scrollToBottom" )
|
12
|
-
end
|
13
|
-
|
14
|
-
def scroll_view_to_position( selector, x, y )
|
15
|
-
frankly_map( selector, "FEX_setContentOffsetX:y:", x.to_i, y.to_i)
|
16
|
-
end
|
17
|
-
|
18
|
-
def scroll_table_view( selector, row, section = 0)
|
19
|
-
frankly_map(selector, "FEX_scrollToRow:inSection:", row.to_i, section.to_i)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end end
|