testcentricity 2.4.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +29 -0
  3. data/.rspec +2 -1
  4. data/.rubocop.yml +38 -0
  5. data/.ruby-version +1 -1
  6. data/.simplecov +9 -0
  7. data/.yardopts +3 -0
  8. data/CHANGELOG.md +275 -0
  9. data/CODE_OF_CONDUCT.md +13 -0
  10. data/{LICENSE.txt → LICENSE.md} +3 -4
  11. data/README.md +938 -1378
  12. data/Rakefile +63 -1
  13. data/config/cucumber.yml +145 -0
  14. data/config/locales/en-US.yml +56 -0
  15. data/config/test_data/LOCAL_data.yml +11 -0
  16. data/config/test_data/data.yml +10 -0
  17. data/features/deep_links.feature +26 -0
  18. data/features/login.feature +30 -0
  19. data/features/navigation.feature +31 -0
  20. data/features/step_definitions/generic_steps.rb +72 -0
  21. data/features/support/android/screens/about_screen.rb +11 -0
  22. data/features/support/android/screens/base_app_screen.rb +29 -0
  23. data/features/support/android/screens/checkout_address_screen.rb +17 -0
  24. data/features/support/android/screens/checkout_payment_screen.rb +22 -0
  25. data/features/support/android/screens/login_screen.rb +18 -0
  26. data/features/support/android/screens/products_screen.rb +13 -0
  27. data/features/support/android/screens/saucebot_screen.rb +16 -0
  28. data/features/support/android/screens/webview_screen.rb +13 -0
  29. data/features/support/android/sections/nav_widgets/nav_menu.rb +39 -0
  30. data/features/support/env.rb +61 -0
  31. data/features/support/hooks.rb +135 -0
  32. data/features/support/ios/screens/about_screen.rb +11 -0
  33. data/features/support/ios/screens/base_app_screen.rb +19 -0
  34. data/features/support/ios/screens/checkout_address_screen.rb +17 -0
  35. data/features/support/ios/screens/checkout_payment_screen.rb +22 -0
  36. data/features/support/ios/screens/login_screen.rb +18 -0
  37. data/features/support/ios/screens/products_screen.rb +13 -0
  38. data/features/support/ios/screens/saucebot_screen.rb +16 -0
  39. data/features/support/ios/screens/webview_screen.rb +13 -0
  40. data/features/support/ios/sections/list_items/product_cell_item.rb +13 -0
  41. data/features/support/ios/sections/modals/base_modal.rb +23 -0
  42. data/features/support/ios/sections/modals/logout_modal.rb +6 -0
  43. data/features/support/ios/sections/modals/reset_app_state_modal.rb +6 -0
  44. data/features/support/ios/sections/nav_widgets/nav_bar.rb +31 -0
  45. data/features/support/ios/sections/nav_widgets/nav_menu.rb +41 -0
  46. data/features/support/shared_components/screens/base_app_screen.rb +31 -0
  47. data/features/support/shared_components/screens/checkout_address_screen.rb +17 -0
  48. data/features/support/shared_components/screens/checkout_payment_screen.rb +22 -0
  49. data/features/support/shared_components/screens/login_screen.rb +39 -0
  50. data/features/support/shared_components/screens/saucebot_screen.rb +17 -0
  51. data/features/support/shared_components/screens/webview_screen.rb +12 -0
  52. data/features/support/shared_components/sections/nav_menu.rb +58 -0
  53. data/features/support/world_data.rb +12 -0
  54. data/features/support/world_pages.rb +26 -0
  55. data/lib/testcentricity/app_core/appium_connect_helper.rb +355 -111
  56. data/lib/testcentricity/app_core/screen_object.rb +252 -0
  57. data/lib/testcentricity/app_core/screen_objects_helper.rb +29 -280
  58. data/lib/testcentricity/app_core/screen_section.rb +350 -0
  59. data/lib/testcentricity/app_elements/app_element_helper.rb +17 -8
  60. data/lib/testcentricity/app_elements/checkbox.rb +3 -3
  61. data/lib/testcentricity/data_objects/environment.rb +133 -39
  62. data/lib/testcentricity/version.rb +1 -1
  63. data/lib/testcentricity.rb +4 -129
  64. data/reports/.keep +1 -0
  65. data/spec/fixtures/page_object.rb +22 -0
  66. data/spec/fixtures/page_section_object.rb +21 -0
  67. data/spec/fixtures/screen_object.rb +16 -0
  68. data/spec/fixtures/screen_section_object.rb +16 -0
  69. data/spec/spec_helper.rb +28 -9
  70. data/spec/testcentricity/elements/button_spec.rb +18 -0
  71. data/spec/testcentricity/elements/checkbox_spec.rb +28 -0
  72. data/spec/testcentricity/elements/image_spec.rb +13 -0
  73. data/spec/testcentricity/elements/label_spec.rb +18 -0
  74. data/spec/testcentricity/elements/list_spec.rb +13 -0
  75. data/spec/testcentricity/elements/ui_element_spec.rb +72 -0
  76. data/spec/testcentricity/mobile/appium_connect_spec.rb +117 -0
  77. data/spec/testcentricity/mobile/screen_object_spec.rb +63 -0
  78. data/spec/testcentricity/mobile/screen_section_object_spec.rb +56 -0
  79. data/spec/testcentricity/version_spec.rb +7 -0
  80. data/spec/testcentricity/web/browser_spec.rb +41 -0
  81. data/spec/testcentricity/web/local_webdriver_spec.rb +86 -0
  82. data/spec/testcentricity/web/mobile_webdriver_spec.rb +123 -0
  83. data/spec/testcentricity/web/page_object_spec.rb +85 -0
  84. data/spec/testcentricity/web/page_section_object_spec.rb +72 -0
  85. data/testcentricity.gemspec +28 -27
  86. metadata +196 -127
  87. data/.ruby-gemset +0 -1
  88. data/Gemfile.lock +0 -93
  89. data/bin/console +0 -14
  90. data/bin/setup +0 -8
  91. data/lib/devices/devices.yml +0 -352
  92. data/lib/testcentricity/app_core/appium_server.rb +0 -69
  93. data/lib/testcentricity/app_core/screen_sections_helper.rb +0 -491
  94. data/lib/testcentricity/browser_helper.rb +0 -174
  95. data/lib/testcentricity/data_objects/data_objects_helper.rb +0 -78
  96. data/lib/testcentricity/data_objects/excel_helper.rb +0 -242
  97. data/lib/testcentricity/exception_queue_helper.rb +0 -111
  98. data/lib/testcentricity/utility_helpers.rb +0 -28
  99. data/lib/testcentricity/web_core/drag_drop_helper.rb +0 -15
  100. data/lib/testcentricity/web_core/page_objects_helper.rb +0 -711
  101. data/lib/testcentricity/web_core/page_sections_helper.rb +0 -932
  102. data/lib/testcentricity/web_core/webdriver_helper.rb +0 -588
  103. data/lib/testcentricity/web_elements/button.rb +0 -8
  104. data/lib/testcentricity/web_elements/cell_button.rb +0 -8
  105. data/lib/testcentricity/web_elements/cell_checkbox.rb +0 -38
  106. data/lib/testcentricity/web_elements/cell_element.rb +0 -69
  107. data/lib/testcentricity/web_elements/cell_image.rb +0 -8
  108. data/lib/testcentricity/web_elements/cell_radio.rb +0 -31
  109. data/lib/testcentricity/web_elements/checkbox.rb +0 -100
  110. data/lib/testcentricity/web_elements/file_field.rb +0 -45
  111. data/lib/testcentricity/web_elements/image.rb +0 -34
  112. data/lib/testcentricity/web_elements/label.rb +0 -8
  113. data/lib/testcentricity/web_elements/link.rb +0 -8
  114. data/lib/testcentricity/web_elements/list.rb +0 -100
  115. data/lib/testcentricity/web_elements/list_button.rb +0 -8
  116. data/lib/testcentricity/web_elements/list_checkbox.rb +0 -38
  117. data/lib/testcentricity/web_elements/list_element.rb +0 -61
  118. data/lib/testcentricity/web_elements/list_radio.rb +0 -31
  119. data/lib/testcentricity/web_elements/radio.rb +0 -74
  120. data/lib/testcentricity/web_elements/select_list.rb +0 -208
  121. data/lib/testcentricity/web_elements/siebel_open_ui_helper.rb +0 -15
  122. data/lib/testcentricity/web_elements/table.rb +0 -612
  123. data/lib/testcentricity/web_elements/textfield.rb +0 -114
  124. data/lib/testcentricity/web_elements/ui_elements_helper.rb +0 -532
  125. data/lib/testcentricity/world_extensions.rb +0 -26
  126. data/my_templates/default/method_details/setup.rb +0 -3
  127. data/spec/testcentricity_spec.rb +0 -9
