testcentricity 2.3.17 → 2.3.18
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.
- 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
|