testcentricity 2.4.1 → 2.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf8df99002fffdad6e8c19cb1876b94eafd25de5
4
- data.tar.gz: 712b44489736893404dfd43fea536e597b9d16e5
3
+ metadata.gz: ba8bb419286dffb3e7f9cf89b8dc5aa6744870d4
4
+ data.tar.gz: 3b5886e903439cb5755a211a6aa75f799b267c9e
5
5
  SHA512:
6
- metadata.gz: 8823c6bb677e8e9d5a3a6b3887de392633a90ed95ce4357f3688c3304bdbba75347c819200b78dfb2398b30dccc3bec1e10056c02b703f7d27665ab28c7eeb65
7
- data.tar.gz: 53cd51a09cdcb77996a7e0fc4113802f0e1e3ad0ec3d1452f26c85623ec7aec04b94e93dfea8cd3b60aee12d0f42071a15ccc0e91ed566bb4b2f1f79cf3e09a4
6
+ metadata.gz: 79d250c941affcdbf496fe2c646fe9f963a911c5e7c49f43f84f0135a67421e739ac36a5168d5a0a7e2e90d31d9d2a5ee4711bc5e11447c1905d3086beccbae5
7
+ data.tar.gz: 484ff58e76a7a0a549a5f4ad2695915f0a3598aa16df7bfbe5a667471a4a118fdb4639d05ff7bcd0609bbd8e360a85da9b7298926397f3fec82b56c4905ce0da
data/README.md CHANGED
@@ -925,6 +925,7 @@ the `WEB_BROWSER` Environment Variable must be set to one of the values from the
925
925
  `ipad_pro_10_5` |`chrome` |1112 x 834 |landscape |iOS 11
926
926
  `ipad_chrome` |`chrome` |1024 x 768 |landscape |iOS 10 - Mobile Chrome browser for iOS
927
927
  `ipad_firefox` |`chrome` |1024 x 768 |landscape |iOS 10 - Mobile Firefox browser for iOS
928
+ `ipad_edge` |`chrome` |1024 x 768 |landscape |iOS 10 - Mobile Edge browser for iOS
928
929
  `android_tablet` |`chrome` |1024 x 768 |landscape |Android 3.0
929
930
  `kindle_fire` |`chrome` |1024 x 600 |landscape |
930
931
  `kindle_firehd7` |`chrome` |800 x 480 |landscape |Fire OS 3
@@ -1226,6 +1227,7 @@ service(s) that you intend to connect with.
1226
1227
  ipad_pro_10_5: WEB_BROWSER=ipad_pro_10_5 HOST_BROWSER=chrome <%= mobile %>
1227
1228
  ipad_chrome: WEB_BROWSER=ipad_chrome HOST_BROWSER=chrome <%= mobile %>
1228
1229
  ipad_firefox: WEB_BROWSER=ipad_firefox HOST_BROWSER=chrome <%= mobile %>
1230
+ ipad_edge: WEB_BROWSER=ipad_edge HOST_BROWSER=chrome <%= mobile %>
1229
1231
  iphone: WEB_BROWSER=iphone HOST_BROWSER=chrome <%= mobile %>
1230
1232
  iphone4: WEB_BROWSER=iphone4 HOST_BROWSER=chrome <%= mobile %>
1231
1233
  iphone5: WEB_BROWSER=iphone5 HOST_BROWSER=chrome <%= mobile %>
@@ -36,73 +36,9 @@ module TestCentricity
36
36
  browser = ENV['WEB_BROWSER']
37
37
  case browser.downcase.to_sym
38
38
  when :appium
