gametel 0.5 → 0.5.1
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/features/button.feature +38 -0
- data/features/main_screen.feature +4 -0
- data/features/progress.feature +25 -0
- data/features/radio_button.feature +7 -0
- data/features/spinners.feature +5 -1
- data/features/step_definitions/checkbox_steps.rb +4 -1
- data/features/step_definitions/controls_steps.rb +7 -0
- data/features/step_definitions/main_screen_steps.rb +7 -0
- data/features/step_definitions/progress_steps.rb +34 -0
- data/features/step_definitions/radio_button_steps.rb +5 -0
- data/features/step_definitions/text_steps.rb +19 -0
- data/features/step_definitions/view_steps.rb +11 -2
- data/features/support/ApiDemos.apk +0 -0
- data/features/support/debug.keystore +0 -0
- data/features/support/env.rb +2 -2
- data/features/support/screens/buttons_screen.rb +1 -1
- data/features/support/screens/controls_screen.rb +8 -0
- data/features/support/screens/seek_bar_screen.rb +6 -0
- data/features/text.feature +31 -0
- data/features/view.feature +13 -2
- data/lib/gametel.rb +35 -0
- data/lib/gametel/accessors.rb +54 -8
- data/lib/gametel/platforms/brazenhead/basic.rb +1 -3
- data/lib/gametel/platforms/brazenhead/button.rb +42 -0
- data/lib/gametel/platforms/brazenhead/progress.rb +102 -0
- data/lib/gametel/platforms/brazenhead/spinner.rb +8 -3
- data/lib/gametel/platforms/brazenhead/text.rb +16 -10
- data/lib/gametel/platforms/brazenhead/view.rb +12 -4
- data/lib/gametel/platforms/brazenhead_platform.rb +29 -7
- data/lib/gametel/version.rb +1 -1
- data/lib/gametel/views.rb +5 -0
- data/lib/gametel/views/button.rb +30 -0
- data/lib/gametel/views/checkbox.rb +21 -0
- data/lib/gametel/views/radio_button.rb +20 -0
- data/lib/gametel/views/text.rb +15 -0
- data/lib/gametel/views/view.rb +33 -0
- data/spec/lib/gametel/accessors_spec.rb +477 -27
- data/spec/lib/gametel_spec.rb +23 -0
- metadata +26 -8
- data/features/support/screens/custom_views_screen.rb +0 -7
data/features/button.feature
CHANGED
|
@@ -12,6 +12,11 @@ Feature: Interacting with buttons
|
|
|
12
12
|
Given I'm on the buttons screen
|
|
13
13
|
When I click the on/off button by "id"
|
|
14
14
|
Then I should see the text "ON" on the screen
|
|
15
|
+
|
|
16
|
+
Scenario: Should be able to click a button by id
|
|
17
|
+
Given I'm on the buttons screen
|
|
18
|
+
When I click the on/off button by "index"
|
|
19
|
+
Then I should see the text "ON" on the screen
|
|
15
20
|
|
|
16
21
|
Scenario: Should be able to click a toggle button
|
|
17
22
|
Given I'm on the buttons screen
|
|
@@ -19,3 +24,36 @@ Feature: Interacting with buttons
|
|
|
19
24
|
Then I should see the text "ON" on the screen
|
|
20
25
|
When I click the on/off button
|
|
21
26
|
Then I should see the text "OFF" on the screen
|
|
27
|
+
|
|
28
|
+
Scenario: Determining properties of a button by id
|
|
29
|
+
When I'm on the controls screen
|
|
30
|
+
Then the "button" field identified by "id" can determine the following properties:
|
|
31
|
+
| property | value |
|
|
32
|
+
| clickable | true |
|
|
33
|
+
| enabled | true |
|
|
34
|
+
| focusable | true |
|
|
35
|
+
| focused | false |
|
|
36
|
+
| selected | false |
|
|
37
|
+
| shown | true |
|
|
38
|
+
|
|
39
|
+
Scenario: Determining properties of a button by index
|
|
40
|
+
When I'm on the controls screen
|
|
41
|
+
Then the "button" field identified by "index" can determine the following properties:
|
|
42
|
+
| property | value |
|
|
43
|
+
| clickable | true |
|
|
44
|
+
| enabled | false |
|
|
45
|
+
| focusable | true |
|
|
46
|
+
| focused | false |
|
|
47
|
+
| selected | false |
|
|
48
|
+
| shown | true |
|
|
49
|
+
|
|
50
|
+
Scenario: Determining properties of a button by text
|
|
51
|
+
When I'm on the controls screen
|
|
52
|
+
Then the "button" field identified by "text" can determine the following properties:
|
|
53
|
+
| property | value |
|
|
54
|
+
| clickable | true |
|
|
55
|
+
| enabled | false |
|
|
56
|
+
| focusable | true |
|
|
57
|
+
| focused | false |
|
|
58
|
+
| selected | false |
|
|
59
|
+
| shown | true |
|
|
@@ -21,3 +21,7 @@ Feature: Interacting with the elements on the main screen
|
|
|
21
21
|
When I hit the enter key
|
|
22
22
|
Then I should see the "Accessibility Service" list item
|
|
23
23
|
|
|
24
|
+
Scenario: Navigating back to a particular activity and knowing where we are at
|
|
25
|
+
Given I'm on the buttons screen
|
|
26
|
+
When I go choose to go back to the "ApiDemos" activity
|
|
27
|
+
Then I should currently be on the "ApiDemos" activity
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Feature: Interacting with progress bars
|
|
2
|
+
|
|
3
|
+
Scenario: Getting and setting the progress by id
|
|
4
|
+
Given I am looking at the progress of a seek bar
|
|
5
|
+
When I set the progress indicated by "id" to "37"
|
|
6
|
+
Then I should see the text "37 from touch" on the screen
|
|
7
|
+
And the retrieved progress indicated by "id" should be "37"
|
|
8
|
+
|
|
9
|
+
Scenario: Getting and setting the progress by index
|
|
10
|
+
Given I am looking at the progress of a seek bar
|
|
11
|
+
When I set the progress indicated by "index" to "11"
|
|
12
|
+
Then the retrieved progress indicated by "index" should be "11"
|
|
13
|
+
|
|
14
|
+
Scenario: Getting and setting the secondary progress by id
|
|
15
|
+
Given I am looking at the progress of a seek bar
|
|
16
|
+
When I set the secondary progress indicated by "id" to "74"
|
|
17
|
+
And the retrieved secondary progress indicated by "id" should be "74"
|
|
18
|
+
|
|
19
|
+
Scenario: Getting the progress max by id
|
|
20
|
+
When I am looking at the progress of a seek bar
|
|
21
|
+
Then the retrieved progress max indicated by "id" should be "100"
|
|
22
|
+
|
|
23
|
+
Scenario: Getting the progress max by index
|
|
24
|
+
When I am looking at the progress of a seek bar
|
|
25
|
+
Then the retrieved progress max indicated by "index" should be "100"
|
|
@@ -3,7 +3,14 @@ Feature: Interacting with Radio Buttons
|
|
|
3
3
|
Scenario: Clicking on a radio button by text
|
|
4
4
|
Given I'm on the controls screen
|
|
5
5
|
Then I should be able to click a radio button by "text"
|
|
6
|
+
And the radio button identified by "text" should be checked
|
|
6
7
|
|
|
7
8
|
Scenario: Clicking on a radio button by id
|
|
8
9
|
Given I'm on the controls screen
|
|
9
10
|
Then I should be able to click a radio button by "id"
|
|
11
|
+
And the radio button identified by "id" should be checked
|
|
12
|
+
|
|
13
|
+
Scenario: Clicking on a radio button by index
|
|
14
|
+
Given I'm on the controls screen
|
|
15
|
+
Then I should be able to click a radio button by "index"
|
|
16
|
+
And the radio button identified by "index" should be checked
|
data/features/spinners.feature
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
Feature: Working with Spinners
|
|
2
2
|
|
|
3
|
-
Scenario: Retrieving the selected Spinner text
|
|
3
|
+
Scenario: Retrieving the selected Spinner text by id
|
|
4
4
|
When I'm on the controls screen
|
|
5
5
|
Then I can see the spinner value referenced by "id" is "Mercury"
|
|
6
|
+
|
|
7
|
+
Scenario: Retrieving the selected Spinner text by index
|
|
8
|
+
When I'm on the controls screen
|
|
9
|
+
Then I can see the spinner value referenced by "index" is "Mercury"
|
|
@@ -32,3 +32,10 @@ Then /^I should have the value "(.*?)" in the text field identified by "(.*?)"$/
|
|
|
32
32
|
screen.send("text_field_#{how}").should eq(text_value)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
|
+
|
|
36
|
+
Then /^the "(.*?)" field\'s "(.*?)" property is "(.*?)"$/ do |which, what, result|
|
|
37
|
+
on(ControlsScreen) do |screen|
|
|
38
|
+
view = screen.send("#{which}_field_id_view")
|
|
39
|
+
view.send("#{what}?").to_s.should == result
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -25,3 +25,10 @@ When /^I hit the enter key$/ do
|
|
|
25
25
|
on(MainMenuScreen).enter
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
When /^I go choose to go back to the "(.*?)" activity$/ do |activity|
|
|
29
|
+
on(MainMenuScreen).back_to activity
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Then /^I should currently be on the "(.*?)" activity$/ do |activity|
|
|
33
|
+
on(MainMenuScreen).current_activity.should eq(activity)
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Given /^I am looking at the progress of a seek bar$/ do
|
|
2
|
+
on(MainMenuScreen).views
|
|
3
|
+
on(ViewsMenuScreen).seek_bar
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
When /^I set the progress indicated by "(.*?)" to "(.*?)"$/ do |how, value|
|
|
7
|
+
on(SeekBarScreen) do |screen|
|
|
8
|
+
screen.send "progress_#{how}=", value.to_i
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Then /^the retrieved progress indicated by "(.*?)" should be "(.*?)"$/ do |how, value|
|
|
13
|
+
on(SeekBarScreen) do |screen|
|
|
14
|
+
screen.send("progress_#{how}").should eq(value.to_i)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
When /^I set the secondary progress indicated by "(.*?)" to "(.*?)"$/ do |how, value|
|
|
19
|
+
on(SeekBarScreen) do |screen|
|
|
20
|
+
screen.send "progress_#{how}_secondary=", value.to_i
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
When /^the retrieved secondary progress indicated by "(.*?)" should be "(.*?)"$/ do |how, value|
|
|
25
|
+
on(SeekBarScreen) do |screen|
|
|
26
|
+
screen.send("progress_#{how}_secondary").should eq(value.to_i)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
Then /^the retrieved progress max indicated by "(.*?)" should be "(.*?)"$/ do |how, value|
|
|
31
|
+
on(SeekBarScreen) do |screen|
|
|
32
|
+
screen.send("progress_#{how}_max").should eq(value.to_i)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
Then /^I should be able to click a radio button by "(.*?)"$/ do |how|
|
|
2
2
|
on(ControlsScreen).send "radio_button_#{how}"
|
|
3
3
|
end
|
|
4
|
+
|
|
5
|
+
Then /^the radio button identified by "(.*?)" should be checked$/ do |how|
|
|
6
|
+
on(ControlsScreen).send("radio_button_#{how}_view").should be_checked
|
|
7
|
+
end
|
|
8
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
When /^I\'m on the search view filter screen$/ do
|
|
2
|
+
on(MainMenuScreen).views
|
|
3
|
+
on(ViewsMenuScreen).controls
|
|
4
|
+
on(ControlsMenuScreen).light_theme
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Then /^I am am given the hint "(.*?)" for the "(.*?)" control$/ do |hint, value|
|
|
8
|
+
on(ControlsScreen) do |screen|
|
|
9
|
+
view = screen.send("#{value}_view")
|
|
10
|
+
view.hint.should == hint
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Then /^I am am given the description "(.*?)" for the "(.*?)" control$/ do |description, value|
|
|
15
|
+
on(ControlsScreen) do |screen|
|
|
16
|
+
view = screen.send("#{value}_view")
|
|
17
|
+
view.description.should == description
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -15,6 +15,15 @@ When /^I am observing custom views$/ do
|
|
|
15
15
|
on(ViewsMenuScreen).custom
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
Then /^I should
|
|
19
|
-
on(
|
|
18
|
+
Then /^I should be able to click a view by "(.*?)"$/ do |how|
|
|
19
|
+
on(ControlsScreen).send "view_field_#{how}"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Then /^the "(.*?)" field identified by "(.*?)" can determine the following properties:$/ do |what, how, properties|
|
|
23
|
+
screen = ControlsScreen.new
|
|
24
|
+
view = screen.send "#{what}_field_#{how}_view"
|
|
25
|
+
properties.hashes.each do |property|
|
|
26
|
+
result = view.send("#{property["property"]}?")
|
|
27
|
+
result.to_s.should eq(property["value"]), "for field #{property["property"]}"
|
|
28
|
+
end
|
|
20
29
|
end
|
|
Binary file
|
|
Binary file
|
data/features/support/env.rb
CHANGED
|
@@ -9,13 +9,13 @@ require 'gametel/navigation'
|
|
|
9
9
|
World(Gametel::Navigation)
|
|
10
10
|
|
|
11
11
|
keystore = {
|
|
12
|
-
:path => '
|
|
12
|
+
:path => 'features/support/debug.keystore',
|
|
13
13
|
:alias => 'androiddebugkey',
|
|
14
14
|
:password => 'android',
|
|
15
15
|
:keystore_password => 'android'
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
server = Brazenhead::Server.new('
|
|
18
|
+
server = Brazenhead::Server.new('features/support/ApiDemos.apk', keystore)
|
|
19
19
|
|
|
20
20
|
class Driver
|
|
21
21
|
include Brazenhead
|
|
@@ -4,12 +4,20 @@ class ControlsScreen
|
|
|
4
4
|
text(:text_field_index, :index => 0)
|
|
5
5
|
text(:text_field_id, :id => 'edit')
|
|
6
6
|
text(:text_field_name, :content_description => 'Edit Description')
|
|
7
|
+
view(:view_field_id, :id => 'edit')
|
|
8
|
+
view(:view_field_text, :text => 'textColorPrimary')
|
|
9
|
+
text(:button_field_id, :id => 'button')
|
|
10
|
+
text(:button_disabled_field_id, :id => 'button_disabled')
|
|
7
11
|
button(:enabled_save, :index => 0)
|
|
8
12
|
button(:disabled_save, :index => 1)
|
|
13
|
+
button(:button_field_index, :index => 1)
|
|
14
|
+
button(:button_field_text, :text => 'Save')
|
|
9
15
|
checkbox(:checkbox_index, :index => 0)
|
|
10
16
|
checkbox(:checkbox_text, :text => 'Checkbox 2')
|
|
11
17
|
checkbox(:checkbox_id, :id => 'check1')
|
|
12
18
|
radio_button(:radio_button_text, :text => 'RadioButton 1')
|
|
13
19
|
radio_button(:radio_button_id, :id => 'radio2')
|
|
20
|
+
radio_button(:radio_button_index, :index => 1)
|
|
14
21
|
spinner(:spinner_id, :id => 'spinner1')
|
|
22
|
+
spinner(:spinner_index, :index => 0)
|
|
15
23
|
end
|
data/features/text.feature
CHANGED
|
@@ -24,7 +24,38 @@ Feature: Interacting with the standard text field
|
|
|
24
24
|
When I clear the text from the text field identified by "id"
|
|
25
25
|
Then I should not have the value "example text" on the control screen
|
|
26
26
|
|
|
27
|
+
Scenario: Retrieving the hint text identified by id
|
|
28
|
+
When I'm on the search view filter screen
|
|
29
|
+
Then I am am given the hint "Some Hint Text" for the "text_field_id" control
|
|
30
|
+
|
|
31
|
+
Scenario: Retrieving the content description text identified by id
|
|
32
|
+
When I'm on the search view filter screen
|
|
33
|
+
Then I am am given the description "Edit Description" for the "text_field_id" control
|
|
34
|
+
|
|
27
35
|
Scenario: Retrieving text identified by index
|
|
28
36
|
Given I'm on the controls screen
|
|
29
37
|
When I enter "example text" into the text field identified by "id"
|
|
30
38
|
Then I should have the value "example text" in the text field identified by "id"
|
|
39
|
+
|
|
40
|
+
Scenario: Determining if a text view is enabled
|
|
41
|
+
When I'm on the controls screen
|
|
42
|
+
Then the "text" field's "enabled" property is "true"
|
|
43
|
+
|
|
44
|
+
Scenario: Determining if a button view is enabled
|
|
45
|
+
When I'm on the controls screen
|
|
46
|
+
Then the "button" field's "enabled" property is "true"
|
|
47
|
+
|
|
48
|
+
Scenario: Determining if a button view is disabled
|
|
49
|
+
When I'm on the controls screen
|
|
50
|
+
Then the "button_disabled" field's "enabled" property is "false"
|
|
51
|
+
|
|
52
|
+
Scenario: Determining properties of a text view
|
|
53
|
+
When I'm on the controls screen
|
|
54
|
+
Then the "text" field identified by "id" can determine the following properties:
|
|
55
|
+
| property | value |
|
|
56
|
+
| clickable | true |
|
|
57
|
+
| enabled | true |
|
|
58
|
+
| focusable | true |
|
|
59
|
+
| focused | true |
|
|
60
|
+
| selected | false |
|
|
61
|
+
| shown | true |
|
data/features/view.feature
CHANGED
|
@@ -6,5 +6,16 @@ Feature: Interacting with view elements
|
|
|
6
6
|
Then I should see the "Command one" list item
|
|
7
7
|
|
|
8
8
|
Scenario: Clicking on view by their text
|
|
9
|
-
When I
|
|
10
|
-
Then I should
|
|
9
|
+
When I'm on the controls screen
|
|
10
|
+
Then I should be able to click a view by "text"
|
|
11
|
+
|
|
12
|
+
Scenario: Determining properties of a view
|
|
13
|
+
When I'm on the controls screen
|
|
14
|
+
Then the "view" field identified by "id" can determine the following properties:
|
|
15
|
+
| property | value |
|
|
16
|
+
| clickable | true |
|
|
17
|
+
| enabled | true |
|
|
18
|
+
| focusable | true |
|
|
19
|
+
| focused | true |
|
|
20
|
+
| selected | false |
|
|
21
|
+
| shown | true |
|
data/lib/gametel.rb
CHANGED
|
@@ -2,11 +2,15 @@ require 'gametel/accessors'
|
|
|
2
2
|
require 'gametel/navigation'
|
|
3
3
|
require 'gametel/version'
|
|
4
4
|
require 'gametel/platforms/brazenhead_platform'
|
|
5
|
+
require 'gametel/views'
|
|
5
6
|
|
|
6
7
|
module Gametel
|
|
7
8
|
|
|
8
9
|
attr_reader :platform
|
|
9
10
|
|
|
11
|
+
ROBOTIUM_LEFT = 21
|
|
12
|
+
ROBOTIUM_RIGHT = 22
|
|
13
|
+
|
|
10
14
|
def self.included(cls)
|
|
11
15
|
cls.extend Gametel::Accessors
|
|
12
16
|
end
|
|
@@ -43,6 +47,23 @@ module Gametel
|
|
|
43
47
|
platform.back
|
|
44
48
|
end
|
|
45
49
|
|
|
50
|
+
#
|
|
51
|
+
# Go back to a specific activity
|
|
52
|
+
#
|
|
53
|
+
def back_to(activity)
|
|
54
|
+
platform.go_back_to_activity activity
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def current_activity
|
|
58
|
+
platform.chain_calls do |device|
|
|
59
|
+
device.get_current_activity
|
|
60
|
+
device.get_class
|
|
61
|
+
device.get_simple_name
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
platform.last_response.body.gsub('"','')
|
|
65
|
+
end
|
|
66
|
+
|
|
46
67
|
#
|
|
47
68
|
# Press the enter key
|
|
48
69
|
#
|
|
@@ -63,6 +84,20 @@ module Gametel
|
|
|
63
84
|
def scroll_up
|
|
64
85
|
platform.scroll_up
|
|
65
86
|
end
|
|
87
|
+
|
|
88
|
+
#
|
|
89
|
+
# scroll left
|
|
90
|
+
#
|
|
91
|
+
def scroll_left
|
|
92
|
+
platform.scroll_to_side ROBOTIUM_LEFT
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
# scroll right
|
|
97
|
+
#
|
|
98
|
+
def scroll_right
|
|
99
|
+
platform.scroll_to_side ROBOTIUM_RIGHT
|
|
100
|
+
end
|
|
66
101
|
|
|
67
102
|
#
|
|
68
103
|
# Wait for the provided text to appear
|
data/lib/gametel/accessors.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module Gametel
|
|
2
2
|
module Accessors
|
|
3
3
|
#
|
|
4
|
-
# Generates
|
|
5
|
-
#
|
|
4
|
+
# Generates methods to enter text into a text field, clear the text
|
|
5
|
+
# field, get the hint as well as the description
|
|
6
6
|
#
|
|
7
7
|
# @example
|
|
8
8
|
# text(:first_name, :index => 0)
|
|
9
|
-
# # will generate 'first_name', 'first_name=' and '
|
|
9
|
+
# # will generate 'first_name', 'first_name=', 'clear_first_name', 'first_name_hint' and 'first_name_description' methods
|
|
10
10
|
#
|
|
11
11
|
# @param [String] the name used for the generated methods
|
|
12
12
|
# @param [Hash] locator for how the text is found The valid
|
|
@@ -22,16 +22,19 @@ module Gametel
|
|
|
22
22
|
platform.enter_text(value, locator)
|
|
23
23
|
end
|
|
24
24
|
define_method("clear_#{name}") do
|
|
25
|
-
|
|
25
|
+
platform.clear_text(locator)
|
|
26
|
+
end
|
|
27
|
+
define_method("#{name}_view") do
|
|
28
|
+
Gametel::Views::Text.new(platform, locator)
|
|
26
29
|
end
|
|
27
30
|
end
|
|
28
31
|
|
|
29
32
|
#
|
|
30
|
-
# Generates
|
|
33
|
+
# Generates a method to click a button and determine if it is enabled.
|
|
31
34
|
#
|
|
32
35
|
# @example
|
|
33
36
|
# button(:save, :text => 'Save')
|
|
34
|
-
# # will generate 'save'
|
|
37
|
+
# # will generate 'save' and 'save_enabled?' methods
|
|
35
38
|
#
|
|
36
39
|
# @param [String] the name used for the generated methods
|
|
37
40
|
# @param [Hash] locator for how the button is found The valid
|
|
@@ -44,6 +47,9 @@ module Gametel
|
|
|
44
47
|
define_method(name) do
|
|
45
48
|
platform.press_button(locator)
|
|
46
49
|
end
|
|
50
|
+
define_method("#{name}_view") do
|
|
51
|
+
Gametel::Views::Button.new(platform, locator)
|
|
52
|
+
end
|
|
47
53
|
end
|
|
48
54
|
|
|
49
55
|
#
|
|
@@ -95,6 +101,9 @@ module Gametel
|
|
|
95
101
|
define_method(name) do
|
|
96
102
|
platform.click_checkbox(locator)
|
|
97
103
|
end
|
|
104
|
+
define_method("#{name}_view") do
|
|
105
|
+
Gametel::Views::CheckBox.new(platform, locator)
|
|
106
|
+
end
|
|
98
107
|
end
|
|
99
108
|
|
|
100
109
|
#
|
|
@@ -108,12 +117,16 @@ module Gametel
|
|
|
108
117
|
# @param [Hash] locator for how the checkbox is found The valid
|
|
109
118
|
# keys are:
|
|
110
119
|
# * :text
|
|
120
|
+
# * :index
|
|
111
121
|
# * :id
|
|
112
122
|
#
|
|
113
123
|
def radio_button(name, locator)
|
|
114
124
|
define_method(name) do
|
|
115
125
|
platform.click_radio_button(locator)
|
|
116
126
|
end
|
|
127
|
+
define_method("#{name}_view") do
|
|
128
|
+
Gametel::Views::RadioButton.new(platform, locator)
|
|
129
|
+
end
|
|
117
130
|
end
|
|
118
131
|
|
|
119
132
|
#
|
|
@@ -131,6 +144,39 @@ module Gametel
|
|
|
131
144
|
define_method(name) do
|
|
132
145
|
platform.click_view(locator)
|
|
133
146
|
end
|
|
147
|
+
define_method("#{name}_view") do
|
|
148
|
+
Gametel::Views::View.new(platform, locator)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
#
|
|
153
|
+
# Generates methods to get an set the progress as well as
|
|
154
|
+
# the secondary progress
|
|
155
|
+
# @example
|
|
156
|
+
# spinner(:progress_item, :id => 'id_name_of_your_control')
|
|
157
|
+
# # will generate progress_item, progress_item=, progress_item_secondary, progress_item_secondary=
|
|
158
|
+
#
|
|
159
|
+
# @param [String] the name used for the generated methods
|
|
160
|
+
# @param [Hash] locator indicating an id for how the progress bar is found.
|
|
161
|
+
# The only valid keys are:
|
|
162
|
+
# * :id
|
|
163
|
+
#
|
|
164
|
+
def progress(name, locator)
|
|
165
|
+
define_method("#{name}") do
|
|
166
|
+
platform.get_progress(locator)
|
|
167
|
+
end
|
|
168
|
+
define_method("#{name}_max") do
|
|
169
|
+
platform.get_progress_max(locator)
|
|
170
|
+
end
|
|
171
|
+
define_method("#{name}_secondary") do
|
|
172
|
+
platform.get_secondary_progress(locator)
|
|
173
|
+
end
|
|
174
|
+
define_method("#{name}=") do |value|
|
|
175
|
+
platform.set_progress(locator, value)
|
|
176
|
+
end
|
|
177
|
+
define_method("#{name}_secondary=") do |value|
|
|
178
|
+
platform.set_secondary_progress(locator, value)
|
|
179
|
+
end
|
|
134
180
|
end
|
|
135
181
|
|
|
136
182
|
#
|
|
@@ -146,9 +192,9 @@ module Gametel
|
|
|
146
192
|
#
|
|
147
193
|
def spinner(name, locator)
|
|
148
194
|
define_method(name) do
|
|
149
|
-
platform.get_spinner_value(locator)
|
|
195
|
+
platform.get_spinner_value(locator)
|
|
150
196
|
end
|
|
151
197
|
end
|
|
152
198
|
end
|
|
153
199
|
end
|
|
154
|
-
|
|
200
|
+
|