testcentricity 2.3.17 → 2.3.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -0
- data/lib/devices/devices.yml +2 -2
- data/lib/testcentricity/app_core/screen_objects_helper.rb +100 -10
- data/lib/testcentricity/app_core/screen_sections_helper.rb +109 -15
- data/lib/testcentricity/app_elements/app_element_helper.rb +5 -1
- data/lib/testcentricity/version.rb +1 -1
- data/lib/testcentricity/web_core/page_objects_helper.rb +60 -10
- data/lib/testcentricity/web_core/page_sections_helper.rb +61 -10
- data/lib/testcentricity/web_elements/select_list.rb +34 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7457dc7a397379758049f8cded2a9f3f125975c5
|
4
|
+
data.tar.gz: bf0f1a84f5bbc6dfedef74d78af5213ae0d1bf40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcf2dd6f67cd28f22c07a40ee0bc18099389eccb37734d2049c11c9d1fa4df87a568289af5a3ca87e55459576ba817cf53226fc1744aec29df53c40bce782f6f
|
7
|
+
data.tar.gz: 4dca911af8a4b4b239b5c0d59c4d33efd8bbf6cf1f7739c1e870e2c4df808490e94d2853a6efba3c48c072eec234e6ff228b513f50e09d3de6377afe4e0a7855
|
data/README.md
CHANGED
@@ -28,6 +28,13 @@ hosted instances of Chrome, Firefox, Safari, and IE web browsers.
|
|
28
28
|
|
29
29
|
|
30
30
|
## What's New
|
31
|
+
###Version 2.3.18
|
32
|
+
|
33
|
+
* Updated `SelectList.define_list_elements` method to accept value for `:list_trigger` element.
|
34
|
+
* Updated `SelectList.choose_option` to respect `:list_item` value and to click on `:list_trigger` element, if one is specified.
|
35
|
+
* Updated `PageSection` and `PageObject` UI element object declaration methods to no longer use `class_eval` pattern.
|
36
|
+
* Updated device profiles for iPhone 7 (iOS 10) with Chrome browser and iPad (iOS 10) with Chrome browser.
|
37
|
+
|
31
38
|
###Version 2.3.17
|
32
39
|
|
33
40
|
* Added `List.wait_until_item_count_is` and `List.wait_until_item_count_changes` methods.
|
@@ -145,6 +152,10 @@ use the [parallel_tests gem](https://rubygems.org/gems/parallel_tests) to decrea
|
|
145
152
|
|
146
153
|
|
147
154
|
## What's Fixed
|
155
|
+
###Version 2.3.18
|
156
|
+
|
157
|
+
* Fixed `SelectList.choose_option` to also accept `:text`, `:value`, and `:index` option hashes across all types of select list objects.
|
158
|
+
|
148
159
|
|
149
160
|
###Version 2.3.15
|
150
161
|
|
data/lib/devices/devices.yml
CHANGED
@@ -61,7 +61,7 @@
|
|
61
61
|
:css_width: 375
|
62
62
|
:css_height: 667
|
63
63
|
:default_orientation: portrait
|
64
|
-
:user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) CriOS/
|
64
|
+
:user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) CriOS/65.0.3325.152 Mobile/14G60 Safari/602.1"
|
65
65
|
:iphone7_firefox:
|
66
66
|
:name: "iPhone 7 - Firefox"
|
67
67
|
:os: ios
|
@@ -237,7 +237,7 @@ nexus6:
|
|
237
237
|
:css_width: 1024
|
238
238
|
:css_height: 768
|
239
239
|
:default_orientation: landscape
|
240
|
-
:user_agent: "Mozilla/5.0 (iPad; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) CriOS/
|
240
|
+
:user_agent: "Mozilla/5.0 (iPad; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) CriOS/65.0.3325.152 Mobile/14G60 Safari/602.1"
|
241
241
|
:ipad_firefox:
|
242
242
|
:name: "iPad - Firefox"
|
243
243
|
:os: ios
|
@@ -15,8 +15,17 @@ module TestCentricity
|
|
15
15
|
define_method(trait_name.to_s, &block)
|
16
16
|
end
|
17
17
|
|
18
|
+
# def self.element(element_name, locator)
|
19
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppUIElement.new("#{element_name}", self, #{locator}, :page);end))
|
20
|
+
# end
|
21
|
+
|
18
22
|
def self.element(element_name, locator)
|
19
|
-
|
23
|
+
define_method(element_name) do
|
24
|
+
ivar_name = "@#{element_name}"
|
25
|
+
ivar = instance_variable_get(ivar_name)
|
26
|
+
return ivar if ivar
|
27
|
+
instance_variable_set(ivar_name, TestCentricity::AppUIElement.new(element_name, self, locator, :page))
|
28
|
+
end
|
20
29
|
end
|
21
30
|
|
22
31
|
def self.elements(element_hash)
|
@@ -25,8 +34,17 @@ module TestCentricity
|
|
25
34
|
end
|
26
35
|
end
|
27
36
|
|
37
|
+
# def self.button(element_name, locator)
|
38
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppButton.new("#{element_name}", self, #{locator}, :page);end))
|
39
|
+
# end
|
40
|
+
|
28
41
|
def self.button(element_name, locator)
|
29
|
-
|
42
|
+
define_method(element_name) do
|
43
|
+
ivar_name = "@#{element_name}"
|
44
|
+
ivar = instance_variable_get(ivar_name)
|
45
|
+
return ivar if ivar
|
46
|
+
instance_variable_set(ivar_name, TestCentricity::AppButton.new(element_name, self, locator, :page))
|
47
|
+
end
|
30
48
|
end
|
31
49
|
|
32
50
|
def self.buttons(element_hash)
|
@@ -35,8 +53,17 @@ module TestCentricity
|
|
35
53
|
end
|
36
54
|
end
|
37
55
|
|
56
|
+
# def self.textfield(element_name, locator)
|
57
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppTextField.new("#{element_name}", self, #{locator}, :page);end))
|
58
|
+
# end
|
59
|
+
|
38
60
|
def self.textfield(element_name, locator)
|
39
|
-
|
61
|
+
define_method(element_name) do
|
62
|
+
ivar_name = "@#{element_name}"
|
63
|
+
ivar = instance_variable_get(ivar_name)
|
64
|
+
return ivar if ivar
|
65
|
+
instance_variable_set(ivar_name, TestCentricity::AppTextField.new(element_name, self, locator, :page))
|
66
|
+
end
|
40
67
|
end
|
41
68
|
|
42
69
|
def self.textfields(element_hash)
|
@@ -45,8 +72,17 @@ module TestCentricity
|
|
45
72
|
end
|
46
73
|
end
|
47
74
|
|
75
|
+
# def self.switch(element_name, locator)
|
76
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppSwitch.new("#{element_name}", self, #{locator}, :page);end))
|
77
|
+
# end
|
78
|
+
|
48
79
|
def self.switch(element_name, locator)
|
49
|
-
|
80
|
+
define_method(element_name) do
|
81
|
+
ivar_name = "@#{element_name}"
|
82
|
+
ivar = instance_variable_get(ivar_name)
|
83
|
+
return ivar if ivar
|
84
|
+
instance_variable_set(ivar_name, TestCentricity::AppSwitch.new(element_name, self, locator, :page))
|
85
|
+
end
|
50
86
|
end
|
51
87
|
|
52
88
|
def self.switches(element_hash)
|
@@ -55,8 +91,17 @@ module TestCentricity
|
|
55
91
|
end
|
56
92
|
end
|
57
93
|
|
94
|
+
# def self.checkbox(element_name, locator)
|
95
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppCheckBox.new("#{element_name}", self, #{locator}, :page);end))
|
96
|
+
# end
|
97
|
+
|
58
98
|
def self.checkbox(element_name, locator)
|
59
|
-
|
99
|
+
define_method(element_name) do
|
100
|
+
ivar_name = "@#{element_name}"
|
101
|
+
ivar = instance_variable_get(ivar_name)
|
102
|
+
return ivar if ivar
|
103
|
+
instance_variable_set(ivar_name, TestCentricity::AppCheckBox.new(element_name, self, locator, :page))
|
104
|
+
end
|
60
105
|
end
|
61
106
|
|
62
107
|
def self.checkboxes(element_hash)
|
@@ -65,8 +110,17 @@ module TestCentricity
|
|
65
110
|
end
|
66
111
|
end
|
67
112
|
|
113
|
+
# def self.label(element_name, locator)
|
114
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppLabel.new("#{element_name}", self, #{locator}, :page);end))
|
115
|
+
# end
|
116
|
+
|
68
117
|
def self.label(element_name, locator)
|
69
|
-
|
118
|
+
define_method(element_name) do
|
119
|
+
ivar_name = "@#{element_name}"
|
120
|
+
ivar = instance_variable_get(ivar_name)
|
121
|
+
return ivar if ivar
|
122
|
+
instance_variable_set(ivar_name, TestCentricity::AppLabel.new(element_name, self, locator, :page))
|
123
|
+
end
|
70
124
|
end
|
71
125
|
|
72
126
|
def self.labels(element_hash)
|
@@ -75,8 +129,17 @@ module TestCentricity
|
|
75
129
|
end
|
76
130
|
end
|
77
131
|
|
132
|
+
# def self.list(element_name, locator)
|
133
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppList.new("#{element_name}", self, #{locator}, :page);end))
|
134
|
+
# end
|
135
|
+
|
78
136
|
def self.list(element_name, locator)
|
79
|
-
|
137
|
+
define_method(element_name) do
|
138
|
+
ivar_name = "@#{element_name}"
|
139
|
+
ivar = instance_variable_get(ivar_name)
|
140
|
+
return ivar if ivar
|
141
|
+
instance_variable_set(ivar_name, TestCentricity::AppList.new(element_name, self, locator, :page))
|
142
|
+
end
|
80
143
|
end
|
81
144
|
|
82
145
|
def self.lists(element_hash)
|
@@ -85,8 +148,17 @@ module TestCentricity
|
|
85
148
|
end
|
86
149
|
end
|
87
150
|
|
151
|
+
# def self.selectlist(element_name, locator)
|
152
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppSelectList.new("#{element_name}", self, #{locator}, :page);end))
|
153
|
+
# end
|
154
|
+
|
88
155
|
def self.selectlist(element_name, locator)
|
89
|
-
|
156
|
+
define_method(element_name) do
|
157
|
+
ivar_name = "@#{element_name}"
|
158
|
+
ivar = instance_variable_get(ivar_name)
|
159
|
+
return ivar if ivar
|
160
|
+
instance_variable_set(ivar_name, TestCentricity::AppSelectList.new(element_name, self, locator, :page))
|
161
|
+
end
|
90
162
|
end
|
91
163
|
|
92
164
|
def self.selectlists(element_hash)
|
@@ -95,8 +167,17 @@ module TestCentricity
|
|
95
167
|
end
|
96
168
|
end
|
97
169
|
|
170
|
+
# def self.image(element_name, locator)
|
171
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppImage.new("#{element_name}", self, #{locator}, :page);end))
|
172
|
+
# end
|
173
|
+
|
98
174
|
def self.image(element_name, locator)
|
99
|
-
|
175
|
+
define_method(element_name) do
|
176
|
+
ivar_name = "@#{element_name}"
|
177
|
+
ivar = instance_variable_get(ivar_name)
|
178
|
+
return ivar if ivar
|
179
|
+
instance_variable_set(ivar_name, TestCentricity::AppImage.new(element_name, self, locator, :page))
|
180
|
+
end
|
100
181
|
end
|
101
182
|
|
102
183
|
def self.images(element_hash)
|
@@ -105,8 +186,17 @@ module TestCentricity
|
|
105
186
|
end
|
106
187
|
end
|
107
188
|
|
189
|
+
# def self.alert(element_name, locator)
|
190
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppAlert.new("#{element_name}", self, #{locator}, :page);end))
|
191
|
+
# end
|
192
|
+
|
108
193
|
def self.alert(element_name, locator)
|
109
|
-
|
194
|
+
define_method(element_name) do
|
195
|
+
ivar_name = "@#{element_name}"
|
196
|
+
ivar = instance_variable_get(ivar_name)
|
197
|
+
return ivar if ivar
|
198
|
+
instance_variable_set(ivar_name, TestCentricity::AppAlert.new(element_name, self, locator, :page))
|
199
|
+
end
|
110
200
|
end
|
111
201
|
|
112
202
|
def self.section(section_name, class_name, locator = 0)
|
@@ -20,21 +20,25 @@ module TestCentricity
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def get_locator
|
23
|
-
|
23
|
+
if @locator.zero? && defined?(section_locator)
|
24
|
+
my_locator = section_locator
|
25
|
+
else
|
26
|
+
my_locator = @locator
|
27
|
+
end
|
24
28
|
locators = []
|
25
29
|
if @context == :section && !@parent.nil?
|
26
30
|
locators.push(@parent.get_locator)
|
27
31
|
end
|
28
32
|
|
29
33
|
if @parent_list.nil?
|
30
|
-
locators.push(
|
34
|
+
locators.push(my_locator)
|
31
35
|
else
|
32
36
|
locators.push(@parent_list.get_locator)
|
33
37
|
if @list_index.nil?
|
34
|
-
locators.push(
|
38
|
+
locators.push(my_locator)
|
35
39
|
else
|
36
|
-
list_key =
|
37
|
-
list_value = "#{
|
40
|
+
list_key = my_locator.keys[0]
|
41
|
+
list_value = "#{my_locator.values[0]}[#{@list_index}]"
|
38
42
|
locators.push( { list_key => list_value } )
|
39
43
|
end
|
40
44
|
end
|
@@ -76,8 +80,17 @@ module TestCentricity
|
|
76
80
|
define_method(trait_name.to_s, &block)
|
77
81
|
end
|
78
82
|
|
83
|
+
# def self.element(element_name, locator)
|
84
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppUIElement.new("#{element_name}", self, #{locator}, :section);end))
|
85
|
+
# end
|
86
|
+
|
79
87
|
def self.element(element_name, locator)
|
80
|
-
|
88
|
+
define_method(element_name) do
|
89
|
+
ivar_name = "@#{element_name}"
|
90
|
+
ivar = instance_variable_get(ivar_name)
|
91
|
+
return ivar if ivar
|
92
|
+
instance_variable_set(ivar_name, TestCentricity::AppUIElement.new(element_name, self, locator, :section))
|
93
|
+
end
|
81
94
|
end
|
82
95
|
|
83
96
|
def self.elements(element_hash)
|
@@ -86,8 +99,17 @@ module TestCentricity
|
|
86
99
|
end
|
87
100
|
end
|
88
101
|
|
102
|
+
# def self.button(element_name, locator)
|
103
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppButton.new("#{element_name}", self, #{locator}, :section);end))
|
104
|
+
# end
|
105
|
+
|
89
106
|
def self.button(element_name, locator)
|
90
|
-
|
107
|
+
define_method(element_name) do
|
108
|
+
ivar_name = "@#{element_name}"
|
109
|
+
ivar = instance_variable_get(ivar_name)
|
110
|
+
return ivar if ivar
|
111
|
+
instance_variable_set(ivar_name, TestCentricity::AppButton.new(element_name, self, locator, :section))
|
112
|
+
end
|
91
113
|
end
|
92
114
|
|
93
115
|
def self.buttons(element_hash)
|
@@ -96,8 +118,17 @@ module TestCentricity
|
|
96
118
|
end
|
97
119
|
end
|
98
120
|
|
121
|
+
# def self.textfield(element_name, locator)
|
122
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppTextField.new("#{element_name}", self, #{locator}, :section);end))
|
123
|
+
# end
|
124
|
+
|
99
125
|
def self.textfield(element_name, locator)
|
100
|
-
|
126
|
+
define_method(element_name) do
|
127
|
+
ivar_name = "@#{element_name}"
|
128
|
+
ivar = instance_variable_get(ivar_name)
|
129
|
+
return ivar if ivar
|
130
|
+
instance_variable_set(ivar_name, TestCentricity::AppTextField.new(element_name, self, locator, :section))
|
131
|
+
end
|
101
132
|
end
|
102
133
|
|
103
134
|
def self.textfields(element_hash)
|
@@ -106,8 +137,17 @@ module TestCentricity
|
|
106
137
|
end
|
107
138
|
end
|
108
139
|
|
140
|
+
# def self.switch(element_name, locator)
|
141
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppSwitch.new("#{element_name}", self, #{locator}, :section);end))
|
142
|
+
# end
|
143
|
+
|
109
144
|
def self.switch(element_name, locator)
|
110
|
-
|
145
|
+
define_method(element_name) do
|
146
|
+
ivar_name = "@#{element_name}"
|
147
|
+
ivar = instance_variable_get(ivar_name)
|
148
|
+
return ivar if ivar
|
149
|
+
instance_variable_set(ivar_name, TestCentricity::AppSwitch.new(element_name, self, locator, :section))
|
150
|
+
end
|
111
151
|
end
|
112
152
|
|
113
153
|
def self.switches(element_hash)
|
@@ -116,8 +156,17 @@ module TestCentricity
|
|
116
156
|
end
|
117
157
|
end
|
118
158
|
|
159
|
+
# def self.checkbox(element_name, locator)
|
160
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppCheckBox.new("#{element_name}", self, #{locator}, :section);end))
|
161
|
+
# end
|
162
|
+
|
119
163
|
def self.checkbox(element_name, locator)
|
120
|
-
|
164
|
+
define_method(element_name) do
|
165
|
+
ivar_name = "@#{element_name}"
|
166
|
+
ivar = instance_variable_get(ivar_name)
|
167
|
+
return ivar if ivar
|
168
|
+
instance_variable_set(ivar_name, TestCentricity::AppCheckBox.new(element_name, self, locator, :section))
|
169
|
+
end
|
121
170
|
end
|
122
171
|
|
123
172
|
def self.checkboxes(element_hash)
|
@@ -126,8 +175,17 @@ module TestCentricity
|
|
126
175
|
end
|
127
176
|
end
|
128
177
|
|
178
|
+
# def self.label(element_name, locator)
|
179
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppLabel.new("#{element_name}", self, #{locator}, :section);end))
|
180
|
+
# end
|
181
|
+
|
129
182
|
def self.label(element_name, locator)
|
130
|
-
|
183
|
+
define_method(element_name) do
|
184
|
+
ivar_name = "@#{element_name}"
|
185
|
+
ivar = instance_variable_get(ivar_name)
|
186
|
+
return ivar if ivar
|
187
|
+
instance_variable_set(ivar_name, TestCentricity::AppLabel.new(element_name, self, locator, :section))
|
188
|
+
end
|
131
189
|
end
|
132
190
|
|
133
191
|
def self.labels(element_hash)
|
@@ -136,8 +194,17 @@ module TestCentricity
|
|
136
194
|
end
|
137
195
|
end
|
138
196
|
|
197
|
+
# def self.list(element_name, locator)
|
198
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppList.new("#{element_name}", self, #{locator}, :section);end))
|
199
|
+
# end
|
200
|
+
|
139
201
|
def self.list(element_name, locator)
|
140
|
-
|
202
|
+
define_method(element_name) do
|
203
|
+
ivar_name = "@#{element_name}"
|
204
|
+
ivar = instance_variable_get(ivar_name)
|
205
|
+
return ivar if ivar
|
206
|
+
instance_variable_set(ivar_name, TestCentricity::AppList.new(element_name, self, locator, :section))
|
207
|
+
end
|
141
208
|
end
|
142
209
|
|
143
210
|
def self.lists(element_hash)
|
@@ -146,8 +213,17 @@ module TestCentricity
|
|
146
213
|
end
|
147
214
|
end
|
148
215
|
|
216
|
+
# def self.selectlist(element_name, locator)
|
217
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppSelectList.new("#{element_name}", self, #{locator}, :section);end))
|
218
|
+
# end
|
219
|
+
|
149
220
|
def self.selectlist(element_name, locator)
|
150
|
-
|
221
|
+
define_method(element_name) do
|
222
|
+
ivar_name = "@#{element_name}"
|
223
|
+
ivar = instance_variable_get(ivar_name)
|
224
|
+
return ivar if ivar
|
225
|
+
instance_variable_set(ivar_name, TestCentricity::AppSelectList.new(element_name, self, locator, :section))
|
226
|
+
end
|
151
227
|
end
|
152
228
|
|
153
229
|
def self.selectlists(element_hash)
|
@@ -156,8 +232,17 @@ module TestCentricity
|
|
156
232
|
end
|
157
233
|
end
|
158
234
|
|
235
|
+
# def self.image(element_name, locator)
|
236
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppImage.new("#{element_name}", self, #{locator}, :section);end))
|
237
|
+
# end
|
238
|
+
|
159
239
|
def self.image(element_name, locator)
|
160
|
-
|
240
|
+
define_method(element_name) do
|
241
|
+
ivar_name = "@#{element_name}"
|
242
|
+
ivar = instance_variable_get(ivar_name)
|
243
|
+
return ivar if ivar
|
244
|
+
instance_variable_set(ivar_name, TestCentricity::AppImage.new(element_name, self, locator, :section))
|
245
|
+
end
|
161
246
|
end
|
162
247
|
|
163
248
|
def self.images(element_hash)
|
@@ -166,8 +251,17 @@ module TestCentricity
|
|
166
251
|
end
|
167
252
|
end
|
168
253
|
|
254
|
+
# def self.alert(element_name, locator)
|
255
|
+
# class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::AppAlert.new("#{element_name}", self, #{locator}, :page);end))
|
256
|
+
# end
|
257
|
+
|
169
258
|
def self.alert(element_name, locator)
|
170
|
-
|
259
|
+
define_method(element_name) do
|
260
|
+
ivar_name = "@#{element_name}"
|
261
|
+
ivar = instance_variable_get(ivar_name)
|
262
|
+
return ivar if ivar
|
263
|
+
instance_variable_set(ivar_name, TestCentricity::AppAlert.new(element_name, self, locator, :page))
|
264
|
+
end
|
171
265
|
end
|
172
266
|
|
173
267
|
def self.section(section_name, class_name, locator = 0)
|
@@ -103,8 +103,11 @@ module TestCentricity
|
|
103
103
|
obj.text
|
104
104
|
end
|
105
105
|
else
|
106
|
-
|
106
|
+
case obj.tag_name
|
107
|
+
when 'XCUIElementTypeNavigationBar'
|
107
108
|
obj.attribute('name')
|
109
|
+
when 'android.widget.TextView', 'android.widget.Button'
|
110
|
+
obj.text
|
108
111
|
else
|
109
112
|
obj.attribute('label')
|
110
113
|
end
|
@@ -332,6 +335,7 @@ module TestCentricity
|
|
332
335
|
obj
|
333
336
|
end
|
334
337
|
rescue
|
338
|
+
puts "Did not find parent object '#{@parent.get_name}' - #{@parent.get_locator}" if tries == 2 && ENV['DEBUG']
|
335
339
|
retry if (tries -= 1) > 0
|
336
340
|
nil
|
337
341
|
end
|
@@ -28,7 +28,12 @@ module TestCentricity
|
|
28
28
|
# element :siebel_busy, "//html[contains(@class, 'siebui-busy')]"
|
29
29
|
#
|
30
30
|
def self.element(element_name, locator)
|
31
|
-
|
31
|
+
define_method(element_name) do
|
32
|
+
ivar_name = "@#{element_name}"
|
33
|
+
ivar = instance_variable_get(ivar_name)
|
34
|
+
return ivar if ivar
|
35
|
+
instance_variable_set(ivar_name, TestCentricity::UIElement.new(element_name, self, locator, :page))
|
36
|
+
end
|
32
37
|
end
|
33
38
|
|
34
39
|
# Declare and instantiate a collection of generic UI Elements for this page object.
|
@@ -54,7 +59,12 @@ module TestCentricity
|
|
54
59
|
# button :login_button, "//input[@id='submit_button']"
|
55
60
|
#
|
56
61
|
def self.button(element_name, locator)
|
57
|
-
|
62
|
+
define_method(element_name) do
|
63
|
+
ivar_name = "@#{element_name}"
|
64
|
+
ivar = instance_variable_get(ivar_name)
|
65
|
+
return ivar if ivar
|
66
|
+
instance_variable_set(ivar_name, TestCentricity::Button.new(element_name, self, locator, :page))
|
67
|
+
end
|
58
68
|
end
|
59
69
|
|
60
70
|
# Declare and instantiate a collection of buttons for this page object.
|
@@ -80,7 +90,12 @@ module TestCentricity
|
|
80
90
|
# textfield :password_field, 'consumer_password'
|
81
91
|
#
|
82
92
|
def self.textfield(element_name, locator)
|
83
|
-
|
93
|
+
define_method(element_name) do
|
94
|
+
ivar_name = "@#{element_name}"
|
95
|
+
ivar = instance_variable_get(ivar_name)
|
96
|
+
return ivar if ivar
|
97
|
+
instance_variable_set(ivar_name, TestCentricity::TextField.new(element_name, self, locator, :page))
|
98
|
+
end
|
84
99
|
end
|
85
100
|
|
86
101
|
# Declare and instantiate a collection of text fields for this page object.
|
@@ -164,7 +179,12 @@ module TestCentricity
|
|
164
179
|
# label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"
|
165
180
|
#
|
166
181
|
def self.label(element_name, locator)
|
167
|
-
|
182
|
+
define_method(element_name) do
|
183
|
+
ivar_name = "@#{element_name}"
|
184
|
+
ivar = instance_variable_get(ivar_name)
|
185
|
+
return ivar if ivar
|
186
|
+
instance_variable_set(ivar_name, TestCentricity::Label.new(element_name, self, locator, :page))
|
187
|
+
end
|
168
188
|
end
|
169
189
|
|
170
190
|
def self.labels(element_hash)
|
@@ -182,7 +202,12 @@ module TestCentricity
|
|
182
202
|
# link :shopping_basket_link, "//a[@href='shopping_basket']"
|
183
203
|
#
|
184
204
|
def self.link(element_name, locator)
|
185
|
-
|
205
|
+
define_method(element_name) do
|
206
|
+
ivar_name = "@#{element_name}"
|
207
|
+
ivar = instance_variable_get(ivar_name)
|
208
|
+
return ivar if ivar
|
209
|
+
instance_variable_set(ivar_name, TestCentricity::Link.new(element_name, self, locator, :page))
|
210
|
+
end
|
186
211
|
end
|
187
212
|
|
188
213
|
def self.links(element_hash)
|
@@ -199,7 +224,12 @@ module TestCentricity
|
|
199
224
|
# table :payments_table, "//table[@class='payments_table']"
|
200
225
|
#
|
201
226
|
def self.table(element_name, locator)
|
202
|
-
|
227
|
+
define_method(element_name) do
|
228
|
+
ivar_name = "@#{element_name}"
|
229
|
+
ivar = instance_variable_get(ivar_name)
|
230
|
+
return ivar if ivar
|
231
|
+
instance_variable_set(ivar_name, TestCentricity::Table.new(element_name, self, locator, :page))
|
232
|
+
end
|
203
233
|
end
|
204
234
|
|
205
235
|
def self.tables(element_hash)
|
@@ -217,7 +247,12 @@ module TestCentricity
|
|
217
247
|
# selectlist :gender_select, "//select[@id='customer_gender']"
|
218
248
|
#
|
219
249
|
def self.selectlist(element_name, locator)
|
220
|
-
|
250
|
+
define_method(element_name) do
|
251
|
+
ivar_name = "@#{element_name}"
|
252
|
+
ivar = instance_variable_get(ivar_name)
|
253
|
+
return ivar if ivar
|
254
|
+
instance_variable_set(ivar_name, TestCentricity::SelectList.new(element_name, self, locator, :page))
|
255
|
+
end
|
221
256
|
end
|
222
257
|
|
223
258
|
def self.selectlists(element_hash)
|
@@ -234,7 +269,12 @@ module TestCentricity
|
|
234
269
|
# list :x_axis_list, 'g.x-axis'
|
235
270
|
#
|
236
271
|
def self.list(element_name, locator)
|
237
|
-
|
272
|
+
define_method(element_name) do
|
273
|
+
ivar_name = "@#{element_name}"
|
274
|
+
ivar = instance_variable_get(ivar_name)
|
275
|
+
return ivar if ivar
|
276
|
+
instance_variable_set(ivar_name, TestCentricity::List.new(element_name, self, locator, :page))
|
277
|
+
end
|
238
278
|
end
|
239
279
|
|
240
280
|
def self.lists(element_hash)
|
@@ -252,7 +292,12 @@ module TestCentricity
|
|
252
292
|
# image :corporate_logo_image, "//img[@alt='MyCompany_logo']"
|
253
293
|
#
|
254
294
|
def self.image(element_name, locator)
|
255
|
-
|
295
|
+
define_method(element_name) do
|
296
|
+
ivar_name = "@#{element_name}"
|
297
|
+
ivar = instance_variable_get(ivar_name)
|
298
|
+
return ivar if ivar
|
299
|
+
instance_variable_set(ivar_name, TestCentricity::Image.new(element_name, self, locator, :page))
|
300
|
+
end
|
256
301
|
end
|
257
302
|
|
258
303
|
def self.images(element_hash)
|
@@ -269,7 +314,12 @@ module TestCentricity
|
|
269
314
|
# filefield :attach_file, 's_SweFileName'
|
270
315
|
#
|
271
316
|
def self.filefield(element_name, locator)
|
272
|
-
|
317
|
+
define_method(element_name) do
|
318
|
+
ivar_name = "@#{element_name}"
|
319
|
+
ivar = instance_variable_get(ivar_name)
|
320
|
+
return ivar if ivar
|
321
|
+
instance_variable_set(ivar_name, TestCentricity::FileField.new(element_name, self, locator, :page))
|
322
|
+
end
|
273
323
|
end
|
274
324
|
|
275
325
|
def self.filefields(element_hash)
|
@@ -140,7 +140,12 @@ module TestCentricity
|
|
140
140
|
# element :basket_header, 'div.basket_header'
|
141
141
|
#
|
142
142
|
def self.element(element_name, locator)
|
143
|
-
|
143
|
+
define_method(element_name) do
|
144
|
+
ivar_name = "@#{element_name}"
|
145
|
+
ivar = instance_variable_get(ivar_name)
|
146
|
+
return ivar if ivar
|
147
|
+
instance_variable_set(ivar_name, TestCentricity::UIElement.new(element_name, self, locator, :section))
|
148
|
+
end
|
144
149
|
end
|
145
150
|
|
146
151
|
# Declare and instantiate a collection of generic UI Elements for this page section.
|
@@ -166,7 +171,12 @@ module TestCentricity
|
|
166
171
|
# button :login_button, "//input[@id='submit_button']"
|
167
172
|
#
|
168
173
|
def self.button(element_name, locator)
|
169
|
-
|
174
|
+
define_method(element_name) do
|
175
|
+
ivar_name = "@#{element_name}"
|
176
|
+
ivar = instance_variable_get(ivar_name)
|
177
|
+
return ivar if ivar
|
178
|
+
instance_variable_set(ivar_name, TestCentricity::Button.new(element_name, self, locator, :section))
|
179
|
+
end
|
170
180
|
end
|
171
181
|
|
172
182
|
# Declare and instantiate a collection of buttons for this page section.
|
@@ -192,7 +202,12 @@ module TestCentricity
|
|
192
202
|
# textfield :password_field, 'input#consumer_password'
|
193
203
|
#
|
194
204
|
def self.textfield(element_name, locator)
|
195
|
-
|
205
|
+
define_method(element_name) do
|
206
|
+
ivar_name = "@#{element_name}"
|
207
|
+
ivar = instance_variable_get(ivar_name)
|
208
|
+
return ivar if ivar
|
209
|
+
instance_variable_set(ivar_name, TestCentricity::TextField.new(element_name, self, locator, :section))
|
210
|
+
end
|
196
211
|
end
|
197
212
|
|
198
213
|
# Declare and instantiate a collection of text fields for this page section.
|
@@ -276,7 +291,12 @@ module TestCentricity
|
|
276
291
|
# label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"
|
277
292
|
#
|
278
293
|
def self.label(element_name, locator)
|
279
|
-
|
294
|
+
define_method(element_name) do
|
295
|
+
ivar_name = "@#{element_name}"
|
296
|
+
ivar = instance_variable_get(ivar_name)
|
297
|
+
return ivar if ivar
|
298
|
+
instance_variable_set(ivar_name, TestCentricity::Label.new(element_name, self, locator, :section))
|
299
|
+
end
|
280
300
|
end
|
281
301
|
|
282
302
|
def self.labels(element_hash)
|
@@ -294,7 +314,12 @@ module TestCentricity
|
|
294
314
|
# link :shopping_basket_link, "//a[@href='shopping_basket']"
|
295
315
|
#
|
296
316
|
def self.link(element_name, locator)
|
297
|
-
|
317
|
+
define_method(element_name) do
|
318
|
+
ivar_name = "@#{element_name}"
|
319
|
+
ivar = instance_variable_get(ivar_name)
|
320
|
+
return ivar if ivar
|
321
|
+
instance_variable_set(ivar_name, TestCentricity::Link.new(element_name, self, locator, :section))
|
322
|
+
end
|
298
323
|
end
|
299
324
|
|
300
325
|
def self.links(element_hash)
|
@@ -311,7 +336,12 @@ module TestCentricity
|
|
311
336
|
# table :payments_table, "//table[@class='payments_table']"
|
312
337
|
#
|
313
338
|
def self.table(element_name, locator)
|
314
|
-
|
339
|
+
define_method(element_name) do
|
340
|
+
ivar_name = "@#{element_name}"
|
341
|
+
ivar = instance_variable_get(ivar_name)
|
342
|
+
return ivar if ivar
|
343
|
+
instance_variable_set(ivar_name, TestCentricity::Table.new(element_name, self, locator, :section))
|
344
|
+
end
|
315
345
|
end
|
316
346
|
|
317
347
|
def self.tables(element_hash)
|
@@ -329,7 +359,12 @@ module TestCentricity
|
|
329
359
|
# selectlist :gender_select, "//select[@id='customer_gender']"
|
330
360
|
#
|
331
361
|
def self.selectlist(element_name, locator)
|
332
|
-
|
362
|
+
define_method(element_name) do
|
363
|
+
ivar_name = "@#{element_name}"
|
364
|
+
ivar = instance_variable_get(ivar_name)
|
365
|
+
return ivar if ivar
|
366
|
+
instance_variable_set(ivar_name, TestCentricity::SelectList.new(element_name, self, locator, :section))
|
367
|
+
end
|
333
368
|
end
|
334
369
|
|
335
370
|
def self.selectlists(element_hash)
|
@@ -346,7 +381,12 @@ module TestCentricity
|
|
346
381
|
# list :y_axis_list, 'g.y_axis'
|
347
382
|
#
|
348
383
|
def self.list(element_name, locator)
|
349
|
-
|
384
|
+
define_method(element_name) do
|
385
|
+
ivar_name = "@#{element_name}"
|
386
|
+
ivar = instance_variable_get(ivar_name)
|
387
|
+
return ivar if ivar
|
388
|
+
instance_variable_set(ivar_name, TestCentricity::List.new(element_name, self, locator, :section))
|
389
|
+
end
|
350
390
|
end
|
351
391
|
|
352
392
|
def self.lists(element_hash)
|
@@ -364,7 +404,12 @@ module TestCentricity
|
|
364
404
|
# image :corporate_logo_image, "//img[@alt='MyCompany_logo']"
|
365
405
|
#
|
366
406
|
def self.image(element_name, locator)
|
367
|
-
|
407
|
+
define_method(element_name) do
|
408
|
+
ivar_name = "@#{element_name}"
|
409
|
+
ivar = instance_variable_get(ivar_name)
|
410
|
+
return ivar if ivar
|
411
|
+
instance_variable_set(ivar_name, TestCentricity::Image.new(element_name, self, locator, :section))
|
412
|
+
end
|
368
413
|
end
|
369
414
|
|
370
415
|
def self.images(element_hash)
|
@@ -381,7 +426,12 @@ module TestCentricity
|
|
381
426
|
# filefield :attach_file, 's_SweFileName'
|
382
427
|
#
|
383
428
|
def self.filefield(element_name, locator)
|
384
|
-
|
429
|
+
define_method(element_name) do
|
430
|
+
ivar_name = "@#{element_name}"
|
431
|
+
ivar = instance_variable_get(ivar_name)
|
432
|
+
return ivar if ivar
|
433
|
+
instance_variable_set(ivar_name, TestCentricity::FileField.new(element_name, self, locator, :section))
|
434
|
+
end
|
385
435
|
end
|
386
436
|
|
387
437
|
def self.filefields(element_hash)
|
@@ -877,5 +927,6 @@ module TestCentricity
|
|
877
927
|
def section_not_found_exception(section)
|
878
928
|
raise ObjectNotFoundError.new("Section object '#{get_name}' (#{get_locator}) not found") unless section
|
879
929
|
end
|
930
|
+
|
880
931
|
end
|
881
932
|
end
|
@@ -2,13 +2,15 @@ module TestCentricity
|
|
2
2
|
class SelectList < UIElement
|
3
3
|
attr_accessor :list_item
|
4
4
|
attr_accessor :selected_item
|
5
|
+
attr_accessor :list_trigger
|
5
6
|
|
6
7
|
def initialize(name, parent, locator, context)
|
7
8
|
super
|
8
9
|
@type = :selectlist
|
9
10
|
list_spec = {
|
10
|
-
:list_item => '
|
11
|
-
:selected_item => '
|
11
|
+
:list_item => "li[class*='active-result']",
|
12
|
+
:selected_item => "li[class*='result-selected']",
|
13
|
+
:list_trigger => nil
|
12
14
|
}
|
13
15
|
define_list_elements(list_spec)
|
14
16
|
end
|
@@ -16,12 +18,14 @@ module TestCentricity
|
|
16
18
|
def define_list_elements(element_spec)
|
17
19
|
element_spec.each do |element, value|
|
18
20
|
case element
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
when :list_item
|
22
|
+
@list_item = value
|
23
|
+
when :selected_item
|
24
|
+
@selected_item = value
|
25
|
+
when :list_trigger
|
26
|
+
@list_trigger = value
|
27
|
+
else
|
28
|
+
raise "#{element} is not a recognized selectlist element"
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
@@ -42,19 +46,26 @@ module TestCentricity
|
|
42
46
|
def choose_option(option)
|
43
47
|
obj, = find_element
|
44
48
|
object_not_found_exception(obj, nil)
|
45
|
-
|
46
|
-
|
49
|
+
if @list_trigger.nil?
|
50
|
+
obj.click
|
51
|
+
else
|
52
|
+
page.find(:css, @list_trigger).click
|
53
|
+
sleep(1)
|
54
|
+
end
|
55
|
+
if first(:css, @list_item)
|
47
56
|
if option.is_a?(Array)
|
48
57
|
option.each do |item|
|
49
|
-
page.find(:css,
|
58
|
+
page.find(:css, @list_item, text: item.strip).click
|
50
59
|
end
|
51
60
|
else
|
52
61
|
if option.is_a?(Hash)
|
53
|
-
page.find(:css, "
|
62
|
+
page.find(:css, "#{@list_item}:nth-of-type(#{option[:index]})").click if option.has_key?(:index)
|
63
|
+
page.find(:css, "#{@list_item}:nth-of-type(#{option[:value]})").click if option.has_key?(:value)
|
64
|
+
page.find(:css, "#{@list_item}:nth-of-type(#{option[:text]})").click if option.has_key?(:text)
|
54
65
|
else
|
55
|
-
options = obj.all(
|
66
|
+
options = obj.all(@list_item).collect(&:text)
|
56
67
|
sleep(2) unless options.include?(option)
|
57
|
-
first(:css,
|
68
|
+
first(:css, @list_item, text: option).click
|
58
69
|
end
|
59
70
|
end
|
60
71
|
else
|
@@ -78,10 +89,10 @@ module TestCentricity
|
|
78
89
|
def get_options
|
79
90
|
obj, = find_element
|
80
91
|
object_not_found_exception(obj, nil)
|
81
|
-
if first(:css,
|
82
|
-
obj.all("li[class*='active-result']").collect(&:text)
|
83
|
-
else
|
92
|
+
if first(:css, @list_item)
|
84
93
|
obj.all(@list_item).collect(&:text)
|
94
|
+
else
|
95
|
+
obj.all('option').collect(&:text)
|
85
96
|
end
|
86
97
|
end
|
87
98
|
|
@@ -97,10 +108,10 @@ module TestCentricity
|
|
97
108
|
def get_option_count
|
98
109
|
obj, = find_element
|
99
110
|
object_not_found_exception(obj, nil)
|
100
|
-
if first(:css,
|
101
|
-
obj.all("li[class*='active-result']").count
|
102
|
-
else
|
111
|
+
if first(:css, @list_item)
|
103
112
|
obj.all(@list_item).count
|
113
|
+
else
|
114
|
+
obj.all('option').count
|
104
115
|
end
|
105
116
|
end
|
106
117
|
|
@@ -123,10 +134,10 @@ module TestCentricity
|
|
123
134
|
def get_selected_option
|
124
135
|
obj, = find_element
|
125
136
|
object_not_found_exception(obj, nil)
|
126
|
-
if first(:css,
|
127
|
-
obj.first(:css,
|
137
|
+
if first(:css, @list_item)
|
138
|
+
obj.first(:css, @selected_item).text
|
128
139
|
else
|
129
|
-
obj.first(
|
140
|
+
obj.first('option[selected]').text
|
130
141
|
end
|
131
142
|
end
|
132
143
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- A.J. Mrozinski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|