gametel 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/features/navigation.feature +14 -0
- data/features/spinners.feature +11 -0
- data/features/step_definitions/navigation_steps.rb +12 -0
- data/features/step_definitions/spinners_steps.rb +5 -0
- data/features/support/env.rb +14 -1
- data/lib/gametel/accessors.rb +3 -0
- data/lib/gametel/navigation.rb +49 -0
- data/lib/gametel/platforms/brazenhead/spinner.rb +7 -1
- data/lib/gametel/platforms/brazenhead_platform.rb +12 -9
- data/lib/gametel/version.rb +1 -1
- data/spec/lib/gametel/accessors_spec.rb +11 -0
- metadata +30 -4
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: Navigation through the screens of the application
|
2
|
+
|
3
|
+
Scenario: Navigating to a screen using the default route
|
4
|
+
When I navigate to the Controls screen
|
5
|
+
Then I should see the text "Checkbox 1" on the screen
|
6
|
+
|
7
|
+
Scenario: Navigating to a screen using a named route
|
8
|
+
When I navigate to the Buttons screen using the "button_route" route
|
9
|
+
Then I should see the text "Views/Buttons" on the screen
|
10
|
+
|
11
|
+
Scenario: Navigating to a screen starting with a current screen
|
12
|
+
Given I am on the the ViewsMenuScreen
|
13
|
+
When I navigate to the Controls screen
|
14
|
+
Then I should see the text "Checkbox 1" on the screen
|
data/features/spinners.feature
CHANGED
@@ -7,3 +7,14 @@ Feature: Working with Spinners
|
|
7
7
|
Scenario: Retrieving the selected Spinner text by index
|
8
8
|
When I'm on the controls screen
|
9
9
|
Then I can see the spinner value referenced by "index" is "Mercury"
|
10
|
+
|
11
|
+
Scenario: Setting the selected item in a Spinner by id
|
12
|
+
When I'm on the controls screen
|
13
|
+
And I select item number "3" from the spinner using "id"
|
14
|
+
Then I can see the spinner value referenced by "id" is "Mars"
|
15
|
+
|
16
|
+
Scenario: Setting the select item in a Spinner by index
|
17
|
+
When I'm on the controls screen
|
18
|
+
And I select item number "3" from the spinner using "index"
|
19
|
+
Then I can see the spinner value referenced by "index" is "Mars"
|
20
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
When /^I navigate to the Controls screen$/ do
|
2
|
+
navigate_to(ControlsScreen)
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I navigate to the Buttons screen using the "(.*?)" route$/ do |route|
|
6
|
+
navigate_to(ButtonScreen, :using => route.to_sym)
|
7
|
+
end
|
8
|
+
|
9
|
+
Given /^I am on the the ViewsMenuScreen$/ do
|
10
|
+
on(MainMenuScreen).views
|
11
|
+
on(ViewsMenuScreen)
|
12
|
+
end
|
@@ -3,3 +3,8 @@ Then /^I can see the spinner value referenced by "(.*?)" is "(.*?)"$/ do |how, t
|
|
3
3
|
screen.send("spinner_#{how}").should eq(the_selected_value)
|
4
4
|
end
|
5
5
|
end
|
6
|
+
|
7
|
+
When /^I select item number "(.*?)" from the spinner using "(.*?)"$/ do |num, how|
|
8
|
+
on(ControlsScreen).send "select_spinner_#{how}", num.to_i
|
9
|
+
end
|
10
|
+
|
data/features/support/env.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../', 'lib'))
|
2
2
|
|
3
3
|
require 'rspec/expectations'
|
4
|
+
require 'require_all'
|
4
5
|
require 'brazenhead'
|
5
6
|
require 'brazenhead/server'
|
6
7
|
require 'gametel'
|
7
|
-
require 'gametel/navigation'
|
8
8
|
|
9
9
|
World(Gametel::Navigation)
|
10
10
|
|
@@ -17,6 +17,19 @@ keystore = {
|
|
17
17
|
|
18
18
|
server = Brazenhead::Server.new('features/support/ApiDemos.apk', keystore)
|
19
19
|
|
20
|
+
require_rel '/screens'
|
21
|
+
|
22
|
+
Gametel::Navigation.routes = {
|
23
|
+
:default => [[MainMenuScreen, :views],
|
24
|
+
[ViewsMenuScreen, :controls],
|
25
|
+
[ControlsMenuScreen, :light_theme],
|
26
|
+
[ControlsScreen, :button_field_id]],
|
27
|
+
:button_route => [[MainMenuScreen, :views],
|
28
|
+
[ViewsMenuScreen, :buttons],
|
29
|
+
[ButtonScreen, :normal_id]]
|
30
|
+
}
|
31
|
+
|
32
|
+
|
20
33
|
class Driver
|
21
34
|
include Brazenhead
|
22
35
|
end
|
data/lib/gametel/accessors.rb
CHANGED
data/lib/gametel/navigation.rb
CHANGED
@@ -1,9 +1,58 @@
|
|
1
1
|
module Gametel
|
2
|
+
#
|
3
|
+
# Module to facilitate create new gametel screen objects in
|
4
|
+
# definitions.
|
5
|
+
#
|
2
6
|
module Navigation
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_reader :navigation_routes
|
10
|
+
|
11
|
+
def routes=(routes)
|
12
|
+
@navigation_routes = routes
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
# create a new screen given a class name
|
18
|
+
#
|
3
19
|
def on(cls, &block)
|
4
20
|
@current_screen = cls.new
|
5
21
|
block.call @current_screen if block
|
6
22
|
@current_screen
|
7
23
|
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Navigate to a specific screen following a predefined path.
|
27
|
+
#
|
28
|
+
def navigate_to(screen_cls, how = {:using => :default}, &block)
|
29
|
+
path = path_for how
|
30
|
+
from = @current_screen ? @current_screen.class : path[0][0]
|
31
|
+
from_index = find_index_for(path, from)
|
32
|
+
to_index = find_index_for(path, screen_cls) - 1
|
33
|
+
navigate_through_pages(path[from_index..to_index])
|
34
|
+
on(screen_cls, &block)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def path_for(how)
|
40
|
+
path = Gametel::Navigation.navigation_routes[how[:using]]
|
41
|
+
fail("Gametel::Navigation route :#{how[:using].to_s} not found") unless path
|
42
|
+
path
|
43
|
+
end
|
44
|
+
|
45
|
+
def find_index_for(path, item)
|
46
|
+
path.each_with_index { |each, index| return index if each[0] == item}
|
47
|
+
end
|
48
|
+
|
49
|
+
def navigate_through_pages(pages)
|
50
|
+
pages.each do |cls, method|
|
51
|
+
page = on(cls)
|
52
|
+
fail("Navigation method not specified on #{cls}. Please call the ") unless page.respond_to? method
|
53
|
+
page.send method
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
8
57
|
end
|
9
58
|
end
|
@@ -17,7 +17,13 @@ module Gametel
|
|
17
17
|
device.to_string
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
|
+
def select_spinner_value_by_id(id, index)
|
22
|
+
chain_calls do |device|
|
23
|
+
device.id_from_name id, :variable => '@@the_id@@', :target => 'Brazenhead'
|
24
|
+
device.press_spinner_item_by_id '@@the_id@@', index, :target => 'Brazenhead'
|
25
|
+
end
|
26
|
+
end
|
21
27
|
end
|
22
28
|
end
|
23
29
|
end
|
@@ -25,7 +25,7 @@ module Gametel
|
|
25
25
|
#
|
26
26
|
def get_text(locator)
|
27
27
|
result = get_text_by_id(locator[:id])
|
28
|
-
|
28
|
+
last_json
|
29
29
|
end
|
30
30
|
|
31
31
|
#
|
@@ -33,7 +33,7 @@ module Gametel
|
|
33
33
|
#
|
34
34
|
def get_text_hint(locator)
|
35
35
|
result = get_text_hint_by_id(locator[:id])
|
36
|
-
|
36
|
+
last_json
|
37
37
|
end
|
38
38
|
|
39
39
|
#
|
@@ -41,7 +41,7 @@ module Gametel
|
|
41
41
|
#
|
42
42
|
def get_text_description(locator)
|
43
43
|
result = get_text_description_by_id(locator[:id])
|
44
|
-
|
44
|
+
last_json
|
45
45
|
end
|
46
46
|
|
47
47
|
#
|
@@ -102,7 +102,15 @@ module Gametel
|
|
102
102
|
def get_spinner_value(locator)
|
103
103
|
result = get_spinner_value_by_id(locator[:id]) if locator[:id]
|
104
104
|
result = get_spinner_value_by_index(locator[:index]) if locator[:index]
|
105
|
-
|
105
|
+
last_json
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# select the spinner value using the item's index
|
110
|
+
#
|
111
|
+
def select_spinner_value(locator, index)
|
112
|
+
result = select_spinner_value_by_id(locator[:id], index) if locator[:id]
|
113
|
+
result = press_spinner_item(locator[:index], index) if locator[:index]
|
106
114
|
end
|
107
115
|
|
108
116
|
#
|
@@ -151,11 +159,6 @@ module Gametel
|
|
151
159
|
result = send_key ENTER_KEY
|
152
160
|
end
|
153
161
|
|
154
|
-
private
|
155
|
-
|
156
|
-
def strip_quotes_from(value)
|
157
|
-
value.gsub('"', '')
|
158
|
-
end
|
159
162
|
end
|
160
163
|
end
|
161
164
|
end
|
data/lib/gametel/version.rb
CHANGED
@@ -511,6 +511,12 @@ describe Gametel::Accessors do
|
|
511
511
|
result.should_receive(:body).and_return('the text value')
|
512
512
|
screen.spinner_id.should eq('the text value')
|
513
513
|
end
|
514
|
+
|
515
|
+
it "shuld be able to select an item" do
|
516
|
+
accumulator.should_receive(:id_from_name)
|
517
|
+
accumulator.should_receive(:press_spinner_item_by_id)
|
518
|
+
screen.select_spinner_id 4
|
519
|
+
end
|
514
520
|
end
|
515
521
|
|
516
522
|
context "identified by index" do
|
@@ -523,6 +529,11 @@ describe Gametel::Accessors do
|
|
523
529
|
result.should_receive(:body).and_return('the text value')
|
524
530
|
screen.spinner_index.should eq('the text value')
|
525
531
|
end
|
532
|
+
|
533
|
+
it "should be able to select an item" do
|
534
|
+
platform.should_receive(:press_spinner_item).with(1, 4)
|
535
|
+
screen.select_spinner_index 4
|
536
|
+
end
|
526
537
|
end
|
527
538
|
end
|
528
539
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gametel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-09-
|
13
|
+
date: 2012-09-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: brazenhead
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.4.
|
22
|
+
version: 0.4.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ! '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.4.
|
30
|
+
version: 0.4.2
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: ADB
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,6 +76,22 @@ dependencies:
|
|
76
76
|
- - ! '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: require_all
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
79
95
|
description: High level wrapper around android drivers
|
80
96
|
email:
|
81
97
|
- jeff.morgan@leandog.com
|
@@ -90,6 +106,7 @@ files:
|
|
90
106
|
- features/is_enabled.feature
|
91
107
|
- features/list_item.feature
|
92
108
|
- features/main_screen.feature
|
109
|
+
- features/navigation.feature
|
93
110
|
- features/progress.feature
|
94
111
|
- features/radio_button.feature
|
95
112
|
- features/spinners.feature
|
@@ -100,6 +117,7 @@ files:
|
|
100
117
|
- features/step_definitions/is_enabled_steps.rb
|
101
118
|
- features/step_definitions/list_item_steps.rb
|
102
119
|
- features/step_definitions/main_screen_steps.rb
|
120
|
+
- features/step_definitions/navigation_steps.rb
|
103
121
|
- features/step_definitions/progress_steps.rb
|
104
122
|
- features/step_definitions/radio_button_steps.rb
|
105
123
|
- features/step_definitions/spinners_steps.rb
|
@@ -153,12 +171,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
171
|
- - ! '>='
|
154
172
|
- !ruby/object:Gem::Version
|
155
173
|
version: '0'
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
hash: -226284468373359732
|
156
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
178
|
none: false
|
158
179
|
requirements:
|
159
180
|
- - ! '>='
|
160
181
|
- !ruby/object:Gem::Version
|
161
182
|
version: '0'
|
183
|
+
segments:
|
184
|
+
- 0
|
185
|
+
hash: -226284468373359732
|
162
186
|
requirements: []
|
163
187
|
rubyforge_project:
|
164
188
|
rubygems_version: 1.8.24
|
@@ -172,6 +196,7 @@ test_files:
|
|
172
196
|
- features/is_enabled.feature
|
173
197
|
- features/list_item.feature
|
174
198
|
- features/main_screen.feature
|
199
|
+
- features/navigation.feature
|
175
200
|
- features/progress.feature
|
176
201
|
- features/radio_button.feature
|
177
202
|
- features/spinners.feature
|
@@ -182,6 +207,7 @@ test_files:
|
|
182
207
|
- features/step_definitions/is_enabled_steps.rb
|
183
208
|
- features/step_definitions/list_item_steps.rb
|
184
209
|
- features/step_definitions/main_screen_steps.rb
|
210
|
+
- features/step_definitions/navigation_steps.rb
|
185
211
|
- features/step_definitions/progress_steps.rb
|
186
212
|
- features/step_definitions/radio_button_steps.rb
|
187
213
|
- features/step_definitions/spinners_steps.rb
|