frank-cucumber 0.8.8 → 0.8.10
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-skeleton/frank_static_resources.bundle/index.haml +1 -1
- data/frank-skeleton/frank_static_resources.bundle/index.html +1 -1
- data/frank-skeleton/frank_static_resources.bundle/symbiote.js +4 -9
- data/frank-skeleton/libFrank.a +0 -0
- data/frank-skeleton/libShelley.a +0 -0
- data/lib/frank-cucumber/core_frank_steps.rb +18 -0
- data/lib/frank-cucumber/frank_helper.rb +36 -6
- data/lib/frank-cucumber/frank_localize.rb +8 -0
- data/lib/frank-cucumber/localize.yml +45 -1
- data/lib/frank-cucumber/version.rb +1 -1
- metadata +14 -14
@@ -29,7 +29,7 @@
|
|
29
29
|
%label(for="query") Selector
|
30
30
|
%input#query(placeholder="label marked:'Search'")
|
31
31
|
%button#flash_button Flash
|
32
|
-
%
|
32
|
+
%input#selector_engine(placeholder="uiquery")
|
33
33
|
%td
|
34
34
|
#refresh
|
35
35
|
%img#loading(src="images/ajax-loader.gif")
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<label for='query'>Selector</label>
|
30
30
|
<input id='query' placeholder="label marked:'Search'" />
|
31
31
|
<button id='flash_button'>Flash</button>
|
32
|
-
<
|
32
|
+
<input id='selector_engine' placeholder='uiquery' />
|
33
33
|
</div>
|
34
34
|
</td>
|
35
35
|
<td>
|
@@ -380,10 +380,10 @@ $(document).ready(function() {
|
|
380
380
|
|
381
381
|
|
382
382
|
|
383
|
-
function sendFlashCommand( selector,
|
383
|
+
function sendFlashCommand( selector, engine ) {
|
384
384
|
var command = {
|
385
|
-
|
386
|
-
|
385
|
+
query: selector,
|
386
|
+
selector_engine: engine ? engine : 'uiquery' ,
|
387
387
|
operation: {
|
388
388
|
method_name: 'flash',
|
389
389
|
arguments: []
|
@@ -482,13 +482,8 @@ $(document).ready(function() {
|
|
482
482
|
});
|
483
483
|
|
484
484
|
$('#flash_button').click( function(){
|
485
|
-
|
485
|
+
sendFlashCommand( $("input#query").val(), $("input#selector_engine").val() );
|
486
486
|
});
|
487
|
-
|
488
|
-
$('#shelley_flash_button').click( function(){
|
489
|
-
sendFlashCommand( $("input#query").val(), true );
|
490
|
-
});
|
491
|
-
|
492
487
|
|
493
488
|
liveView = symbiote.LiveView( uiLocator.updateBackdrop, refreshViewHeirarchy );
|
494
489
|
|
data/frank-skeleton/libFrank.a
CHANGED
Binary file
|
data/frank-skeleton/libShelley.a
CHANGED
Binary file
|
@@ -130,6 +130,20 @@ When /^I fill in text fields as follows:$/ do |table|
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
+
# simulate entering text from keyboard
|
134
|
+
When /^I enter the text "([^\\"]*)" from keyboard to the textfield "([^\\"]*)"$/ do |text_to_type, text_field_mark| # !> ambiguous first argument; put parentheses or even spaces
|
135
|
+
selector = "view marked:'#{text_field_mark}' first"
|
136
|
+
if element_exists(selector)
|
137
|
+
touch( selector )
|
138
|
+
else
|
139
|
+
raise "Could not find [#{text_field_mark}], it does not exist."
|
140
|
+
end
|
141
|
+
text_field_selector = "textField placeholder:'#{text_field_mark}'"
|
142
|
+
frankly_map( text_field_selector, 'becomeFirstResponder' )
|
143
|
+
frankly_map( text_field_selector, 'setText:', text_to_type )
|
144
|
+
frankly_map( text_field_selector, 'endEditing:', true )
|
145
|
+
end
|
146
|
+
|
133
147
|
# -- Rotate -- #
|
134
148
|
Given /^the device is in (a )?landscape orientation$/ do |ignored|
|
135
149
|
# 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
|
@@ -276,3 +290,7 @@ end
|
|
276
290
|
When /^I quit the simulator/ do
|
277
291
|
quit_simulator
|
278
292
|
end
|
293
|
+
|
294
|
+
When /^I reset the simulator/ do
|
295
|
+
simulator_reset_data
|
296
|
+
end
|
@@ -5,6 +5,8 @@ require 'frank-cucumber/frank_localize'
|
|
5
5
|
module Frank module Cucumber
|
6
6
|
|
7
7
|
module FrankHelper
|
8
|
+
HOST = "localhost"
|
9
|
+
FRANK_PORT = 37265
|
8
10
|
|
9
11
|
class << self
|
10
12
|
# TODO: adding an ivar to the module itself is a big ugyl hack. We need a FrankDriver class, or similar
|
@@ -69,14 +71,12 @@ module FrankHelper
|
|
69
71
|
|
70
72
|
res['results']
|
71
73
|
end
|
72
|
-
|
73
|
-
|
74
|
-
def frankly_map( query, method_name, *method_args )
|
74
|
+
|
75
|
+
def frankly_engine_map( selector_engine, query, method_name, *method_args )
|
75
76
|
operation_map = {
|
76
77
|
:method_name => method_name,
|
77
78
|
:arguments => method_args,
|
78
79
|
}
|
79
|
-
selector_engine = Frank::Cucumber::FrankHelper.selector_engine || 'uiquery' # default to UIQuery for backwards compatibility
|
80
80
|
res = post_to_uispec_server( 'map', :query => query, :operation => operation_map, :selector_engine => selector_engine )
|
81
81
|
res = JSON.parse( res )
|
82
82
|
if res['outcome'] != 'SUCCESS'
|
@@ -85,12 +85,29 @@ module FrankHelper
|
|
85
85
|
|
86
86
|
res['results']
|
87
87
|
end
|
88
|
+
|
89
|
+
def frankly_map( query, method_name, *method_args )
|
90
|
+
selector_engine = Frank::Cucumber::FrankHelper.selector_engine || 'uiquery' # default to UIQuery for backwards compatibility
|
91
|
+
frankly_engine_map( selector_engine, query, method_name, *method_args )
|
92
|
+
end
|
88
93
|
|
89
94
|
def frankly_dump
|
90
95
|
res = get_to_uispec_server( 'dump' )
|
91
96
|
puts JSON.pretty_generate(JSON.parse(res)) rescue puts res #dumping a super-deep DOM causes errors
|
92
97
|
end
|
93
98
|
|
99
|
+
def frankly_screenshot(filename, subframe=nil, allwindows=true)
|
100
|
+
path = 'screenshot'
|
101
|
+
path += '/allwindows' if allwindows
|
102
|
+
path += "/frame/" + URI.escape(subframe) if (subframe != nil)
|
103
|
+
|
104
|
+
data = get_to_uispec_server( path )
|
105
|
+
|
106
|
+
open(filename, "wb") do |file|
|
107
|
+
file.write(data)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
94
111
|
def frankly_oriented_portrait?
|
95
112
|
'portrait' == frankly_current_orientation
|
96
113
|
end
|
@@ -173,8 +190,10 @@ module FrankHelper
|
|
173
190
|
make_http_request( url, req )
|
174
191
|
end
|
175
192
|
|
176
|
-
def frank_url_for( verb )
|
177
|
-
|
193
|
+
def frank_url_for( verb , port=nil )
|
194
|
+
port ||= FRANK_PORT
|
195
|
+
|
196
|
+
url = URI.parse "http://#{HOST}:#{port}/"
|
178
197
|
url.path = '/'+verb
|
179
198
|
url
|
180
199
|
end
|
@@ -214,6 +233,17 @@ module FrankHelper
|
|
214
233
|
APPLESCRIPT}
|
215
234
|
end
|
216
235
|
|
236
|
+
def simulator_reset_data
|
237
|
+
%x{osascript<<APPLESCRIPT
|
238
|
+
activate application "iPhone Simulator"
|
239
|
+
tell application "System Events"
|
240
|
+
click menu item 5 of menu 1 of menu bar item 2 of menu bar 1 of process "#{Localize.t(:iphone_simulator)}"
|
241
|
+
delay 0.5
|
242
|
+
click button 2 of window 1 of process "#{Localize.t(:iphone_simulator)}"
|
243
|
+
end tell
|
244
|
+
APPLESCRIPT}
|
245
|
+
end
|
246
|
+
|
217
247
|
#Note this needs to have "Enable access for assistive devices"
|
218
248
|
#chcked in the Universal Access system preferences
|
219
249
|
def simulator_hardware_menu_press( menu_label )
|
@@ -18,4 +18,48 @@ fr:
|
|
18
18
|
shake_gesture: Secousse
|
19
19
|
simulate_memory_warning: Simuler un avertissement de mémoire
|
20
20
|
toggle_in_call_status_bar: Afficher/Masquer la barre d'état d'appel en cour
|
21
|
-
simulate_hardware_keyboard: Simuler un clavier matériel
|
21
|
+
simulate_hardware_keyboard: Simuler un clavier matériel
|
22
|
+
|
23
|
+
de:
|
24
|
+
iphone_simulator: iOS-Simulator
|
25
|
+
hardware: Hardware
|
26
|
+
home: Home
|
27
|
+
rotate_left: Links drehen
|
28
|
+
rotate_right: Rechts drehen
|
29
|
+
shake_gesture: Schüttelgeste
|
30
|
+
simulate_memory_warning: Speicherwarnhinweis simulieren
|
31
|
+
toggle_in_call_status_bar: Status für eingeh. Anrufe ein/aus
|
32
|
+
simulate_hardware_keyboard: Hardware-Tastatur simulieren
|
33
|
+
|
34
|
+
ru:
|
35
|
+
iphone_simulator: Симулятор iOS
|
36
|
+
hardware: Аппаратура
|
37
|
+
home: Экран «Домой»
|
38
|
+
rotate_left: Повернуть влево
|
39
|
+
rotate_right: Повернуть вправо
|
40
|
+
shake_gesture: Выполнить жест встряхивания
|
41
|
+
simulate_memory_warning: Симулировать предупреждение о нехватке памяти
|
42
|
+
toggle_in_call_status_bar: Переключить на строку состояния поступающего вызова
|
43
|
+
simulate_hardware_keyboard: Симулировать физическую клавиатуру
|
44
|
+
|
45
|
+
zh:
|
46
|
+
iphone_simulator: iOS 模拟器
|
47
|
+
hardware: 硬件
|
48
|
+
home: 首页
|
49
|
+
rotate_left: 向左旋转
|
50
|
+
rotate_right: 向右旋转
|
51
|
+
shake_gesture: 摇动手势
|
52
|
+
simulate_memory_warning: 模拟内存警告
|
53
|
+
toggle_in_call_status_bar: 切换呼叫状态栏
|
54
|
+
simulate_hardware_keyboard: 模拟硬件键盘
|
55
|
+
|
56
|
+
ja:
|
57
|
+
iphone_simulator: iOSシミュレータ
|
58
|
+
hardware: ハードウェア
|
59
|
+
home: ホーム
|
60
|
+
rotate_left: 反時計回りに回転
|
61
|
+
rotate_right: 時計回りに回転
|
62
|
+
shake_gesture: シェイクジェスチャー
|
63
|
+
simulate_memory_warning: メモリ警告をシミュレート
|
64
|
+
toggle_in_call_status_bar: 着信ステータスバーを切り替える
|
65
|
+
simulate_hardware_keyboard: ハードウェアキーボードをシミュレート
|
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: 0.8.
|
4
|
+
version: 0.8.10
|
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-03-19 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cucumber
|
17
|
-
requirement: &
|
17
|
+
requirement: &70296015296240 !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: *70296015296240
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec
|
28
|
-
requirement: &
|
28
|
+
requirement: &70296015295720 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70296015295720
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sim_launcher
|
39
|
-
requirement: &
|
39
|
+
requirement: &70296015295240 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70296015295240
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: i18n
|
50
|
-
requirement: &
|
50
|
+
requirement: &70296015294760 !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: *70296015294760
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: plist
|
61
|
-
requirement: &
|
61
|
+
requirement: &70296015294160 !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: *70296015294160
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: json
|
72
|
-
requirement: &
|
72
|
+
requirement: &70296015293620 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70296015293620
|
81
81
|
description: Use cucumber to test native iOS apps via Frank
|
82
82
|
email:
|
83
83
|
- gems@thepete.net
|