testcentricity_web 0.5.2 → 0.5.3

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: 86bf1650818c1a41d7cde9464f2afee848f7a10b
4
- data.tar.gz: 814d2c1cb45f34d130c42e4c4792ae26cb4b9027
3
+ metadata.gz: 79a7fa37b1e2a170c3dfe53463b2f32c345c6bc8
4
+ data.tar.gz: 12b13c153ae52006acef1010136cb532aff35bb8
5
5
  SHA512:
6
- metadata.gz: 839940ee91bca0d4452b8454f785074d38f19d2cb274f13602ae0578d34e1c3318599bf0f68fe6af350177324aaa9fe3de91a10ca8df7d1b7f8c0b1ff9d6adef
7
- data.tar.gz: c87998b0ca92c78b08044583fc9a872fc0b0ef229b9ca7c519081cb72a53d6820ce4021b339711e1c035650c040fc0cf3ad68c058b9df092de16958339e5e7f6
6
+ metadata.gz: 171dd73728c60562a7ce1895c2e9a18631440c7cdb6d7c375d95621c674d129870d63836213506db407eada9cc8a3249bc6863078e1f0cb80f59999d2b4be9b2
7
+ data.tar.gz: 3059f83f6a3258232ea6aa41ae89cd7a76ddb6780cc0a427f185e9cd4d7f9a6b15e66a8bd4d968a64efad5424dcc8043b4830ab73743b1168d39a11bdb37bf83
@@ -2,7 +2,7 @@ module TestCentricity
2
2
  module Browsers
3
3
  include Capybara::DSL
4
4
 
5
- # Sets the size of the selenium browser window.
5
+ # Sets the size of the browser window.
6
6
  #
7
7
  # @param resolution [Array] the desired [width, height]
8
8
  # @example
@@ -7,6 +7,15 @@ module TestCentricity
7
7
  include RSpec::Matchers
8
8
  include Test::Unit::Assertions
9
9
 
10
+ # Define a trait for this page object.
11
+ #
12
+ # @param trait_name [symbol] name of trait
13
+ # @param block [&block] trait value
14
+ # @example
15
+ # trait(:page_name) { 'Shopping Basket' }
16
+ # trait(:page_url) { "/shopping_basket" }
17
+ # trait(:page_locator) { "//body[@class='shopping_baskets']" }
18
+ #
10
19
  def self.trait(trait_name, &block)
11
20
  define_method(trait_name.to_s, &block)
12
21
  end
@@ -15,14 +24,38 @@ module TestCentricity
15
24
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :page, nil);end))
16
25
  end
17
26
 
27
+ # Define and instantiate a button UI Element for this page object.
28
+ #
29
+ # @param element_name [symbol] name of button object
30
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
31
+ # @example
32
+ # button :checkout_button, "button.checkout_button"
33
+ # button :login_button, "//input[@id='submit_button']"
34
+ #
18
35
  def self.button(element_name, locator)
19
36
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :page, :button);end))
20
37
  end
21
38
 
39
+ # Define and instantiate a text field UI Element for this page object.
40
+ #
41
+ # @param element_name [symbol] name of text field object
42
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
43
+ # @example
44
+ # textfield :user_id_field, "//input[@id='UserName']"
45
+ # textfield :password_field, "consumer_password"
46
+ #
22
47
  def self.textfield(element_name, locator)
23
48
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :page, :textfield);end))
24
49
  end
25
50
 
51
+ # Define and instantiate a checkbox UI Element for this page object.
52
+ #
53
+ # @param element_name [symbol] name of checkbox object
54
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
55
+ # @example
56
+ # checkbox :remember_checkbox, "//input[@id='RememberUser']"
57
+ # checkbox :accept_terms_checkbox, "accept_terms_conditions"
58
+ #
26
59
  def self.checkbox(element_name, locator)
27
60
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :page, :checkbox);end))
28
61
  end
@@ -16,6 +16,14 @@ module TestCentricity
16
16
  @context = context
17
17
  end
18
18
 
19
+ # Define a trait for this page section.
20
+ #
21
+ # @param trait_name [symbol] name of trait
22
+ # @param block [&block] trait value
23
+ # @example
24
+ # trait(:section_locator) { "//div[@class='Messaging_Applet']" }
25
+ # trait(:list_table_name) { 'Messages' }
26
+ #
19
27
  def self.trait(trait_name, &block)