39
- desired_capabilities = {
40
- caps: {
41
- platformName: ENV['APP_PLATFORM_NAME'],
42
- platformVersion: ENV['APP_VERSION'],
43
- deviceName: ENV['APP_DEVICE'],
44
- automationName: ENV['AUTOMATION_ENGINE']
45
- }
46
- }
47
- capabilities = desired_capabilities[:caps]
48
- capabilities[:avd] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
49
- capabilities[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
50
- capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
51
- capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
52
- capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
53
- capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
54
- capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
55
- capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
56
- capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
57
- capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
58
- capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
59
- capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
60
- capabilities[:startIWDP] = ENV['START_IWDP'] if ENV['START_IWDP']
61
- capabilities[:autoWebview] = ENV['AUTO_WEBVIEW'] if ENV['AUTO_WEBVIEW']
62
- capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
63
- capabilities[:autoWebviewTimeout] = ENV['AUTO_WEBVIEW_TIMEOUT'] if ENV['AUTO_WEBVIEW_TIMEOUT']
64
-
65
- if ENV['UDID']
66
- capabilities[:udid] = ENV['UDID']
67
- capabilities[:bundleId] = ENV['BUNDLE_ID'] if ENV['BUNDLE_ID']
68
- capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
69
- capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
70
- capabilities[:appActivity] = ENV['APP_ACTIVITY'] if ENV['APP_ACTIVITY']
71
- capabilities[:appPackage] = ENV['APP_PACKAGE'] if ENV['APP_PACKAGE']
72
- end
73
-
74
- if ENV['APP']
75
- capabilities[:app] = ENV['APP']
76
- else
77
- if Environ.is_android?
78
- capabilities[:app] = Environ.current.android_apk_path
79
- elsif Environ.is_ios?
80
- Environ.is_device? ?
81
- capabilities[:app] = Environ.current.ios_ipa_path :
82
- capabilities[:app] = Environ.current.ios_app_path
83
- end
84
- end
39
+ desired_capabilities = appium_local_capabilities
85
40
  when :browserstack
86
- endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub"
87
-
88
- capabilities = {}
89
- capabilities['device'] = ENV['BS_DEVICE']
90
- capabilities['os_version'] = ENV['BS_OS_VERSION']
91
- capabilities['app'] = "bs://#{ENV['APP_URL']}" if ENV['APP_URL']
92
- capabilities['app'] = ENV['APP_ID'] if ENV['APP_ID']
93
- capabilities['realMobile'] = true
94
- capabilities['project'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
95
- capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
96
- capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
97
- capabilities['browserstack.debug'] = true
98
- capabilities['browserstack.video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
99
- capabilities['browserstack.debug'] = 'true'
100
-
101
- appium_lib_options = { server_url: endpoint }
102
- desired_capabilities = {
103
- appium_lib: appium_lib_options,
104
- caps: capabilities
105
- }
41
+ desired_capabilities = browserstack_capabilities
106
42
  end
107
43
  else
108
44
  base_path = 'config'
@@ -215,6 +151,82 @@ module TestCentricity
215
151
  set_context(contexts.last)
216
152
  puts "Current context = #{$driver.current_context}" if ENV['DEBUG']
217
153
  end
154
+
155
+ private
156
+
157
+ def self.appium_local_capabilities
158
+ desired_capabilities = {
159
+ caps: {
160
+ platformName: ENV['APP_PLATFORM_NAME'],
161
+ platformVersion: ENV['APP_VERSION'],
162
+ deviceName: ENV['APP_DEVICE'],
163
+ automationName: ENV['AUTOMATION_ENGINE']
164
+ }
165
+ }
166
+ capabilities = desired_capabilities[:caps]
167
+ capabilities[:avd] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
168
+ capabilities[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
169
+ capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
170
+ capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
171
+ capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
172
+ capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
173
+ capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
174
+ capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
175
+ capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
176
+ capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
177
+ capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
178
+ capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
179
+ capabilities[:startIWDP] = ENV['START_IWDP'] if ENV['START_IWDP']
180
+ capabilities[:autoWebview] = ENV['AUTO_WEBVIEW'] if ENV['AUTO_WEBVIEW']
181
+ capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
182
+ capabilities[:autoWebviewTimeout] = ENV['AUTO_WEBVIEW_TIMEOUT'] if ENV['AUTO_WEBVIEW_TIMEOUT']
183
+
184
+ if ENV['UDID']
185
+ capabilities[:udid] = ENV['UDID']
186
+ capabilities[:bundleId] = ENV['BUNDLE_ID'] if ENV['BUNDLE_ID']
187
+ capabilities[:xcodeOrgId] = ENV['TEAM_ID'] if ENV['TEAM_ID']
188
+ capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
189
+ capabilities[:appActivity] = ENV['APP_ACTIVITY'] if ENV['APP_ACTIVITY']
190
+ capabilities[:appPackage] = ENV['APP_PACKAGE'] if ENV['APP_PACKAGE']
191
+ end
192
+
193
+ if ENV['APP']
194
+ capabilities[:app] = ENV['APP']
195
+ else
196
+ if Environ.is_android?
197
+ capabilities[:app] = Environ.current.android_apk_path
198
+ elsif Environ.is_ios?
199
+ Environ.is_device? ?
200
+ capabilities[:app] = Environ.current.ios_ipa_path :
201
+ capabilities[:app] = Environ.current.ios_app_path
202
+ end
203
+ end
204
+ desired_capabilities
205
+ end
206
+
207
+ def self.browserstack_capabilities
208
+ endpoint = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub-cloud.browserstack.com/wd/hub"
209
+
210
+ capabilities = {}
211
+ capabilities['device'] = ENV['BS_DEVICE']
212
+ capabilities['os_version'] = ENV['BS_OS_VERSION']
213
+ capabilities['app'] = "bs://#{ENV['APP_URL']}" if ENV['APP_URL']
214
+ capabilities['app'] = ENV['APP_ID'] if ENV['APP_ID']
215
+ capabilities['realMobile'] = true
216
+ capabilities['project'] = ENV['AUTOMATE_PROJECT'] if ENV['AUTOMATE_PROJECT']
217
+ capabilities['build'] = ENV['AUTOMATE_BUILD'] if ENV['AUTOMATE_BUILD']
218
+ capabilities['deviceOrientation'] = ENV['ORIENTATION'] if ENV['ORIENTATION']
219
+ capabilities['browserstack.debug'] = true
220
+ capabilities['browserstack.video'] = ENV['RECORD_VIDEO'] if ENV['RECORD_VIDEO']
221
+ capabilities['browserstack.debug'] = 'true'
222
+
223
+ appium_lib_options = { server_url: endpoint }
224
+ desired_capabilities = {
225
+ appium_lib: appium_lib_options,
226
+ caps: capabilities
227
+ }
228
+ desired_capabilities
229
+ end
218
230
  end
219
231
  end
220
232
 
@@ -15,17 +15,8 @@ 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
-
22
18
  def self.element(element_name, locator)
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
19
+ define_page_element(element_name, TestCentricity::AppUIElement, locator)
29
20
  end
30
21
 
31
22
  def self.elements(element_hash)
@@ -34,17 +25,8 @@ module TestCentricity
34
25
  end
35
26
  end
36
27
 
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
-
41
28
  def self.button(element_name, locator)
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
29
+ define_page_element(element_name, TestCentricity::AppButton, locator)
48
30
  end
49
31
 
50
32
  def self.buttons(element_hash)
@@ -53,17 +35,8 @@ module TestCentricity
53
35
  end
54
36
  end
55
37
 
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
-
60
38
  def self.textfield(element_name, locator)
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
39
+ define_page_element(element_name, TestCentricity::AppTextField, locator)
67
40
  end
68
41
 
69
42
  def self.textfields(element_hash)
@@ -72,17 +45,8 @@ module TestCentricity
72
45
  end
73
46
  end
74
47
 
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
-
79
48
  def self.switch(element_name, locator)
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
49
+ define_page_element(element_name, TestCentricity::AppSwitch, locator)
86
50
  end
87
51
 
88
52
  def self.switches(element_hash)
@@ -91,17 +55,8 @@ module TestCentricity
91
55
  end
92
56
  end
93
57
 
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
-
98
58
  def self.checkbox(element_name, locator)
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
59
+ define_page_element(element_name, TestCentricity::AppCheckBox, locator)
105
60
  end
106
61
 
107
62
  def self.checkboxes(element_hash)
@@ -110,17 +65,8 @@ module TestCentricity
110
65
  end
111
66
  end
112
67
 
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
-
117
68
  def self.label(element_name, locator)
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
69
+ define_page_element(element_name, TestCentricity::AppLabel, locator)
124
70
  end
125
71
 
126
72
  def self.labels(element_hash)
@@ -129,17 +75,8 @@ module TestCentricity
129
75
  end
130
76
  end
131
77
 
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
-
136
78
  def self.list(element_name, locator)
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
79
+ define_page_element(element_name, TestCentricity::AppList, locator)
143
80
  end
144
81
 
145
82
  def self.lists(element_hash)
@@ -148,17 +85,8 @@ module TestCentricity
148
85
  end
149
86
  end
150
87
 
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
-
155
88
  def self.selectlist(element_name, locator)
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
89
+ define_page_element(element_name, TestCentricity::AppSelectList, locator)
162
90
  end
163
91
 
164
92
  def self.selectlists(element_hash)
@@ -167,17 +95,8 @@ module TestCentricity
167
95
  end
168
96
  end
169
97
 
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
-
174
98
  def self.image(element_name, locator)
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
99
+ define_page_element(element_name, TestCentricity::AppImage, locator)
181
100
  end
182
101
 
183
102
  def self.images(element_hash)
@@ -186,21 +105,12 @@ module TestCentricity
186
105
  end
187
106
  end
188
107
 
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
-
193
108
  def self.alert(element_name, locator)
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
109
+ define_page_element(element_name, TestCentricity::AppAlert, locator)
200
110
  end
201
111
 
202
- def self.section(section_name, class_name, locator = 0)
203
- class_eval(%(def #{section_name};@#{section_name} ||= #{class_name}.new("#{section_name}", self, #{locator}, :page);end))
112
+ def self.section(section_name, obj, locator = 0)
113
+ define_page_element(section_name, obj, locator)
204
114
  end
205
115
 
206
116
  def self.sections(section_hash)
@@ -344,5 +254,16 @@ module TestCentricity
344
254
  end
345
255
  end
346
256
  end
257
+
258
+ private
259
+
260
+ def self.define_page_element(element_name, obj, locator)
261
+ define_method(element_name) do
262
+ ivar_name = "@#{element_name}"
263
+ ivar = instance_variable_get(ivar_name)
264
+ return ivar if ivar
265
+ instance_variable_set(ivar_name, obj.new(element_name, self, locator, :page))
266
+ end
267
+ end
347
268
  end
348
269
  end
@@ -80,17 +80,8 @@ module TestCentricity
80
80
  define_method(trait_name.to_s, &block)
81
81
  end
82
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
-
87
83
  def self.element(element_name, locator)
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
84
+ define_element(element_name, TestCentricity::AppUIElement, locator)
94
85
  end
95
86
 
96
87
  def self.elements(element_hash)
@@ -99,17 +90,8 @@ module TestCentricity
99
90
  end
100
91
  end
101
92
 
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
-
106
93
  def self.button(element_name, locator)
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
94
+ define_element(element_name, TestCentricity::AppButton, locator)
113
95
  end
114
96
 
115
97
  def self.buttons(element_hash)
@@ -118,17 +100,8 @@ module TestCentricity
118
100
  end
119
101
  end
120
102
 
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
-
125
103
  def self.textfield(element_name, locator)
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
104
+ define_element(element_name, TestCentricity::AppTextField, locator)
132
105
  end
133
106
 
134
107
  def self.textfields(element_hash)
@@ -137,17 +110,8 @@ module TestCentricity
137
110
  end
138
111
  end
139
112
 
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
-
144
113
  def self.switch(element_name, locator)
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
114
+ define_element(element_name, TestCentricity::AppSwitch, locator)
151
115
  end
152
116
 
153
117
  def self.switches(element_hash)
@@ -156,17 +120,8 @@ module TestCentricity
156
120
  end
157
121
  end
158
122
 
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
-
163
123
  def self.checkbox(element_name, locator)
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
124
+ define_element(element_name, TestCentricity::AppCheckBox, locator)
170
125
  end
171
126
 
172
127
  def self.checkboxes(element_hash)
@@ -175,17 +130,8 @@ module TestCentricity
175
130
  end
176
131
  end
177
132
 
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
-
182
133
  def self.label(element_name, locator)
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
134
+ define_element(element_name, TestCentricity::AppLabel, locator)
189
135
  end
190
136
 
191
137
  def self.labels(element_hash)
@@ -194,17 +140,8 @@ module TestCentricity
194
140
  end
195
141
  end
196
142
 
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
-
201
143
  def self.list(element_name, locator)
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
144
+ define_element(element_name, TestCentricity::AppList, locator)
208
145
  end
209
146
 
210
147
  def self.lists(element_hash)
@@ -213,17 +150,8 @@ module TestCentricity
213
150
  end
214
151
  end
215
152
 
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
-
220
153
  def self.selectlist(element_name, locator)
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
154
+ define_element(element_name, TestCentricity::AppSelectList, locator)
227
155
  end
228
156
 
229
157
  def self.selectlists(element_hash)
@@ -232,17 +160,8 @@ module TestCentricity
232
160
  end
233
161
  end
234
162
 
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
-
239
163
  def self.image(element_name, locator)
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
164
+ define_element(element_name, TestCentricity::AppImage, locator)
246
165
  end
247
166
 
248
167
  def self.images(element_hash)
@@ -251,10 +170,6 @@ module TestCentricity
251
170
  end
252
171
  end
253
172
 
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
-
258
173
  def self.alert(element_name, locator)
259
174
  define_method(element_name) do
260
175
  ivar_name = "@#{element_name}"
@@ -264,8 +179,8 @@ module TestCentricity
264
179
  end
265
180
  end
266
181
 
267
- def self.section(section_name, class_name, locator = 0)
268
- class_eval(%(def #{section_name};@#{section_name} ||= #{class_name}.new("#{section_name}", self, #{locator}, :section);end))
182
+ def self.section(section_name, obj, locator = 0)
183
+ define_element(section_name, obj, locator)
269
184
  end
270
185
 
271
186
  def self.sections(section_hash)
@@ -487,5 +402,14 @@ module TestCentricity
487
402
  def section_not_found_exception(obj)
488
403
  raise ObjectNotFoundError.new("Section object '#{get_name}' (#{get_locator}) not found") unless obj
489
404
  end
405
+
406
+ def self.define_element(element_name, obj, locator)
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, obj.new(element_name, self, locator, :section))
412
+ end
413
+ end
490
414
  end
491
415
  end
@@ -1,3 +1,3 @@
1
1
  module TestCentricity
2
- VERSION = '2.4.1'
2
+ VERSION = '2.4.2'
3
3
  end
@@ -28,12 +28,7 @@ module TestCentricity
28
28
  # element :siebel_busy, "//html[contains(@class, 'siebui-busy')]"
29
29
  #
30
30
  def self.element(element_name, locator)
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
31
+ define_page_element(element_name, TestCentricity::UIElement, locator)
37
32
  end
38
33
 
39
34
  # Declare and instantiate a collection of generic UI Elements for this page object.
@@ -59,12 +54,7 @@ module TestCentricity
59
54
  # button :login_button, "//input[@id='submit_button']"
60
55
  #
61
56
  def self.button(element_name, locator)
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
57
+ define_page_element(element_name, TestCentricity::Button, locator)
68
58
  end
69
59
 
70
60
  # Declare and instantiate a collection of buttons for this page object.
@@ -90,12 +80,7 @@ module TestCentricity
90
80
  # textfield :password_field, 'consumer_password'
91
81
  #
92
82
  def self.textfield(element_name, locator)
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
83
+ define_page_element(element_name, TestCentricity::TextField, locator)
99
84
  end
100
85
 
101
86
  # Declare and instantiate a collection of text fields for this page object.
@@ -179,12 +164,7 @@ module TestCentricity
179
164
  # label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"
180
165
  #
181
166
  def self.label(element_name, locator)
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
167
+ define_page_element(element_name, TestCentricity::Label, locator)
188
168
  end
189
169
 
190
170
  def self.labels(element_hash)
@@ -202,12 +182,7 @@ module TestCentricity
202
182
  # link :shopping_basket_link, "//a[@href='shopping_basket']"
203
183
  #
204
184
  def self.link(element_name, locator)
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
185
+ define_page_element(element_name, TestCentricity::Link, locator)
211
186
  end
212
187
 
213
188
  def self.links(element_hash)
@@ -224,12 +199,7 @@ module TestCentricity
224
199
  # table :payments_table, "//table[@class='payments_table']"
225
200
  #
226
201
  def self.table(element_name, locator)
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
202
+ define_page_element(element_name, TestCentricity::Table, locator)
233
203
  end
234
204
 
235
205
  def self.tables(element_hash)
@@ -247,12 +217,7 @@ module TestCentricity
247
217
  # selectlist :gender_select, "//select[@id='customer_gender']"
248
218
  #
249
219
  def self.selectlist(element_name, locator)
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
220
+ define_page_element(element_name, TestCentricity::SelectList, locator)
256
221
  end
257
222
 
258
223
  def self.selectlists(element_hash)
@@ -269,12 +234,7 @@ module TestCentricity
269
234
  # list :x_axis_list, 'g.x-axis'
270
235
  #
271
236
  def self.list(element_name, locator)
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
237
+ define_page_element(element_name, TestCentricity::List, locator)
278
238
  end
279
239
 
280
240
  def self.lists(element_hash)
@@ -292,12 +252,7 @@ module TestCentricity
292
252
  # image :corporate_logo_image, "//img[@alt='MyCompany_logo']"
293
253
  #
294
254
  def self.image(element_name, locator)
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
255
+ define_page_element(element_name, TestCentricity::Image, locator)
301
256
  end
302
257
 
303
258
  def self.images(element_hash)
@@ -314,12 +269,7 @@ module TestCentricity
314
269
  # filefield :attach_file, 's_SweFileName'
315
270
  #
316
271
  def self.filefield(element_name, locator)
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
272
+ define_page_element(element_name, TestCentricity::FileField, locator)
323
273
  end
324
274
 
325
275
  def self.filefields(element_hash)
@@ -426,8 +376,13 @@ module TestCentricity
426
376
  # @example
427
377
  # section :search_form, SearchForm
428
378
  #
429
- def self.section(section_name, class_name, locator = nil)
430
- class_eval(%(def #{section_name};@#{section_name} ||= #{class_name}.new("#{section_name}", self, "#{locator}", :page);end))
379
+ def self.section(section_name, obj, locator = nil)
380
+ define_method(section_name) do
381
+ ivar_name = "@#{section_name}"
382
+ ivar = instance_variable_get(ivar_name)
383
+ return ivar if ivar
384
+ instance_variable_set(ivar_name, obj.new(section_name, self, "#{locator}", :page))
385
+ end
431
386
  end
432
387
 
433
388
  def self.sections(section_hash)
@@ -707,5 +662,16 @@ module TestCentricity
707
662
  end
708
663
  end
709
664
  end
665
+
666
+ private
667
+
668
+ def self.define_page_element(element_name, obj, locator)
669
+ define_method(element_name) do
670
+ ivar_name = "@#{element_name}"
671
+ ivar = instance_variable_get(ivar_name)
672
+ return ivar if ivar
673
+ instance_variable_set(ivar_name, obj.new(element_name, self, locator, :page))
674
+ end
675
+ end
710
676
  end
711
677
  end
@@ -140,12 +140,7 @@ module TestCentricity
140
140
  # element :basket_header, 'div.basket_header'
141
141
  #
142
142
  def self.element(element_name, locator)
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
143
+ define_element(element_name, TestCentricity::UIElement, locator)
149
144
  end
150
145
 
151
146
  # Declare and instantiate a collection of generic UI Elements for this page section.
@@ -171,12 +166,7 @@ module TestCentricity
171
166
  # button :login_button, "//input[@id='submit_button']"
172
167
  #
173
168
  def self.button(element_name, locator)
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
169
+ define_element(element_name, TestCentricity::Button, locator)
180
170
  end
181
171
 
182
172
  # Declare and instantiate a collection of buttons for this page section.
@@ -202,12 +192,7 @@ module TestCentricity
202
192
  # textfield :password_field, 'input#consumer_password'
203
193
  #
204
194
  def self.textfield(element_name, locator)
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
195
+ define_element(element_name, TestCentricity::TextField, locator)
211
196
  end
212
197
 
213
198
  # Declare and instantiate a collection of text fields for this page section.
@@ -291,12 +276,7 @@ module TestCentricity
291
276
  # label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"
292
277
  #
293
278
  def self.label(element_name, locator)
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
279
+ define_element(element_name, TestCentricity::Label, locator)
300
280
  end
301
281
 
302
282
  def self.labels(element_hash)
@@ -314,12 +294,7 @@ module TestCentricity
314
294
  # link :shopping_basket_link, "//a[@href='shopping_basket']"
315
295
  #
316
296
  def self.link(element_name, locator)
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
297
+ define_element(element_name, TestCentricity::Link, locator)
323
298
  end
324
299
 
325
300
  def self.links(element_hash)
@@ -336,12 +311,7 @@ module TestCentricity
336
311
  # table :payments_table, "//table[@class='payments_table']"
337
312
  #
338
313
  def self.table(element_name, locator)
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
314
+ define_element(element_name, TestCentricity::Table, locator)
345
315
  end
346
316
 
347
317
  def self.tables(element_hash)
@@ -359,12 +329,7 @@ module TestCentricity
359
329
  # selectlist :gender_select, "//select[@id='customer_gender']"
360
330
  #
361
331
  def self.selectlist(element_name, locator)
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
332
+ define_element(element_name, TestCentricity::SelectList, locator)
368
333
  end
369
334
 
370
335
  def self.selectlists(element_hash)
@@ -381,12 +346,7 @@ module TestCentricity
381
346
  # list :y_axis_list, 'g.y_axis'
382
347
  #
383
348
  def self.list(element_name, locator)
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
349
+ define_element(element_name, TestCentricity::List, locator)
390
350
  end
391
351
 
392
352
  def self.lists(element_hash)
@@ -404,12 +364,7 @@ module TestCentricity
404
364
  # image :corporate_logo_image, "//img[@alt='MyCompany_logo']"
405
365
  #
406
366
  def self.image(element_name, locator)
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
367
+ define_element(element_name, TestCentricity::Image, locator)
413
368
  end
414
369
 
415
370
  def self.images(element_hash)
@@ -426,12 +381,7 @@ module TestCentricity
426
381
  # filefield :attach_file, 's_SweFileName'
427
382
  #
428
383
  def self.filefield(element_name, locator)
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
384
+ define_element(element_name, TestCentricity::FileField, locator)
435
385
  end
436
386
 
437
387
  def self.filefields(element_hash)
@@ -538,8 +488,13 @@ module TestCentricity
538
488
  # @example
539
489
  # section :search_form, SearchForm
540
490
  #
541
- def self.section(section_name, class_name, locator = nil)
542
- class_eval(%(def #{section_name};@#{section_name} ||= #{class_name}.new("#{section_name}", self, "#{locator}", :section);end))
491
+ def self.section(section_name, obj, locator = nil)
492
+ define_method(section_name) do
493
+ ivar_name = "@#{section_name}"
494
+ ivar = instance_variable_get(ivar_name)
495
+ return ivar if ivar
496
+ instance_variable_set(ivar_name, obj.new(section_name, self, "#{locator}", :section))
497
+ end
543
498
  end
544
499
 
545
500
  def self.sections(section_hash)
@@ -928,5 +883,13 @@ module TestCentricity
928
883
  raise ObjectNotFoundError.new("Section object '#{get_name}' (#{get_locator}) not found") unless section
929
884
  end
930
885
 
886
+ def self.define_element(element_name, obj, locator)
887
+ define_method(element_name) do
888
+ ivar_name = "@#{element_name}"
889
+ ivar = instance_variable_get(ivar_name)
890
+ return ivar if ivar
891
+ instance_variable_set(ivar_name, obj.new(element_name, self, locator, :section))
892
+ end
893
+ end
931
894
  end
932
895
  end
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.4.1
4
+ version: 2.4.2
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-27 00:00:00.000000000 Z
11
+ date: 2018-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler