testcentricity_web 3.2.22 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +47 -0
- data/Gemfile.lock +25 -23
- data/README.md +44 -12
- data/lib/testcentricity_web.rb +0 -10
- data/lib/testcentricity_web/browser_helper.rb +21 -13
- data/lib/testcentricity_web/data_objects/data_objects_helper.rb +5 -5
- data/lib/testcentricity_web/data_objects/environment.rb +40 -3
- data/lib/testcentricity_web/exception_queue_helper.rb +28 -5
- data/lib/testcentricity_web/utility_helpers.rb +4 -0
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_object.rb +1 -93
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +1 -7
- data/lib/testcentricity_web/web_core/page_section.rb +0 -91
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +127 -52
- data/lib/testcentricity_web/web_elements/checkbox.rb +1 -15
- data/lib/testcentricity_web/web_elements/file_field.rb +1 -1
- data/lib/testcentricity_web/web_elements/radio.rb +1 -1
- data/lib/testcentricity_web/web_elements/select_list.rb +0 -52
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +5 -14
- metadata +2 -12
- data/lib/testcentricity_web/web_elements/cell_button.rb +0 -8
- data/lib/testcentricity_web/web_elements/cell_checkbox.rb +0 -38
- data/lib/testcentricity_web/web_elements/cell_element.rb +0 -69
- data/lib/testcentricity_web/web_elements/cell_image.rb +0 -8
- data/lib/testcentricity_web/web_elements/cell_radio.rb +0 -31
- data/lib/testcentricity_web/web_elements/list_button.rb +0 -8
- data/lib/testcentricity_web/web_elements/list_checkbox.rb +0 -38
- data/lib/testcentricity_web/web_elements/list_element.rb +0 -61
- data/lib/testcentricity_web/web_elements/list_radio.rb +0 -31
- data/lib/testcentricity_web/web_elements/siebel_open_ui_helper.rb +0 -15
@@ -117,7 +117,7 @@ module TestCentricity
|
|
117
117
|
# remember_me_checkbox.uncheck
|
118
118
|
#
|
119
119
|
def uncheck
|
120
|
-
set_checkbox_state(false)
|
120
|
+
set_checkbox_state(state = false)
|
121
121
|
end
|
122
122
|
|
123
123
|
def verify_check_state(state, enqueue = false)
|
@@ -127,20 +127,6 @@ module TestCentricity
|
|
127
127
|
assert_equal(state, actual, "Expected checkbox #{object_ref_message} to be #{state} but found #{actual} instead")
|
128
128
|
end
|
129
129
|
|
130
|
-
# Set the check state of a Siebel OUI JCheckBox object.
|
131
|
-
#
|
132
|
-
# @param state [Boolean] true = checked / false = unchecked
|
133
|
-
# @example
|
134
|
-
# remember_me_checkbox.set_siebel_checkbox_state(true)
|
135
|
-
#
|
136
|
-
def set_siebel_checkbox_state(state)
|
137
|
-
obj, = find_element
|
138
|
-
object_not_found_exception(obj, 'Siebel checkbox')
|
139
|
-
raise "UI #{object_ref_message} is not a Siebel CheckBox object" unless get_siebel_object_type == 'JCheckBox'
|
140
|
-
expected = state.to_bool
|
141
|
-
obj.click unless expected == obj.checked?
|
142
|
-
end
|
143
|
-
|
144
130
|
# Highlight a checkbox with a 3 pixel wide, red dashed border for the specified wait time.
|
145
131
|
# If wait time is zero, then the highlight will remain until the page is refreshed
|
146
132
|
#
|
@@ -101,7 +101,7 @@ module TestCentricity
|
|
101
101
|
# accept_terms_radio.unselect
|
102
102
|
#
|
103
103
|
def unselect
|
104
|
-
set_selected_state(false)
|
104
|
+
set_selected_state(state = false)
|
105
105
|
end
|
106
106
|
|
107
107
|
# Highlight a radio button with a 3 pixel wide, red dashed border for the specified wait time.
|
@@ -258,58 +258,6 @@ module TestCentricity
|
|
258
258
|
|
259
259
|
alias selected? get_selected_option
|
260
260
|
|
261
|
-
# Select the specified option in a Siebel OUI select box object.
|
262
|
-
#
|
263
|
-
# @param option [String] text of option to select
|
264
|
-
# @example
|
265
|
-
# country_select.choose_siebel_option('Cayman Islands')
|
266
|
-
#
|
267
|
-
def choose_siebel_option(option)
|
268
|
-
Capybara.wait_on_first_by_default = true
|
269
|
-
invoke_siebel_popup
|
270
|
-
first(:xpath, "//li[@class='ui-menu-item']", exact: true, match: :prefer_exact, text: option).click
|
271
|
-
end
|
272
|
-
|
273
|
-
# Return array of strings of all options in a Siebel OUI select box object.
|
274
|
-
#
|
275
|
-
# @return [Array]
|
276
|
-
# @example
|
277
|
-
# all_countries = country_select.get_siebel_options
|
278
|
-
#
|
279
|
-
def get_siebel_options
|
280
|
-
invoke_siebel_popup
|
281
|
-
sleep(0.5)
|
282
|
-
options = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
|
283
|
-
@base_object, = find_element
|
284
|
-
@base_object.native.send_keys(:escape)
|
285
|
-
options
|
286
|
-
end
|
287
|
-
|
288
|
-
def verify_siebel_options(expected, enqueue = false)
|
289
|
-
invoke_siebel_popup
|
290
|
-
sleep(0.5)
|
291
|
-
actual = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
|
292
|
-
if enqueue
|
293
|
-
ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list of options in list #{object_ref_message}")
|
294
|
-
else
|
295
|
-
assert_equal(expected, actual, "Expected list of options in list #{object_ref_message} to be #{expected} but found #{actual}")
|
296
|
-
end
|
297
|
-
@base_object, = find_element
|
298
|
-
@base_object.native.send_keys(:escape)
|
299
|
-
end
|
300
|
-
|
301
|
-
# Is Siebel JComboBox set to read-only?
|
302
|
-
#
|
303
|
-
# @return [Boolean]
|
304
|
-
# @example
|
305
|
-
# country_select.read_only?
|
306
|
-
#
|
307
|
-
def read_only?
|
308
|
-
@base_object, = find_element
|
309
|
-
object_not_found_exception(@base_object, nil)
|
310
|
-
!@base_object.native.attribute('readonly')
|
311
|
-
end
|
312
|
-
|
313
261
|
private
|
314
262
|
|
315
263
|
def select_item(obj, option)
|
@@ -441,7 +441,7 @@ module TestCentricity
|
|
441
441
|
# button_width = my_button.width
|
442
442
|
#
|
443
443
|
def width
|
444
|
-
obj, type = find_element(false)
|
444
|
+
obj, type = find_element(visible = false)
|
445
445
|
object_not_found_exception(obj, type)
|
446
446
|
obj.get_width
|
447
447
|
end
|
@@ -453,7 +453,7 @@ module TestCentricity
|
|
453
453
|
# button_height = my_button.height
|
454
454
|
#
|
455
455
|
def height
|
456
|
-
obj, type = find_element(false)
|
456
|
+
obj, type = find_element(visible = false)
|
457
457
|
object_not_found_exception(obj, type)
|
458
458
|
obj.get_height
|
459
459
|
end
|
@@ -465,7 +465,7 @@ module TestCentricity
|
|
465
465
|
# button_x = my_button.x
|
466
466
|
#
|
467
467
|
def x
|
468
|
-
obj, type = find_element(false)
|
468
|
+
obj, type = find_element(visible = false)
|
469
469
|
object_not_found_exception(obj, type)
|
470
470
|
obj.get_x
|
471
471
|
end
|
@@ -477,7 +477,7 @@ module TestCentricity
|
|
477
477
|
# button_y = my_button.y
|
478
478
|
#
|
479
479
|
def y
|
480
|
-
obj, type = find_element(false)
|
480
|
+
obj, type = find_element(visible = false)
|
481
481
|
object_not_found_exception(obj, type)
|
482
482
|
obj.get_y
|
483
483
|
end
|
@@ -499,7 +499,7 @@ module TestCentricity
|
|
499
499
|
# basket_link.displayed??
|
500
500
|
#
|
501
501
|
def displayed?
|
502
|
-
obj, type = find_element(false)
|
502
|
+
obj, type = find_element(visible = false)
|
503
503
|
object_not_found_exception(obj, type)
|
504
504
|
obj.displayed?
|
505
505
|
end
|
@@ -1032,15 +1032,6 @@ module TestCentricity
|
|
1032
1032
|
end
|
1033
1033
|
end
|
1034
1034
|
|
1035
|
-
def invoke_siebel_popup
|
1036
|
-
obj, = find_element
|
1037
|
-
object_not_found_exception(obj, 'Siebel object')
|
1038
|
-
trigger_name = obj.native.attribute('aria-describedby').strip
|
1039
|
-
trigger = "span##{trigger_name}"
|
1040
|
-
trigger = "#{@parent.get_locator} #{trigger}" if @context == :section && !@parent.get_locator.nil?
|
1041
|
-
first(trigger).click
|
1042
|
-
end
|
1043
|
-
|
1044
1035
|
def object_ref_message
|
1045
1036
|
"object '#{get_name}' (#{get_locator})"
|
1046
1037
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
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: 2021-
|
11
|
+
date: 2021-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -274,26 +274,16 @@ files:
|
|
274
274
|
- lib/testcentricity_web/web_core/webdriver_helper.rb
|
275
275
|
- lib/testcentricity_web/web_elements/audio.rb
|
276
276
|
- lib/testcentricity_web/web_elements/button.rb
|
277
|
-
- lib/testcentricity_web/web_elements/cell_button.rb
|
278
|
-
- lib/testcentricity_web/web_elements/cell_checkbox.rb
|
279
|
-
- lib/testcentricity_web/web_elements/cell_element.rb
|
280
|
-
- lib/testcentricity_web/web_elements/cell_image.rb
|
281
|
-
- lib/testcentricity_web/web_elements/cell_radio.rb
|
282
277
|
- lib/testcentricity_web/web_elements/checkbox.rb
|
283
278
|
- lib/testcentricity_web/web_elements/file_field.rb
|
284
279
|
- lib/testcentricity_web/web_elements/image.rb
|
285
280
|
- lib/testcentricity_web/web_elements/label.rb
|
286
281
|
- lib/testcentricity_web/web_elements/link.rb
|
287
282
|
- lib/testcentricity_web/web_elements/list.rb
|
288
|
-
- lib/testcentricity_web/web_elements/list_button.rb
|
289
|
-
- lib/testcentricity_web/web_elements/list_checkbox.rb
|
290
|
-
- lib/testcentricity_web/web_elements/list_element.rb
|
291
|
-
- lib/testcentricity_web/web_elements/list_radio.rb
|
292
283
|
- lib/testcentricity_web/web_elements/media.rb
|
293
284
|
- lib/testcentricity_web/web_elements/radio.rb
|
294
285
|
- lib/testcentricity_web/web_elements/range.rb
|
295
286
|
- lib/testcentricity_web/web_elements/select_list.rb
|
296
|
-
- lib/testcentricity_web/web_elements/siebel_open_ui_helper.rb
|
297
287
|
- lib/testcentricity_web/web_elements/table.rb
|
298
288
|
- lib/testcentricity_web/web_elements/textfield.rb
|
299
289
|
- lib/testcentricity_web/web_elements/ui_elements_helper.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module TestCentricity
|
2
|
-
class CellCheckBox < CellElement
|
3
|
-
attr_accessor :proxy
|
4
|
-
|
5
|
-
def initialize(name, parent, locator, context, table, column, proxy = nil)
|
6
|
-
super
|
7
|
-
@type = :cell_checkbox
|
8
|
-
@proxy = proxy
|
9
|
-
end
|
10
|
-
|
11
|
-
def checked?(row)
|
12
|
-
obj, = find_cell_element(row)
|
13
|
-
cell_object_not_found_exception(obj, 'Cell CheckBox', row)
|
14
|
-
obj.checked?
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_checkbox_state(row, state)
|
18
|
-
obj, = find_cell_element(row)
|
19
|
-
cell_object_not_found_exception(obj, 'Cell CheckBox', row)
|
20
|
-
obj.set(state)
|
21
|
-
end
|
22
|
-
|
23
|
-
def check(row)
|
24
|
-
set_checkbox_state(row, true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def uncheck(row)
|
28
|
-
set_checkbox_state(row, false)
|
29
|
-
end
|
30
|
-
|
31
|
-
def verify_check_state(row, state, enqueue = false)
|
32
|
-
actual = checked?(row)
|
33
|
-
enqueue ?
|
34
|
-
ExceptionQueue.enqueue_assert_equal(state, actual, "Expected Row #{row}/Col #{@column} Cell Checkbox #{object_ref_message}") :
|
35
|
-
assert_equal(state, actual, "Expected Row #{row}/Col #{@column} Cell Checkbox #{object_ref_message} to be #{state} but found #{actual} instead")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
module TestCentricity
|
2
|
-
class CellElement < UIElement
|
3
|
-
attr_accessor :table
|
4
|
-
attr_accessor :column
|
5
|
-
attr_accessor :element_locator
|
6
|
-
|
7
|
-
def initialize(name, parent, locator, context, table, column, proxy = nil)
|
8
|
-
@name = name
|
9
|
-
@parent = parent
|
10
|
-
@context = context
|
11
|
-
@alt_locator = nil
|
12
|
-
@table = table
|
13
|
-
@column = column
|
14
|
-
@element_locator = locator
|
15
|
-
|
16
|
-
set_locator_type(@table.get_locator)
|
17
|
-
set_column(column)
|
18
|
-
end
|
19
|
-
|
20
|
-
def set_column(column)
|
21
|
-
@column = column
|
22
|
-
@locator = case @locator_type
|
23
|
-
when :xpath
|
24
|
-
"#{@table.get_table_cell_locator('ROW_SPEC', @column)}/#{@element_locator}"
|
25
|
-
when :css
|
26
|
-
"#{@table.get_table_cell_locator('ROW_SPEC', @column)} > #{@element_locator}"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def exists?(row)
|
31
|
-
obj, = find_cell_element(row)
|
32
|
-
obj != nil
|
33
|
-
end
|
34
|
-
|
35
|
-
def click(row)
|
36
|
-
obj, = find_cell_element(row)
|
37
|
-
cell_object_not_found_exception(obj, @type, row)
|
38
|
-
obj.click
|
39
|
-
end
|
40
|
-
|
41
|
-
def get_native_attribute(row, attrib)
|
42
|
-
obj, = find_cell_element(row)
|
43
|
-
cell_object_not_found_exception(obj, @type, row)
|
44
|
-
obj.get_native_attribute(attrib)
|
45
|
-
end
|
46
|
-
|
47
|
-
def get_value(row, visible = true)
|
48
|
-
obj, = find_cell_element(row, visible)
|
49
|
-
cell_object_not_found_exception(obj, @type, row)
|
50
|
-
case obj.tag_name.downcase
|
51
|
-
when 'input', 'select', 'textarea'
|
52
|
-
obj.value
|
53
|
-
else
|
54
|
-
obj.text
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
alias get_caption get_value
|
59
|
-
|
60
|
-
def find_cell_element(row, visible = true)
|
61
|
-
set_alt_locator("#{@locator.gsub('ROW_SPEC', row.to_s)}")
|
62
|
-
find_element(visible)
|
63
|
-
end
|
64
|
-
|
65
|
-
def cell_object_not_found_exception(obj, obj_type, row)
|
66
|
-
object_not_found_exception(obj, "Row #{row}/Col #{@column} #{obj_type}")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module TestCentricity
|
2
|
-
class CellRadio < CellElement
|
3
|
-
attr_accessor :proxy
|
4
|
-
|
5
|
-
def initialize(name, parent, locator, context, table, column, proxy = nil)
|
6
|
-
super
|
7
|
-
@type = :cell_radio
|
8
|
-
@proxy = proxy
|
9
|
-
end
|
10
|
-
|
11
|
-
def selected?(row)
|
12
|
-
obj, = find_cell_element(row)
|
13
|
-
cell_object_not_found_exception(obj, 'Cell Radio', row)
|
14
|
-
obj.checked?
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_selected_state(row, state)
|
18
|
-
obj, = find_cell_element(row)
|
19
|
-
cell_object_not_found_exception(obj, 'Cell Radio', row)
|
20
|
-
obj.set(state)
|
21
|
-
end
|
22
|
-
|
23
|
-
def select(row)
|
24
|
-
set_selected_state(row, true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def unselect(row)
|
28
|
-
set_selected_state(row, false)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module TestCentricity
|
2
|
-
class ListCheckBox < ListElement
|
3
|
-
attr_accessor :proxy
|
4
|
-
|
5
|
-
def initialize(name, parent, locator, context, list, proxy = nil)
|
6
|
-
super
|
7
|
-
@type = :list_checkbox
|
8
|
-
@proxy = proxy
|
9
|
-
end
|
10
|
-
|
11
|
-
def checked?(row)
|
12
|
-
obj, = find_list_element(row)
|
13
|
-
list_object_not_found_exception(obj, 'List CheckBox', row)
|
14
|
-
obj.checked?
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_checkbox_state(row, state)
|
18
|
-
obj, = find_list_element(row)
|
19
|
-
list_object_not_found_exception(obj, 'List CheckBox', row)
|
20
|
-
obj.set(state)
|
21
|
-
end
|
22
|
-
|
23
|
-
def check(row)
|
24
|
-
set_checkbox_state(row, true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def uncheck(row)
|
28
|
-
set_checkbox_state(row, false)
|
29
|
-
end
|
30
|
-
|
31
|
-
def verify_check_state(row, state, enqueue = false)
|
32
|
-
actual = checked?(row)
|
33
|
-
enqueue ?
|
34
|
-
ExceptionQueue.enqueue_assert_equal(state, actual, "Expected Row #{row} List Checkbox #{object_ref_message}") :
|
35
|
-
assert_equal(state, actual, "Expected Row #{row} List Checkbox #{object_ref_message} to be #{state} but found #{actual} instead")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
module TestCentricity
|
2
|
-
class ListElement < UIElement
|
3
|
-
attr_accessor :list
|
4
|
-
attr_accessor :element_locator
|
5
|
-
|
6
|
-
def initialize(name, parent, locator, context, list, proxy = nil)
|
7
|
-
@name = name
|
8
|
-
@parent = parent
|
9
|
-
@context = context
|
10
|
-
@alt_locator = nil
|
11
|
-
@list = list
|
12
|
-
@element_locator = locator
|
13
|
-
|
14
|
-
set_locator_type(@list.get_locator)
|
15
|
-
|
16
|
-
if locator.nil?
|
17
|
-
@locator = list.get_list_row_locator('ROW_SPEC')
|
18
|
-
else
|
19
|
-
@locator = case @locator_type
|
20
|
-
when :xpath
|
21
|
-
"#{list.get_list_row_locator('ROW_SPEC')}/#{@element_locator}"
|
22
|
-
when :css
|
23
|
-
"#{list.get_list_row_locator('ROW_SPEC')} > #{@element_locator}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def exists?(row)
|
29
|
-
obj, = find_list_element(row)
|
30
|
-
obj != nil
|
31
|
-
end
|
32
|
-
|
33
|
-
def click(row)
|
34
|
-
obj, = find_list_element(row)
|
35
|
-
list_object_not_found_exception(obj, @type, row)
|
36
|
-
obj.click
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_value(row, visible = true)
|
40
|
-
obj, = find_list_element(row, visible)
|
41
|
-
list_object_not_found_exception(obj, @type, row)
|
42
|
-
case obj.tag_name.downcase
|
43
|
-
when 'input', 'select', 'textarea'
|
44
|
-
obj.value
|
45
|
-
else
|
46
|
-
obj.text
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
alias get_caption get_value
|
51
|
-
|
52
|
-
def find_list_element(row, visible = true)
|
53
|
-
set_alt_locator("#{@locator.gsub('ROW_SPEC', row.to_s)}")
|
54
|
-
find_element(visible)
|
55
|
-
end
|
56
|
-
|
57
|
-
def list_object_not_found_exception(obj, obj_type, row)
|
58
|
-
object_not_found_exception(obj, "Row #{row} #{obj_type}")
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|