testcentricity_web 4.6.8 → 4.6.9
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/CHANGELOG.md +16 -0
- data/README.md +10 -7
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +6 -0
- data/lib/testcentricity_web/web_elements/table.rb +42 -0
- data/lib/testcentricity_web/web_elements/textfield.rb +0 -21
- data/lib/testcentricity_web/web_elements/ui_element.rb +30 -7
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 48391198c0afc8b42f948c2e3dd6dbf77b0b8ff486fa4e9746bbaf2ec34c0231
|
|
4
|
+
data.tar.gz: e377c0af90d0b0478ea4dcad9ef08b1df337facc87dabc0215cbbed6c2a51a31
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 762285729fbfcfc5f56b56a060f5a32d0e23f9f865417733621be3241dc9da01ca6b562991aa0d871989702d6a1b54952f3f2a7c7d640e9f68c726e5dd1ad0f4
|
|
7
|
+
data.tar.gz: fc982517f54bf55c571f5b0062abd1237e6df518badda8711a9ac2812faebfaba58d59703d739c91b25a9bf9e4187399160dc15449fa637f6a5e4d263a9651e8
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## [4.6.9] - 31-OCT-2025
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
* Added `Table.get_footer_columns` and `Table.get_footer_column`methods.
|
|
10
|
+
* Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of the following
|
|
11
|
+
`Table` properties:
|
|
12
|
+
* `:column_footers`
|
|
13
|
+
* `:column_footer`
|
|
14
|
+
* `:column_header`
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
* `UIElement.get_max` now works with HTML `<progress>` elements.
|
|
19
|
+
|
|
20
|
+
|
|
5
21
|
## [4.6.8] - 27-OCT-2025
|
|
6
22
|
|
|
7
23
|
### Changed
|
data/README.md
CHANGED
|
@@ -24,7 +24,7 @@ The TestCentricity™ For Web gem supports connecting to, and running automated
|
|
|
24
24
|
* [TestingBot](https://testingbot.com/features)
|
|
25
25
|
* [LambdaTest](https://www.lambdatest.com/selenium-automation)
|
|
26
26
|
* web portals utilizing JavaScript front end application frameworks like Ember, React, Angular, and GWT
|
|
27
|
-
* web pages containing HTML5 Video and Audio objects
|
|
27
|
+
* web pages containing HTML5 Video and Audio objects, including text caption tracks
|
|
28
28
|
* locally hosted emulated iOS Mobile Safari, Android, Windows Phone, or Blackberry mobile browsers (running within a local instance of Chrome)
|
|
29
29
|
|
|
30
30
|
|
|
@@ -40,15 +40,15 @@ Cucumber can be found [here](https://github.com/TestCentricity/tc_multi_webdrive
|
|
|
40
40
|
|
|
41
41
|
### Which gem should I use?
|
|
42
42
|
|
|
43
|
-
* The [TestCentricity For **Web** gem](https://rubygems.org/gems/testcentricity_web) supports testing of web
|
|
43
|
+
* The [TestCentricity For **Web** gem](https://rubygems.org/gems/testcentricity_web) supports testing of web apps via desktop and mobile web browsers
|
|
44
44
|
* The [TestCentricity For **Mobile** gem](https://rubygems.org/gems/testcentricity_mobile) supports testing of native iOS and Android mobile apps
|
|
45
45
|
* The [TestCentricity For **Apps** gem](https://rubygems.org/gems/testcentricity_apps) supports testing of MacOS desktop apps and native iOS and Android mobile apps
|
|
46
46
|
|
|
47
|
-
| Tested platforms
|
|
48
|
-
|
|
49
|
-
| Desktop/mobile web
|
|
50
|
-
| Native mobile iOS and/or Android apps only
|
|
51
|
-
| MacOS desktop apps
|
|
47
|
+
| Tested platforms | TestCentricity For Web | TestCentricity For Mobile | TestCentricity For Apps |
|
|
48
|
+
|--------------------------------------------|:----------------------:|:-------------------------:|:-----------------------:|
|
|
49
|
+
| Desktop/mobile web apps only | Yes | No | No |
|
|
50
|
+
| Native mobile iOS and/or Android apps only | No | Yes | Yes |
|
|
51
|
+
| MacOS desktop apps | No | No | Yes |
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
## Installation
|
|
@@ -784,9 +784,12 @@ The `verify_ui_states` method supports the following property/state pairs:
|
|
|
784
784
|
:rowcount Integer
|
|
785
785
|
:columncount Integer
|
|
786
786
|
:columnheaders Array of String
|
|
787
|
+
:columnfooters Array of String
|
|
787
788
|
:cell Hash
|
|
788
789
|
:row Hash
|
|
789
790
|
:column Hash
|
|
791
|
+
:column_header Hash
|
|
792
|
+
:column_footer Hash
|
|
790
793
|
:cell_attribute Integer, Float, or String
|
|
791
794
|
:row_attribute Integer, Float, or String
|
|
792
795
|
:aria_rowindex Integer
|
|
@@ -165,6 +165,8 @@ module TestCentricity
|
|
|
165
165
|
ui_object.get_group_headings
|
|
166
166
|
when :column_headers
|
|
167
167
|
ui_object.get_header_columns
|
|
168
|
+
when :column_footers
|
|
169
|
+
ui_object.get_footer_columns
|
|
168
170
|
when :count, :count_visible
|
|
169
171
|
ui_object.count(visible = true)
|
|
170
172
|
when :all_items, :all_list_items
|
|
@@ -281,6 +283,10 @@ module TestCentricity
|
|
|
281
283
|
ui_object.get_table_row(value.to_i)
|
|
282
284
|
when :column
|
|
283
285
|
ui_object.get_table_column(value.to_i)
|
|
286
|
+
when :column_header
|
|
287
|
+
ui_object.get_header_column(value.to_i)
|
|
288
|
+
when :column_footer
|
|
289
|
+
ui_object.get_footer_column(value.to_i)
|
|
284
290
|
when :item
|
|
285
291
|
ui_object.get_list_item(value.to_i)
|
|
286
292
|
when :attribute
|
|
@@ -8,6 +8,9 @@ module TestCentricity
|
|
|
8
8
|
attr_accessor :table_header
|
|
9
9
|
attr_accessor :header_row
|
|
10
10
|
attr_accessor :header_column
|
|
11
|
+
attr_accessor :table_footer
|
|
12
|
+
attr_accessor :footer_row
|
|
13
|
+
attr_accessor :footer_column
|
|
11
14
|
attr_accessor :row_header
|
|
12
15
|
attr_accessor :tree_expand
|
|
13
16
|
attr_accessor :tree_collapse
|
|
@@ -24,6 +27,9 @@ module TestCentricity
|
|
|
24
27
|
table_header: 'thead',
|
|
25
28
|
header_row: 'tr',
|
|
26
29
|
header_column: 'th',
|
|
30
|
+
table_footer: 'tfoot',
|
|
31
|
+
footer_row: 'tr',
|
|
32
|
+
footer_column: 'th',
|
|
27
33
|
row_header: nil
|
|
28
34
|
}
|
|
29
35
|
|
|
@@ -55,6 +61,12 @@ module TestCentricity
|
|
|
55
61
|
@header_row = value
|
|
56
62
|
when :header_column
|
|
57
63
|
@header_column = value
|
|
64
|
+
when :table_footer
|
|
65
|
+
@table_footer = value
|
|
66
|
+
when :footer_row
|
|
67
|
+
@footer_row = value
|
|
68
|
+
when :footer_column
|
|
69
|
+
@footer_column = value
|
|
58
70
|
when :row_header
|
|
59
71
|
@row_header = value
|
|
60
72
|
when :tree_expand
|
|
@@ -576,6 +588,36 @@ module TestCentricity
|
|
|
576
588
|
columns
|
|
577
589
|
end
|
|
578
590
|
|
|
591
|
+
def get_footer_column(column)
|
|
592
|
+
column_count = get_column_count
|
|
593
|
+
raise "Column #{column} exceeds number of columns (#{column_count}) in table footer #{object_ref_message}" if column > column_count
|
|
594
|
+
case @locator_type
|
|
595
|
+
when :xpath
|
|
596
|
+
set_alt_locator("#{@locator}//#{@table_footer}/#{@footer_row}/#{@footer_column}[#{column}]")
|
|
597
|
+
when :css
|
|
598
|
+
set_alt_locator("#{@locator} #{@table_footer} > #{@footer_row} > #{@footer_column}:nth-of-type(#{column})")
|
|
599
|
+
end
|
|
600
|
+
value = get_value(:all) if exists?(:all)
|
|
601
|
+
clear_alt_locator
|
|
602
|
+
value
|
|
603
|
+
end
|
|
604
|
+
|
|
605
|
+
def get_footer_columns
|
|
606
|
+
columns = []
|
|
607
|
+
column_count = get_column_count
|
|
608
|
+
(1..column_count).each do |column|
|
|
609
|
+
case @locator_type
|
|
610
|
+
when :xpath
|
|
611
|
+
set_alt_locator("#{@locator}//#{@table_footer}/#{@footer_row}/#{@footer_column}[#{column}]")
|
|
612
|
+
when :css
|
|
613
|
+
set_alt_locator("#{@locator} #{@table_footer} > #{@footer_row} > #{@footer_column}:nth-of-type(#{column})")
|
|
614
|
+
end
|
|
615
|
+
columns.push(get_value(:all)) if exists?(:all)
|
|
616
|
+
end
|
|
617
|
+
clear_alt_locator
|
|
618
|
+
columns
|
|
619
|
+
end
|
|
620
|
+
|
|
579
621
|
def is_table_row_expanded?(row, column)
|
|
580
622
|
row_count = get_row_count
|
|
581
623
|
raise "Row #{row} exceeds number of rows (#{row_count}) in table #{object_ref_message}" if row > row_count
|
|
@@ -92,27 +92,6 @@ module TestCentricity
|
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
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
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
95
|
# Return step attribute of a number type text field.
|
|
117
96
|
#
|
|
118
97
|
# @return [Integer]
|
|
@@ -577,13 +577,15 @@ module TestCentricity
|
|
|
577
577
|
def get_value(visible = true)
|
|
578
578
|
obj, type = find_element(visible)
|
|
579
579
|
object_not_found_exception(obj, type)
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
580
|
+
value = case obj.tag_name.downcase
|
|
581
|
+
when 'input', 'select', 'textarea'
|
|
582
|
+
obj.value
|
|
583
|
+
when 'progress'
|
|
584
|
+
obj.value.to_i
|
|
585
|
+
else
|
|
586
|
+
obj.text
|
|
587
|
+
end
|
|
588
|
+
value.is_a?(String) ? value.gsub(/[[:space:]]+/, ' ').strip : value
|
|
587
589
|
end
|
|
588
590
|
|
|
589
591
|
alias get_caption get_value
|
|
@@ -700,6 +702,27 @@ module TestCentricity
|
|
|
700
702
|
)
|
|
701
703
|
end
|
|
702
704
|
|
|
705
|
+
# Return max attribute of a number type text field or a progress bar.
|
|
706
|
+
#
|
|
707
|
+
# @return [Integer]
|
|
708
|
+
# @example
|
|
709
|
+
# max_points_value = points_field.get_max
|
|
710
|
+
#
|
|
711
|
+
def get_max
|
|
712
|
+
obj, = find_element
|
|
713
|
+
object_not_found_exception(obj, nil)
|
|
714
|
+
max = obj.native.attribute('max')
|
|
715
|
+
unless max.blank?
|
|
716
|
+
if max.is_int?
|
|
717
|
+
max.to_i
|
|
718
|
+
elsif max.is_float?
|
|
719
|
+
max.to_f
|
|
720
|
+
else
|
|
721
|
+
max
|
|
722
|
+
end
|
|
723
|
+
end
|
|
724
|
+
end
|
|
725
|
+
|
|
703
726
|
# Return UI object's style property
|
|
704
727
|
#
|
|
705
728
|
# @return [String]
|
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.6.
|
|
4
|
+
version: 4.6.9
|
|
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: 2025-10-
|
|
11
|
+
date: 2025-10-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - "~>"
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 4.
|
|
145
|
+
version: 4.38.0
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 4.
|
|
152
|
+
version: 4.38.0
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: simplecov
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|