20
28
  define_method(trait_name.to_s, &block)
21
29
  end
@@ -24,14 +32,38 @@ module TestCentricity
24
32
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, nil);end))
25
33
  end
26
34
 
35
+ # Define and instantiate a button UI Element for this page section.
36
+ #
37
+ # @param element_name [symbol] name of button object
38
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
39
+ # @example
40
+ # button :checkout_button, "button.checkout_button"
41
+ # button :login_button, "//input[@id='submit_button']"
42
+ #
27
43
  def self.button(element_name, locator)
28
44
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :button);end))
29
45
  end
30
46
 
47
+ # Define and instantiate a text field UI Element for this page section.
48
+ #
49
+ # @param element_name [symbol] name of text field object
50
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
51
+ # @example
52
+ # textfield :user_id_field, "//input[@id='UserName']"
53
+ # textfield :password_field, "consumer_password"
54
+ #
31
55
  def self.textfield(element_name, locator)
32
56
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :textfield);end))
33
57
  end
34
58
 
59
+ # Define and instantiate a checkbox UI Element for this page section.
60
+ #
61
+ # @param element_name [symbol] name of checkbox object
62
+ # @param locator [String] css selector or xpath expression that uniquely identifies object
63
+ # @example
64
+ # checkbox :remember_checkbox, "//input[@id='RememberUser']"
65
+ # checkbox :accept_terms_checkbox, "accept_terms_conditions"
66
+ #
35
67
  def self.checkbox(element_name, locator)
36
68
  class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :checkbox);end))
37
69
  end
@@ -69,11 +101,23 @@ module TestCentricity
69
101
  @parent = parent
70
102
  end
71
103
 
104
+ # Does Section object exists?
105
+ #
106
+ # @return [Boolean]
107
+ # @example
108
+ # navigation_toolbar.exists?
109
+ #
72
110
  def exists?
73
111
  section, _ = find_section
74
112
  section != nil
75
113
  end
76
114
 
115
+ # Is Section object visible?
116
+ #
117
+ # @return [Boolean]
118
+ # @example
119
+ # navigation_toolbar.visible?
120
+ #
77
121
  def visible?
78
122
  section, type = find_section
79
123
  exists = section
@@ -94,10 +138,22 @@ module TestCentricity
94
138
  (exists && !invisible) ? true : false
95
139
  end
96
140
 
141
+ # Is Section object hidden (not visible)?
142
+ #
143
+ # @return [Boolean]
144
+ # @example
145
+ # navigation_toolbar.hidden?
146
+ #
97
147
  def hidden?
98
148
  not visible?
99
149
  end
100
150
 
151
+ # Wait until the Section object exists, or until the specified wait time has expired.
152
+ #
153
+ # @param seconds [Integer, Float] wait time in seconds
154
+ # @example
155
+ # navigation_toolbar.wait_until_exists(0.5)
156
+ #
101
157
  def wait_until_exists(seconds)
102
158
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
103
159
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
@@ -106,6 +162,12 @@ module TestCentricity
106
162
  raise "Could not find section #{get_locator} after #{timeout} seconds" unless exists?
107
163
  end
108
164
 
165
+ # Wait until the Section object no longer exists, or until the specified wait time has expired.
166
+ #
167
+ # @param seconds [Integer, Float] wait time in seconds
168
+ # @example
169
+ # navigation_toolbar.wait_until_gone(5)
170
+ #
109
171
  def wait_until_gone(seconds)
110
172
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
111
173
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
@@ -45,6 +45,11 @@ module TestCentricity
45
45
  @alt_locator = nil
46
46
  end
47
47
 
48
+ # Click on an object
49
+ #
50
+ # @example
51
+ # basket_link.click
52
+ #
48
53
  def click
49
54
  obj, _ = find_element
50
55
  object_not_found_exception(obj, nil)
@@ -55,6 +60,11 @@ module TestCentricity
55
60
  end
56
61
  end
57
62
 
63
+ # Double-click on an object
64
+ #
65
+ # @example
66
+ # file_image.double_click
67
+ #
58
68
  def double_click