@@ -1,208 +0,0 @@
1
- module TestCentricity
2
- class SelectList < UIElement
3
- attr_accessor :list_item
4
- attr_accessor :selected_item
5
- attr_accessor :list_trigger
6
-
7
- def initialize(name, parent, locator, context)
8
- super
9
- @type = :selectlist
10
- list_spec = {
11
- :list_item => "li[class*='active-result']",
12
- :selected_item => "li[class*='result-selected']",
13
- :list_trigger => nil
14
- }
15
- define_list_elements(list_spec)
16
- end
17
-
18
- def define_list_elements(element_spec)
19
- element_spec.each do |element, value|
20
- case element
21
- when :list_item
22
- @list_item = value
23
- when :selected_item
24
- @selected_item = value
25
- when :list_trigger
26
- @list_trigger = value
27
- else
28
- raise "#{element} is not a recognized selectlist element"
29
- end
30
- end
31
- end
32
-
33
- # Select the specified option in a select box object. Accepts a String or Hash.
34
- # Supports standard HTML select objects and Chosen select objects.
35
- #
36
- # @param option [String] text of option to select
37
- # OR
38
- # @param option [Hash] :value, :index, or :text of option to select
39
- #
40
- # @example
41
- # province_select.choose_option('Alberta')
42
- # province_select.choose_option(:value => 'AB')
43
- # state_select.choose_option(:index => 24)
44
- # state_select.choose_option(:text => 'Maryland')
45
- #
46
- def choose_option(option)
47
- obj, = find_element
48
- object_not_found_exception(obj, nil)
49
- if @list_trigger.nil?
50
- obj.click
51
- else
52
- page.find(:css, @list_trigger).click
53
- sleep(1)
54
- end
55
- if first(:css, @list_item)
56
- if option.is_a?(Array)
57
- option.each do |item|
58
- page.find(:css, @list_item, text: item.strip).click
59
- end
60
- else
61
- if option.is_a?(Hash)
62
- page.find(:css, "#{@list_item}:nth-of-type(#{option[:index]})").click if option.has_key?(:index)
63
- page.find(:css, "#{@list_item}:nth-of-type(#{option[:value]})").click if option.has_key?(:value)
64
- page.find(:css, "#{@list_item}:nth-of-type(#{option[:text]})").click if option.has_key?(:text)
65
- else
66
- options = obj.all(@list_item).collect(&:text)
67
- sleep(2) unless options.include?(option)
68
- first(:css, @list_item, text: option).click
69
- end
70
- end
71
- else
72
- if option.is_a?(Array)
73
- option.each do |item|
74
- select_item(obj, item)
75
- end
76
- else
77
- select_item(obj, option)
78
- end
79
- end
80
- end
81
-
82
- # Return array of strings of all options in a select box object.
83
- # Supports standard HTML select objects and Chosen select objects.
84
- #
85
- # @return [Array]
86
- # @example
87
- # all_colors = color_select.get_options
88
- #
89
- def get_options
90
- obj, = find_element
91
- object_not_found_exception(obj, nil)
92
- if first(:css, @list_item)
93
- obj.all(@list_item).collect(&:text)
94
- else
95
- obj.all('option').collect(&:text)
96
- end
97
- end
98
-
99
- alias get_list_items get_options
100
-
101
- # Return the number of options in a select box object.
102
- # Supports standard HTML select objects and Chosen select objects.
103
- #
104
- # @return [Integer]
105
- # @example
106
- # num_colors = color_select.get_option_count
107
- #
108
- def get_option_count
109
- obj, = find_element
110
- object_not_found_exception(obj, nil)
111
- if first(:css, @list_item)
112
- obj.all(@list_item).count
113
- else
114
- obj.all('option').count
115
- end
116
- end
117
-
118
- alias get_item_count get_option_count
119
-
120
- def verify_options(expected, enqueue = false)
121
- actual = get_options
122
- enqueue ?
123
- ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list of options in list #{object_ref_message}") :
124
- assert_equal(expected, actual, "Expected list of options in list #{object_ref_message} to be #{expected} but found #{actual}")
125
- end
126
-
127
- # Return text of first selected option in a select box object.
128
- # Supports standard HTML select objects and Chosen select objects.
129
- #
130
- # @return [String]
131
- # @example
132
- # current_color = color_select.get_selected_option
133
- #
134
- def get_selected_option
135
- obj, = find_element
136
- object_not_found_exception(obj, nil)
137
- if first(:css, @list_item)
138
- obj.first(:css, @selected_item).text
139
- else
140
- obj.first('option[selected]').text
141
- end
142
- end
143
-
144
- alias selected? get_selected_option
145
-
146
- # Select the specified option in a Siebel OUI select box object.
147
- #
148
- # @param option [String] text of option to select
149
- # @example
150
- # country_select.choose_siebel_option('Cayman Islands')
151
- #
152
- def choose_siebel_option(option)
153
- Capybara.wait_on_first_by_default = true
154
- invoke_siebel_popup
155
- first(:xpath, "//li[@class='ui-menu-item']", :exact => true, :match => :prefer_exact, text: option).click
156
- end
157
-
158
- # Return array of strings of all options in a Siebel OUI select box object.
159
- #
160
- # @return [Array]
161
- # @example
162
- # all_countries = country_select.get_siebel_options
163
- #
164
- def get_siebel_options
165
- invoke_siebel_popup
166
- sleep(0.5)
167
- options = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
168
- obj, = find_element
169
- obj.native.send_keys(:escape)
170
- options
171
- end
172
-
173
- def verify_siebel_options(expected, enqueue = false)
174
- invoke_siebel_popup
175
- sleep(0.5)
176
- actual = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
177
- enqueue ?
178
- ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list of options in list #{object_ref_message}") :
179
- assert_equal(expected, actual, "Expected list of options in list #{object_ref_message} to be #{expected} but found #{actual}")
180
- obj, = find_element
181
- obj.native.send_keys(:escape)
182
- end
183
-
184
- # Is Siebel JComboBox set to read-only?
185
- #
186
- # @return [Boolean]
187
- # @example
188
- # country_select.read_only?
189
- #
190
- def read_only?
191
- obj, = find_element
192
- object_not_found_exception(obj, nil)
193
- !obj.native.attribute('readonly')
194
- end
195
-
196
- private
197
-
198
- def select_item(obj, option)
199
- if option.is_a?(Hash)
200
- obj.find("option[value='#{option[:value]}']").click if option.has_key?(:value)
201
- obj.find(:xpath, "option[#{option[:index]}]").select_option if option.has_key?(:index)
202
- obj.select option[:text] if option.has_key?(:text)
203
- else
204
- obj.select option
205
- end
206
- end
207
- end
208
- end
@@ -1,15 +0,0 @@
1
- module TestCentricity
2
- class UIElement
3
- def invoke_siebel_dialog(popup, seconds = nil)
4
- invoke_siebel_popup
5
- timeout = seconds.nil? ? 15 : seconds
6
- popup.wait_until_exists(timeout)
7
- end
8
-
9
- def get_siebel_object_type
10
- obj, = find_element
11
- object_not_found_exception(obj, 'Siebel object')
12
- obj.native.attribute('ot')
13
- end
14
- end
15
- end