testcentricity_web 4.3.0 → 4.4.0

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -11
  3. data/LICENSE.md +1 -1
  4. data/README.md +1931 -801
  5. data/lib/devices/devices.yml +144 -216
  6. data/lib/testcentricity_web/browser_helper.rb +33 -4
  7. data/lib/testcentricity_web/data_objects/environment.rb +96 -15
  8. data/lib/testcentricity_web/exception_queue_helper.rb +5 -6
  9. data/lib/testcentricity_web/version.rb +1 -1
  10. data/lib/testcentricity_web/web_core/page_object.rb +53 -49
  11. data/lib/testcentricity_web/web_core/page_objects_helper.rb +20 -11
  12. data/lib/testcentricity_web/web_core/page_section.rb +31 -34
  13. data/lib/testcentricity_web/web_core/webdriver_helper.rb +416 -288
  14. data/lib/testcentricity_web/web_elements/audio.rb +6 -4
  15. data/lib/testcentricity_web/web_elements/button.rb +7 -4
  16. data/lib/testcentricity_web/web_elements/checkbox.rb +149 -147
  17. data/lib/testcentricity_web/web_elements/file_field.rb +38 -36
  18. data/lib/testcentricity_web/web_elements/image.rb +75 -70
  19. data/lib/testcentricity_web/web_elements/label.rb +6 -4
  20. data/lib/testcentricity_web/web_elements/link.rb +15 -13
  21. data/lib/testcentricity_web/web_elements/list.rb +171 -169
  22. data/lib/testcentricity_web/web_elements/media.rb +384 -379
  23. data/lib/testcentricity_web/web_elements/radio.rb +135 -133
  24. data/lib/testcentricity_web/web_elements/range.rb +16 -29
  25. data/lib/testcentricity_web/web_elements/select_list.rb +247 -245
  26. data/lib/testcentricity_web/web_elements/table.rb +575 -573
  27. data/lib/testcentricity_web/web_elements/textfield.rb +143 -139
  28. data/lib/testcentricity_web/web_elements/ui_element.rb +1171 -0
  29. data/lib/testcentricity_web/web_elements/video.rb +39 -37
  30. data/lib/testcentricity_web/world_extensions.rb +37 -4
  31. data/lib/testcentricity_web.rb +4 -23
  32. metadata +27 -79
  33. data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +0 -1148
@@ -1,161 +1,165 @@
1
1
  module TestCentricity
2
- class TextField < UIElement
3
- def initialize(name, parent, locator, context)
4
- super
5
- @type = :textfield
6
- end
2
+ module Elements
3
+ class TextField < UIElement
4
+ def initialize(name, parent, locator, context)
5
+ super
6
+ @type = :textfield
7
+ end
7
8
 
8
- # Is text field set to read-only?
9
- #
10
- # @return [Boolean]
11
- # @example
12
- # comments_field.read_only?
13
- #
14
- def read_only?
15
- obj, = find_element
16
- object_not_found_exception(obj, nil)
17
- !!obj.native.attribute('readonly')
18
- end
9
+ # Is text field set to read-only?
10
+ #
11
+ # @return [Boolean]
12
+ # @example
13
+ # comments_field.read_only?
14
+ #
15
+ def read_only?
16
+ obj, = find_element
17
+ object_not_found_exception(obj, nil)
18
+ !!obj.native.attribute('readonly')
19
+ end
19
20
 
20
- # Return maxlength character count of a text field.
21
- #
22
- # @return [Integer]
23
- # @example
24
- # max_num_chars = comments_field.get_max_length
25
- #
26
- def get_max_length
27
- obj, = find_element
28
- object_not_found_exception(obj, nil)
29
- max_length = obj.native.attribute('maxlength')
30
- max_length.to_i unless max_length.blank?
31
- end
21
+ # Return maxlength character count of a text field.
22
+ #
23
+ # @return [Integer]
24
+ # @example
25
+ # max_num_chars = comments_field.get_max_length
26
+ #
27
+ def get_max_length
28
+ obj, = find_element
29
+ object_not_found_exception(obj, nil)
30
+ max_length = obj.native.attribute('maxlength')
31
+ max_length.to_i unless max_length.blank?
32
+ end
32
33
 
33
- # Return placeholder text of a text field.
34
- #
35
- # @return [String]
36
- # @example
37
- # placeholder_message = username_field.get_placeholder
38
- #
39
- def get_placeholder
40
- obj, = find_element
41
- object_not_found_exception(obj, nil)
42
- obj.native.attribute('placeholder')
43
- end
34
+ # Return placeholder text of a text field.
35
+ #
36
+ # @return [String]
37
+ # @example
38
+ # placeholder_message = username_field.get_placeholder
39
+ #
40
+ def get_placeholder
41
+ obj, = find_element
42
+ object_not_found_exception(obj, nil)
43
+ obj.native.attribute('placeholder')
44
+ end
44
45
 
45
- # Return validationMessage property of a textfield, which is the message the browser displays to the user when a textfield's
46
- # validity is checked and fails. Note that each web browser provides a default localized message for this property, and message
47
- # strings can vary between different browsers (Chrome/Edge vs Firefox vs Safari).
48
- #
49
- # @return [String]
50
- # @example
51
- # message = username_field.validation_message
52
- #
53
- def validation_message
54
- obj, = find_element
55
- object_not_found_exception(obj, nil)
56
- obj.native.attribute('validationMessage')
57
- end
46
+ # Return validationMessage property of a textfield, which is the message the browser displays to the user when a textfield's
47
+ # validity is checked and fails. Note that each web browser provides a default localized message for this property, and message
48
+ # strings can vary between different browsers (Chrome/Edge vs Firefox vs Safari).
49
+ #
50
+ # @return [String]
51
+ # @example
52
+ # message = username_field.validation_message
53
+ #
54
+ def validation_message
55
+ obj, = find_element
56
+ object_not_found_exception(obj, nil)
57
+ obj.native.attribute('validationMessage')
58
+ end
58
59
 
