testcentricity_web 3.2.0 → 3.2.1

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.
@@ -1,11 +1,5 @@
1
- require 'test/unit'
2
-
3
1
  module TestCentricity
4
- class PageSection
5
- include Capybara::DSL
6
- include Capybara::Node::Matchers
7
- include Test::Unit::Assertions
8
-
2
+ class PageSection < BasePageSectionObject
9
3
  attr_reader :context, :name
10
4
  attr_accessor :locator
11
5
  attr_accessor :parent
@@ -125,18 +119,6 @@ module TestCentricity
125
119
  @parent = parent
126
120
  end
127
121
 
128
- # Define a trait for this page section.
129
- #
130
- # @param trait_name [Symbol] name of trait (as a symbol)
131
- # @param block [&block] trait value
132
- # @example
133
- # trait(:section_locator) { "//div[@class='Messaging_Applet']" }
134
- # trait(:list_table_name) { '#Messages' }
135
- #
136
- def self.trait(trait_name, &block)
137
- define_method(trait_name.to_s, &block)
138
- end
139
-
140
122
  # Declare and instantiate a single generic UI Element for this page section.
141
123
  #
142
124
  # @param element_name [Symbol] name of UI object (as a symbol)
@@ -734,248 +716,6 @@ module TestCentricity
734
716
  section.hover
735
717
  end
736
718
 