59
69
  obj, _ = find_element
60
70
  object_not_found_exception(obj, nil)
@@ -73,17 +83,35 @@ module TestCentricity
73
83
  obj.set(value)
74
84
  end
75
85
 
86
+ # Send keystrokes to this object.
87
+ #
88
+ # @param keys [String] keys
89
+ # @example
90
+ # comment_field.send_keys(:enter)
91
+ #
76
92
  def send_keys(*keys)
77
93
  obj, _ = find_element
78
94
  object_not_found_exception(obj, nil)
79
95
  obj.send_keys(*keys)
80
96
  end
81
97
 
98
+ # Does UI object exists?
99
+ #
100
+ # @return [Boolean]
101
+ # @example
102
+ # basket_link.exists?
103
+ #
82
104
  def exists?
83
105
  obj, _ = find_element
84
106
  obj != nil
85
107
  end
86
108
 
109
+ # Is UI object visible?
110
+ #
111
+ # @return [Boolean]
112
+ # @example
113
+ # remember_me_checkbox.visible?
114
+ #
87
115
  def visible?
88
116
  obj, type = find_element
89
117
  exists = obj
@@ -106,32 +134,68 @@ module TestCentricity
106
134
  (exists && !invisible) ? true : false
107
135
  end
108
136
 
137
+ # Is UI object hidden (not visible)?
138
+ #
139
+ # @return [Boolean]
140
+ # @example
141
+ # remember_me_checkbox.hidden?
142
+ #
109
143
  def hidden?
110
144
  not visible?
111
145
  end
112
146
 
147
+ # Is UI object enabled?
148
+ #
149
+ # @return [Boolean]
150
+ # @example
151
+ # login_button.enabled?
152
+ #
113
153
  def enabled?
114
154
  not disabled?
115
155
  end
116
156
 
157
+ # Is UI object disabled (not enabled)?
158
+ #
159
+ # @return [Boolean]
160
+ # @example
161
+ # login_button.disabled?
162
+ #
117
163
  def disabled?
118
164
  obj, _ = find_element
119
165
  object_not_found_exception(obj, nil)
120
166
  obj.disabled?
121
167
  end
122
168
 
169
+ # Is text field set to read-only?
170
+ #
171
+ # @return [Boolean]
172
+ # @example
173
+ # comments_field.read_only?
174
+ #
123
175
  def read_only?
124
176
  obj, _ = find_element
125
177
  object_not_found_exception(obj, nil)
126
178
  !!obj.native.attribute('readonly')
127
179
  end
128
180
 
181
+ # Return maxlength character count of a text field.
182
+ #
183
+ # @return [Integer]
184
+ # @example
185
+ # max_num_chars = comments_field.get_max_length
186
+ #
129
187
  def get_max_length
130
188
  obj, _ = find_element
131
189
  object_not_found_exception(obj, nil)
132
190
  obj.native.attribute('maxlength')
133
191
  end
134
192
 
193
+ # Is checkbox checked?
194
+ #
195
+ # @return [Boolean]
196
+ # @example
197
+ # remember_me_checkbox.checked?
198
+ #
135
199
  def checked?
136
200
  obj, _ = find_element
137
201
  object_not_found_exception(obj, 'Checkbox')
@@ -152,6 +216,12 @@ module TestCentricity
152
216
  assert_equal(state, actual, "Expected #{@locator} to be #{state} but found #{actual} instead")
153
217
  end
154
218
 
219
+ # Wait until the object exists, or until the specified wait time has expired.
220
+ #
221
+ # @param seconds [Integer, Float] wait time in seconds
222
+ # @example
223
+ # run_button.wait_until_exists(0.5)
224
+ #
155
225
  def wait_until_exists(seconds)
156
226
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
157
227
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
@@ -160,6 +230,12 @@ module TestCentricity
160
230
  raise "Could not find element #{@locator} after #{timeout} seconds" unless exists?
161
231
  end
162
232
 
233
+ # Wait until the object no longer exists, or until the specified wait time has expired.
234
+ #
235
+ # @param seconds [Integer, Float] wait time in seconds
236
+ # @example
237
+ # logout_button.wait_until_gone(5)
238
+ #
163
239
  def wait_until_gone(seconds)