59
- # Return Boolean value representing
60
- #
61
- # @param validity_state [Symbol] property to verify
62
- # @return [Boolean]
63
- # @example
64
- # username_field.validity?(:valid)
65
- # username_field.validity?(:valueMissing)
66
- #
67
- def validity?(validity_state)
68
- obj, = find_element
69
- object_not_found_exception(obj, nil)
70
- page.execute_script("return arguments[0].validity.#{validity_state}", obj)
71
- end
60
+ # Return Boolean value representing
61
+ #
62
+ # @param validity_state [Symbol] property to verify
63
+ # @return [Boolean]
64
+ # @example
65
+ # username_field.validity?(:valid)
66
+ # username_field.validity?(:valueMissing)
67
+ #
68
+ def validity?(validity_state)
69
+ obj, = find_element
70
+ object_not_found_exception(obj, nil)
71
+ page.execute_script("return arguments[0].validity.#{validity_state}", obj)
72
+ end
72
73
 
73
- # Return min attribute of a number type text field.
74
- #
75
- # @return [Integer]
76
- # @example
77
- # min_points_value = points_field.get_min
78
- #
79
- def get_min
80
- obj, = find_element
81
- object_not_found_exception(obj, nil)
82
- min = obj.native.attribute('min')
83
- unless min.blank?
84
- if min.is_int?
85
- min.to_i
86
- elsif min.is_float?
87
- min.to_f
88
- else
89
- min
74
+ # Return min attribute of a number type text field.
75
+ #
76
+ # @return [Integer]
77
+ # @example
78
+ # min_points_value = points_field.get_min
79
+ #
80
+ def get_min
81
+ obj, = find_element
82
+ object_not_found_exception(obj, nil)
83
+ min = obj.native.attribute('min')
84
+ unless min.blank?
85
+ if min.is_int?
86
+ min.to_i
87
+ elsif min.is_float?
88
+ min.to_f
89
+ else
90
+ min
91
+ end
90
92
  end
91
93
  end
92
- end
93
94
 
94
- # Return max attribute of a number type text field.
95
- #
96
- # @return [Integer]
97
- # @example
98
- # max_points_value = points_field.get_max
99
- #
100
- def get_max
101
- obj, = find_element
102
- object_not_found_exception(obj, nil)
103
- max = obj.native.attribute('max')
104
- unless max.blank?
105
- if max.is_int?
106
- max.to_i
107
- elsif max.is_float?
108
- max.to_f
109
- else
110
- max
95
+ # Return max attribute of a number type text field.
96
+ #
97
+ # @return [Integer]
98
+ # @example
99
+ # max_points_value = points_field.get_max
100
+ #
101
+ def get_max
102
+ obj, = find_element
103
+ object_not_found_exception(obj, nil)
104
+ max = obj.native.attribute('max')
105
+ unless max.blank?
106
+ if max.is_int?
107
+ max.to_i
108
+ elsif max.is_float?
109
+ max.to_f
110
+ else
111
+ max
112
+ end
111
113
  end
112
114
  end
113
- end
114
115
 
115
- # Return step attribute of a number type text field.
116
- #
117
- # @return [Integer]
118
- # @example
119
- # points_step = points_field.get_step
120
- #
121
- def get_step
122
- obj, = find_element
123
- object_not_found_exception(obj, nil)
124
- step = obj.native.attribute('step')
125
- unless step.blank?
126
- if step.is_int?
127
- step.to_i
128
- elsif step.is_float?
129
- step.to_f
130
- else
131
- step
116
+ # Return step attribute of a number type text field.
117
+ #
118
+ # @return [Integer]
119
+ # @example
120
+ # points_step = points_field.get_step
121
+ #
122
+ def get_step
123
+ obj, = find_element
124
+ object_not_found_exception(obj, nil)
125
+ step = obj.native.attribute('step')
126
+ unless step.blank?
127
+ if step.is_int?
128
+ step.to_i
129
+ elsif step.is_float?
130
+ step.to_f
131
+ else
132
+ step
133
+ end
132
134
  end
133
135
  end
134
- end
135
136
 
136
- # Clear the contents of a text field
137
- #
138
- # @example
139
- # first_name_field.clear
140
- #
141
- def clear
142
- case get_native_attribute('tagName').downcase.to_sym
143
- when :textarea
144
- set('')
145
- sleep(0.5)
146
- send_keys(:tab)
147
- when :div
148
- set('')
149
- else
150
- length = get_value.length
151
- length.times do
152
- send_keys(:backspace)
153
- end
154
- sleep(0.5)
155
- if get_value.length > 0
137
+ # Clear the contents of a text field
138
+ #
139
+ # @example
140
+ # first_name_field.clear
141
+ #
142
+ def clear
143
+ field_type = get_native_attribute('tagName')
144
+ field_type = field_type.downcase.to_sym unless field_type.nil?
145
+ case field_type
146
+ when :textarea
156
147
  set('')
157
148
  sleep(0.5)
158
149
  send_keys(:tab)
150
+ when :div, nil
151
+ set('')
152
+ else
153
+ length = get_value.length
154
+ length.times do
155
+ send_keys(:backspace)
156
+ end
157
+ sleep(0.5)
158
+ if get_value.length > 0
159
+ set('')
160
+ sleep(0.5)
161
+ send_keys(:tab)
162
+ end
159
163
  end
160
164
  end
161
165
  end