737
- def verify_ui_states(ui_states, fail_message = nil)
738
- ui_states.each do |ui_object, object_states|
739
- object_states.each do |property, state|
740
- case property
741
- when :class
742
- actual = ui_object.get_attribute(:class)
743
- when :name
744
- actual = ui_object.get_attribute(:name)
745
- when :title
746
- actual = ui_object.title
747
- when :exists
748
- actual = ui_object.exists?
749
- when :enabled
750
- actual = ui_object.enabled?
751
- when :disabled
752
- actual = ui_object.disabled?
753
- when :visible
754
- actual = ui_object.visible?
755
- when :hidden
756
- actual = ui_object.hidden?
757
- when :displayed
758
- actual = ui_object.displayed?
759
- when :width
760
- actual = ui_object.width
761
- when :height
762
- actual = ui_object.height
763
- when :x
764
- actual = ui_object.x
765
- when :y
766
- actual = ui_object.y
767
- when :readonly
768
- actual = ui_object.read_only?
769
- when :checked
770
- actual = ui_object.checked?
771
- when :selected
772
- actual = ui_object.selected?
773
- when :value, :caption
774
- actual = ui_object.get_value
775
- when :maxlength
776
- actual = ui_object.get_max_length
777
- when :rowcount
778
- actual = ui_object.get_row_count
779
- when :columncount
780
- actual = ui_object.get_column_count
781
- when :placeholder
782
- actual = ui_object.get_placeholder
783
- when :min
784
- actual = ui_object.get_min
785
- when :max
786
- actual = ui_object.get_max
787
- when :step
788
- actual = ui_object.get_step
789
- when :loaded
790
- actual = ui_object.loaded?
791
- when :broken
792
- actual = ui_object.broken?
793
- when :alt
794
- actual = ui_object.alt
795
- when :src
796
- actual = ui_object.src
797
- when :autoplay
798
- actual = ui_object.autoplay?
799
- when :ended
800
- actual = ui_object.ended?
801
- when :controls
802
- actual = ui_object.controls?
803
- when :loop
804
- actual = ui_object.loop?
805
- when :muted
806
- actual = ui_object.muted?
807
- when :default_muted
808
- actual = ui_object.default_muted?
809
- when :paused
810
- actual = ui_object.paused?
811
- when :seeking
812
- actual = ui_object.seeking?
813
- when :current_time
814
- actual = ui_object.current_time
815
- when :default_playback_rate
816
- actual = ui_object.default_playback_rate
817
- when :duration
818
- actual = ui_object.duration
819
- when :playback_rate
820
- actual = ui_object.playback_rate
821
- when :ready_state
822
- actual = ui_object.ready_state
823
- when :volume
824
- actual = ui_object.volume
825
- when :options, :items, :list_items
826
- actual = ui_object.get_list_items
827
- when :optioncount, :itemcount
828
- actual = ui_object.get_item_count
829
- when :groupcount
830
- actual = ui_object.get_group_count
831
- when :group_headings
832
- actual = ui_object.get_group_headings
833
- when :all_items, :all_list_items
834
- actual = ui_object.get_all_list_items
835
- when :all_items_count
836
- actual = ui_object.get_all_items_count
837
- when :column_headers
838
- actual = ui_object.get_header_columns
839
- when :count, :count_visible
840
- actual = ui_object.count(visible = true)
841
- when :count_all
842
- actual = ui_object.count(visible = :all)
843
- when :siebel_options
844
- actual = ui_object.get_siebel_options
845
- when :style
846
- actual = ui_object.style
847
- when :href
848
- actual = ui_object.href
849
- when :role
850
- actual = ui_object.role
851
- when :aria_label
852
- actual = ui_object.aria_label
853
- when :aria_disabled
854
- actual = ui_object.aria_disabled?
855
- when :tabindex
856
- actual = ui_object.tabindex
857
- when :aria_labelledby
858
- actual = ui_object.aria_labelledby
859
- when :aria_describedby
860
- actual = ui_object.aria_describedby
861
- when :aria_live
862
- actual = ui_object.aria_live
863
- when :aria_selected
864
- actual = ui_object.aria_selected?
865
- when :aria_hidden
866
- actual = ui_object.aria_hidden?
867
- when :aria_expanded
868
- actual = ui_object.aria_expanded?
869
- when :aria_required
870
- actual = ui_object.aria_required?
871
- when :aria_invalid
872
- actual = ui_object.aria_invalid?
873
- when :aria_checked
874
- actual = ui_object.aria_checked?
875
- when :aria_readonly
876
- actual = ui_object.aria_readonly?
877
- when :aria_pressed
878
- actual = ui_object.aria_pressed?
879
- when :aria_haspopup
880
- actual = ui_object.aria_haspopup?
881
- when :aria_sort
882
- actual = ui_object.aria_sort
883
- when :aria_rowcount
884
- actual = ui_object.aria_rowcount
885
- when :aria_colcount
886
- actual = ui_object.aria_colcount
887
- else
888
- if property.is_a?(Hash)
889
- property.each do |key, value|
890
- case key
891
- when :cell
892
- actual = ui_object.get_table_cell(value[0].to_i, value[1].to_i)
893
- when :row
894
- actual = ui_object.get_table_row(value.to_i)
895
- when :column
896
- actual = ui_object.get_table_column(value.to_i)
897
- when :item
898
- actual = ui_object.get_list_item(value.to_i)
899
- when :attribute
900
- actual = ui_object.get_attribute(value)
901
- when :native_attribute
902
- actual = ui_object.get_native_attribute(value)
903
- end
904
- end
905
- end
906
- end
907
- error_msg = "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property} property to"
908
- ExceptionQueue.enqueue_comparison(ui_object, state, actual, error_msg)
909
- end
910
- end
911
- rescue ObjectNotFoundError => e
912
- ExceptionQueue.enqueue_exception(e.message)
913
- ensure
914
- ExceptionQueue.post_exceptions(fail_message)
915
- end
916
-
917
- # Populate the specified UI elements in this Section object with the associated data from a Hash passed as an
918
- # argument. Data values must be in the form of a String for textfield and select list controls. For checkbox
919
- # and radio buttons, data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1,
920
- # 0, true, false).
921
- #
922
- # The optional wait_time parameter is used to specify the time (in seconds) to wait for each UI element to become
923
- # visible before entering the associated data value. This option is useful in situations where entering data, or
924
- # setting the state of a UI element might cause other UI elements to become visible or active. Specifying a wait_time
925
- # value ensures that the subsequent UI elements will be ready to be interacted with as states are changed. If the wait
926
- # time is nil, then the wait time will be 5 seconds.
927
- #
928
- # To delete all text content in a text field, pass !DELETE as the data to be entered.
929
- #
930
- # @param data [Hash] UI element(s) and associated data to be entered
931
- # @param wait_time [Integer] wait time in seconds
932
- # @param integrity_check [Boolean] if TRUE, ensure that text entered into text fields matches what was entered
933
- # @example
934
- # data = { prefix_select => 'Mr.',
935
- # first_name_field => 'Ignatious',
936
- # last_name_field => 'Snickelfritz',
937
- # gender_select => 'Male',
938
- # dob_field => '12/14/1957',
939
- # organ_donor_check => 'Yes',
940
- # dnr_on_file_check => 'Yes'
941
- # }
942
- # populate_data_fields(data)
943
- #
944
- def populate_data_fields(data, wait_time = nil, integrity_check = false)
945
- timeout = wait_time.nil? ? 5 : wait_time
946
- data.each do |data_field, data_param|
947
- unless data_param.blank?
948
- # make sure the intended UI target element is visible before trying to set its value
949
- data_field.wait_until_visible(timeout)
950
- if data_param == '!DELETE'
951
- data_field.clear
952
- else
953
- case data_field.get_object_type
954
- when :checkbox
955
- data_field.set_checkbox_state(data_param.to_bool)
956
- when :selectlist
957
- if data_field.get_siebel_object_type == 'JComboBox'
958
- data_field.set("#{data_param}\t")
959
- else
960
- data_field.choose_option(data_param)
961
- end
962
- when :radio
963
- data_field.set_selected_state(data_param.to_bool)
964
- when :textfield
965
- data_field.set("#{data_param}\t")
966
- if integrity_check && data_field.get_value != data_param
967
- data_field.set('')
968
- data_field.send_keys(data_param)
969
- data_field.send_keys(:tab)
970
- end
971
- when :section
972
- data_field.set(data_param)
973
- end
974
- end
975
- end
976
- end
977
- end
978
-
979
719
  def get_attribute(attrib)