164
240
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
165
241
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
@@ -168,6 +244,12 @@ module TestCentricity
168
244
  raise "Element #{@locator} remained visible after #{timeout} seconds" if exists?
169
245
  end
170
246
 
247
+ # Wait until the object's value equals the specified value, or until the specified wait time has expired.
248
+ #
249
+ # @param seconds [Integer, Float] wait time in seconds
250
+ # @example
251
+ # card_authorized_label.wait_until_value_is(5, 'Card authorized')
252
+ #
171
253
  def wait_until_value_is(value, seconds)
172
254
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
173
255
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
@@ -176,6 +258,12 @@ module TestCentricity
176
258
  raise "Value of UI element #{@locator} failed to equal '#{value}' after #{timeout} seconds" unless exists?
177
259
  end
178
260
 
261
+ # Wait until the object's value changes to a different value, or until the specified wait time has expired.
262
+ #
263
+ # @param seconds [Integer, Float] wait time in seconds
264
+ # @example
265
+ # basket_grand_total_label.wait_until_value_changes(5)
266
+ #
179
267
  def wait_until_value_changes(seconds)
180
268
  value = get_value
181
269
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
@@ -203,6 +291,11 @@ module TestCentricity
203
291
  assert_equal(expected.strip, actual.strip, "Expected #{@locator} to display '#{expected}' but found '#{actual}'")
204
292
  end
205
293
 
294
+ # Hover the cursor over an object
295
+ #
296
+ # @example
297
+ # basket_link.hover
298
+ #
206
299
  def hover
207
300
  obj, _ = find_element
208
301
  object_not_found_exception(obj, nil)
@@ -256,12 +349,24 @@ module TestCentricity
256
349
  obj.first('option[selected]').text
257
350
  end
258
351
 
352
+ # Return number of rows in a table object.
353
+ #
354
+ # @return [Integer]
355
+ # @example
356
+ # num_rows = list_table.get_row_count
357
+ #
259
358
  def get_row_count
260
359
  wait_until_exists(5)
261
360
  row_count = page.all(:xpath, "#{@locator}/tbody/tr", :visible => :all).count
262
361
  row_count
263
362
  end
264
363
 
364
+ # Return number of columns in a table object.
365
+ #
366
+ # @return [Integer]
367
+ # @example
368
+ # num_columns = list_table.get_column_count
369
+ #
265
370
  def get_column_count
266
371
  row_count = get_row_count
267
372
  if row_count == 0
@@ -273,6 +378,13 @@ module TestCentricity
273
378
  end
274
379
  end
275
380
 
381
+ # Click in the specified cell in a table object.
382
+ #
383
+ # @param row [Integer] row number
384
+ # @param column [Integer] column number
385
+ # @example
386
+ # list_table.click_table_cell(3, 5)
387
+ #
276
388
  def click_table_cell(row, column)
277
389
  row_count = get_row_count
278
390
  raise "Row #{row} exceeds number of rows (#{row_count}) in table #{@locator}" if row > row_count
@@ -283,6 +395,13 @@ module TestCentricity
283
395
  clear_alt_locator
284
396
  end
285
397
 
398
+ # Double-click in the specified cell in a table object.
399
+ #
400
+ # @param row [Integer] row number
401
+ # @param column [Integer] column number
402
+ # @example
403
+ # list_table.double_click_table_cell(3, 5)
404
+ #
286
405
  def double_click_table_cell(row, column)
287
406
  row_count = get_row_count
288
407
  raise "Row #{row} exceeds number of rows (#{row_count}) in table #{@locator}" if row > row_count
@@ -293,6 +412,13 @@ module TestCentricity
293
412
  clear_alt_locator
294
413
  end
295
414
 
415
+ # Click the link object embedded within the specified cell in a table object.
416
+ #
417
+ # @param row [Integer] row number
418
+ # @param column [Integer] column number
419
+ # @example
420
+ # list_table.click_table_cell_link(3, 1)
421
+ #
296
422
  def click_table_cell_link(row, column)
297
423
  row_count = get_row_count
298
424
  raise "Row #{row} exceeds number of rows (#{row_count}) in table #{@locator}" if row > row_count
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '0.5.2'
2
+ VERSION = '0.5.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testcentricity_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.J. Mrozinski