980
720
  section, = find_section
981
721
  section_not_found_exception(section)
@@ -19,12 +19,12 @@ module TestCentricity
19
19
 
20
20
  def set_column(column)
21
21
  @column = column
22
- case @locator_type
23
- when :xpath
24
- @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)}/#{@element_locator}"
25
- when :css
26
- @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)} > #{@element_locator}"
27
- end
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
28
  end
29
29
 
30
30
  def exists?(row)
@@ -36,6 +36,39 @@ module TestCentricity
36
36
  obj.checked?
37
37
  end
38
38
 
39
+ # Is checkbox visible?
40
+ #
41
+ # @return [Boolean]
42
+ # @example
43
+ # remember_me_checkbox.visible?
44
+ #
45
+ def visible?
46
+ @proxy.nil? ? super : @proxy.visible?
47
+ end
48
+
49
+ # Is checkbox disabled (not enabled)?
50
+ #
51
+ # @return [Boolean]
52
+ # @example
53
+ # remember_me_checkbox.disabled?
54
+ #
55
+ def disabled?
56
+ visibility = @proxy.nil? ? true : :all
57
+ obj, type = find_element(visibility)
58
+ object_not_found_exception(obj, type)
59
+ obj.disabled?
60
+ end
61
+
62
+ # Return checkbox caption
63
+ #
64
+ # @return [Boolean]
65
+ # @example
66
+ # remember_me_checkbox.get_value
67
+ #
68
+ def get_value
69
+ @proxy.nil? ? super : @proxy.get_value
70
+ end
71
+
39
72
  # Set the check state of a checkbox object.
40
73
  #
41
74
  # @param state [Boolean] true = checked / false = unchecked
@@ -16,12 +16,12 @@ module TestCentricity
16
16
  if locator.nil?
17
17
  @locator = list.get_list_row_locator('ROW_SPEC')
18
18
  else
19
- case @locator_type
20
- when :xpath
21
- @locator = "#{list.get_list_row_locator('ROW_SPEC')}/#{@element_locator}"
22
- when :css
23
- @locator = "#{list.get_list_row_locator('ROW_SPEC')} > #{@element_locator}"
24
- end
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
25
  end
26
26
  end
27
27
 
@@ -36,6 +36,39 @@ module TestCentricity
36
36
  obj.checked?
37
37
  end
38
38
 
39
+ # Is radio button visible?
40
+ #
41
+ # @return [Boolean]
42
+ # @example
43
+ # accept_terms_radio.visible?
44
+ #
45
+ def visible?
46
+ @proxy.nil? ? super : @proxy.visible?
47
+ end
48
+
49
+ # Is radio button disabled (not enabled)?
50
+ #
51
+ # @return [Boolean]
52
+ # @example
53
+ # accept_terms_radio.disabled?
54
+ #
55
+ def disabled?
56
+ visibility = @proxy.nil? ? true : :all
57
+ obj, type = find_element(visibility)
58
+ object_not_found_exception(obj, type)
59
+ obj.disabled?
60
+ end
61
+
62
+ # Return radio button caption
63
+ #
64
+ # @return [Boolean]
65
+ # @example
66
+ # accept_terms_radio.get_value
67
+ #
68
+ def get_value
69
+ @proxy.nil? ? super : @proxy.get_value
70
+ end
71
+
39
72
  # Set the select state of a radio button object.
40
73
  #
41
74
  # @param state [Boolean] true = selected / false = unselected
@@ -45,8 +45,8 @@ module TestCentricity
45
45
  attr_reader :parent, :locator, :context, :type, :name
46
46
  attr_accessor :alt_locator, :locator_type, :original_style
47
47
 
48
- XPATH_SELECTORS = ['//', '[@', '[contains('].freeze
49
- CSS_SELECTORS = ['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains('].freeze
48
+ XPATH_SELECTORS = ['//', '[@', '[contains(']
49
+ CSS_SELECTORS = ['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains(']
50
50
 
51
51
  def initialize(name, parent, locator, context)
52
52
  @name = name
@@ -801,13 +801,13 @@ module TestCentricity
801
801
  end
802
802
 
803
803
  def get_attribute(attrib)
804
- obj, type = find_element(false)
804
+ obj, type = find_element(visible = false)
805
805
  object_not_found_exception(obj, type)
806
806
  obj[attrib]
807
807
  end
808
808
 
809
809
  def get_native_attribute(attrib)
810
- obj, type = find_element(false)
810
+ obj, type = find_element(visible = false)
811
811
  object_not_found_exception(obj, type)
812
812
  obj.native.attribute(attrib)
813
813
  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: 3.2.0
4
+ version: 3.2.1
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: 2019-07-31 00:00:00.000000000 Z
11
+ date: 2019-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -274,8 +274,9 @@ files:
274
274
  - lib/testcentricity_web/utility_helpers.rb
275
275
  - lib/testcentricity_web/version.rb
276
276
  - lib/testcentricity_web/web_core/drag_drop_helper.rb
277
+ - lib/testcentricity_web/web_core/page_object.rb
277
278
  - lib/testcentricity_web/web_core/page_objects_helper.rb
278
- - lib/testcentricity_web/web_core/page_sections_helper.rb
279
+ - lib/testcentricity_web/web_core/page_section.rb
279
280
  - lib/testcentricity_web/web_core/webdriver_helper.rb
280
281
  - lib/testcentricity_web/web_elements/audio.rb
281
282
  - lib/testcentricity_web/web_elements/button.rb
@@ -325,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
325
326
  requirements:
326
327
  - Capybara, Selenium-WebDriver
327
328
  rubyforge_project:
328
- rubygems_version: 2.7.9
329
+ rubygems_version: 2.6.14
329
330
  signing_key:
330
331
  specification_version: 4
331
332
  summary: A Page Object and Data Object Model Framework for desktop and mobile web