testcentricity_web 3.1.7 → 3.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d020866a145ba6ad53811773f2949f0caabd8eae
4
- data.tar.gz: cb94a1765b8cda6b95f741b06ea365b9c9e0296b
3
+ metadata.gz: 0ee5ffc5b5c66d609117bd4b61b894eec784dbdf
4
+ data.tar.gz: 4a169b25e059859ad4b7a2f3d8bc420f3d990cab
5
5
  SHA512:
6
- metadata.gz: 25e5dac7edc1af4d721b6f60ac5d4da9622aa8c2c275f4840bb0bebf2686dd57ef50c04ce1d360da3e7eab33ac9547984b94b9d549f20a67a26dd72ee526c678
7
- data.tar.gz: 17eedf849e3e0eff61d1d482bd84441b22e8ed4142a56838e1b6064007c7f5976e6244924e5bd9c69c488d3c26acb2aab3f648f43b0e2d0293af27435a342461
6
+ metadata.gz: 45237a60fcae4bd870fd2e69273acde68a34d98eba1adef24078c3e829027f029f3204ed27808027657a1f32e6df752c73c46973d94c356de79816c4a4f9df14
7
+ data.tar.gz: ebd3a02cdb35c91ed5b7c4e8e2ee47c6b688f4a8f4eb9d18100017ec143ec76c504a6efb77c779adeafb1099d434a77b35dc1e506097ea5b47bd41efbd816e5f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
+ ## [3.1.8] - 2019-05-08
6
+
7
+ ### Added
8
+ * Added `Link.href` method.
9
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to support verification of `href` property.
10
+
11
+ ### Changed
12
+ * Updated device profiles for iPhone 7 (iOS 12.2) with Mobile Firefox browser and iPad (iOS 12.2) with Mobile Firefox browser.
13
+ * Updated device profiles for iPhone 7 (iOS 12.2) with Mobile Edge browser and iPad (iOS 12.2) with Mobile Edge browser.
14
+ * Updated device profiles for iPhone 7 (iOS 12.2) with Mobile Chrome browser and iPad (iOS 12.2) with Mobile Chrome browser.
15
+
16
+
5
17
  ## [3.1.7] - 2019-02-01
6
18
 
7
19
  ### Added
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- testcentricity_web (3.1.7)
4
+ testcentricity_web (3.1.8)
5
5
  appium_lib
6
6
  browserstack-local
7
7
  capybara (>= 3.1, < 4)
@@ -21,11 +21,11 @@ GEM
21
21
  specs:
22
22
  addressable (2.6.0)
23
23
  public_suffix (>= 2.0.2, < 4.0)
24
- appium_lib (9.18.0)
25
- appium_lib_core (~> 2.3)
24
+ appium_lib (10.3.1)
25
+ appium_lib_core (~> 3.1)
26
26
  nokogiri (~> 1.8, >= 1.8.1)
27
27
  tomlrb (~> 1.1)
28
- appium_lib_core (2.3.4)
28
+ appium_lib_core (3.1.1)
29
29
  faye-websocket (~> 0.10.0)
30
30
  selenium-webdriver (~> 3.14, >= 3.14.1)
31
31
  axiom-types (0.1.1)
@@ -33,7 +33,7 @@ GEM
33
33
  ice_nine (~> 0.11.0)
34
34
  thread_safe (~> 0.3, >= 0.3.1)
35
35
  browserstack-local (1.3.0)
36
- capybara (3.13.2)
36
+ capybara (3.18.0)
37
37
  addressable
38
38
  mini_mime (>= 0.1.3)
39
39
  nokogiri (~> 1.8)
@@ -46,42 +46,41 @@ GEM
46
46
  chronic (0.10.2)
47
47
  coercible (1.0.0)
48
48
  descendants_tracker (~> 0.0.1)
49
- concurrent-ruby (1.1.4)
49
+ concurrent-ruby (1.1.5)
50
50
  descendants_tracker (0.0.4)
51
51
  thread_safe (~> 0.3, >= 0.3.1)
52
52
  equalizer (0.0.11)
53
53
  eventmachine (1.2.7)
54
- faker (1.9.1)
54
+ faker (1.9.3)
55
55
  i18n (>= 0.7)
56
56
  faye-websocket (0.10.7)
57
57
  eventmachine (>= 0.12.0)
58
58
  websocket-driver (>= 0.5.1)
59
59
  ffi (1.10.0)
60
- i18n (1.5.3)
60
+ i18n (1.6.0)
61
61
  concurrent-ruby (~> 1.0)
62
62
  ice_nine (0.11.2)
63
63
  mini_mime (1.0.1)
64
64
  mini_portile2 (2.4.0)
65
- net_http_ssl_fix (0.0.10)
66
- nokogiri (1.10.1)
65
+ nokogiri (1.10.3)
67
66
  mini_portile2 (~> 2.4.0)
68
- os (1.0.0)
69
- power_assert (1.1.3)
67
+ os (1.0.1)
68
+ power_assert (1.1.4)
70
69
  public_suffix (3.0.3)
71
- rack (2.0.6)
70
+ rack (2.0.7)
72
71
  rack-test (1.1.0)
73
72
  rack (>= 1.0, < 3)
74
73
  rake (12.3.2)
75
74
  redcarpet (3.4.0)
76
- regexp_parser (1.3.0)
77
- ruby-ole (1.2.12.1)
75
+ regexp_parser (1.4.0)
76
+ ruby-ole (1.2.12.2)
78
77
  rubyzip (1.2.2)
79
- selenium-webdriver (3.141.0)
80
- childprocess (~> 0.5)
78
+ selenium-webdriver (3.142.1)
79
+ childprocess (>= 0.5, < 2.0)
81
80
  rubyzip (~> 1.2, >= 1.2.2)
82
81
  spreadsheet (1.1.7)
83
82
  ruby-ole (>= 1.0)
84
- test-unit (3.3.0)
83
+ test-unit (3.3.2)
85
84
  power_assert
86
85
  thread_safe (0.3.6)
87
86
  tomlrb (1.2.8)
@@ -90,8 +89,7 @@ GEM
90
89
  coercible (~> 1.0)
91
90
  descendants_tracker (~> 0.0, >= 0.0.3)
92
91
  equalizer (~> 0.0, >= 0.0.9)
93
- webdrivers (3.6.0)
94
- net_http_ssl_fix
92
+ webdrivers (3.9.0)
95
93
  nokogiri (~> 1.6)
96
94
  rubyzip (~> 1.0)
97
95
  selenium-webdriver (~> 3.0)
data/README.md CHANGED
@@ -44,7 +44,7 @@ Or install it yourself as:
44
44
 
45
45
 
46
46
  ## Setup
47
- ###Using Cucumber
47
+ ### Using Cucumber
48
48
 
49
49
  If you are using Cucumber, you need to require the following in your *env.rb* file:
50
50
 
@@ -53,7 +53,7 @@ If you are using Cucumber, you need to require the following in your *env.rb* fi
53
53
  require 'testcentricity_web'
54
54
 
55
55
 
56
- ###Using RSpec
56
+ ### Using RSpec
57
57
 
58
58
  If you are using RSpec instead, you need to require the following in your *env.rb* file:
59
59
 
@@ -87,9 +87,9 @@ implementation details of a web page and expose an API that supports interaction
87
87
 
88
88
  **Page Objects** makes it easier to maintain automated tests because changes to page UI elements are updated in only one location - in the
89
89
  **Page Object** class definition. By adopting a **Page Object Model**, Cucumber Feature files and step definitions are no longer required to
90
- hold specific information about a page's UI objects, thus minimizing maintenance requirements. If any element on a page changes (URL path,
91
- text field attributes, button captions, etc.), maintenance is performed in the **Page Object** class definition only, typically with no need
92
- to update the affected feature file, scenarios, or step definitions.
90
+ hold specific information about a page's UI objects, thus minimizing maintenance requirements. If any element on, or property of a page changes
91
+ (URL path, text field attributes, button captions, etc.), maintenance is performed in the **Page Object** class definition only, typically with
92
+ no need to update the affected feature file, scenarios, or step definitions.
93
93
 
94
94
 
95
95
  ### Defining a Page Object
@@ -223,6 +223,7 @@ the UI to hide implementation details, as shown below:
223
223
  login_button.click
224
224
  end
225
225
 
226
+ # set the state of the Remember Me checkbox
226
227
  def remember_me(state)
227
228
  remember_checkbox.set_checkbox_state(state)
228
229
  end
@@ -230,6 +231,7 @@ the UI to hide implementation details, as shown below:
230
231
  # verify Login page default UI state
231
232
  def verify_page_ui
232
233
  ui = {
234
+ self => { title: 'Login' },
233
235
  login_button => { visible: true, caption: 'LOGIN' },
234
236
  user_id_field => { visible: true, enabled: true },
235
237
  password_field => { visible: true, enabled: true, value: '', placeholder: 'Password' },
@@ -261,7 +263,8 @@ the UI to hide implementation details, as shown below:
261
263
  gender_select: 'select#gender',
262
264
  state_select: 'select#stateProvince'
263
265
  checkbox :email_opt_in_check, 'input#marketingEmailsOptIn'
264
- button :sign_up_button, 'button#registrationSignUp'
266
+ buttons sign_up_button: 'button#registrationSignUp',
267
+ cancel_button: 'button#registrationCancel'
265
268
 
266
269
  # populate Registration page fields with profile data
267
270
  def enter_profile_data(profile)
@@ -771,12 +774,12 @@ the `WEB_BROWSER` Environment Variable must be set to one of the values from the
771
774
  ----------------------|----------------------|-----------|----------|---------
772
775
  `ipad` |`chrome` |1024 x 768 |landscape |iOS 12
773
776
  `ipad_pro` |`chrome` |1366 x 1024 |landscape |iOS 12
774
- `ipad_pro_10_5` |`chrome` |1112 x 834 |landscape |iOS 12
775
- `ipad_pro_11` |`chrome` |1194 x 834 |landscape |iOS 12.1
776
- `ipad_pro_12_9` |`chrome` |1366 x 1024 |landscape |iOS 12.1
777
- `ipad_chrome` |`chrome` |1024 x 768 |landscape |iOS 12.1 - Mobile Chrome browser for iOS
778
- `ipad_firefox` |`chrome` |1024 x 768 |landscape |iOS 12.1 - Mobile Firefox browser for iOS
779
- `ipad_edge` |`chrome` |1024 x 768 |landscape |iOS 12.1 - Mobile Edge browser for iOS
777
+ `ipad_pro_10_5` |`chrome` |1112 x 834 |landscape |iOS 12.2
778
+ `ipad_pro_11` |`chrome` |1194 x 834 |landscape |iOS 12.2
779
+ `ipad_pro_12_9` |`chrome` |1366 x 1024 |landscape |iOS 12.2
780
+ `ipad_chrome` |`chrome` |1024 x 768 |landscape |iOS 12.2 - Mobile Chrome browser for iOS
781
+ `ipad_firefox` |`chrome` |1024 x 768 |landscape |iOS 12.2 - Mobile Firefox browser for iOS
782
+ `ipad_edge` |`chrome` |1024 x 768 |landscape |iOS 12.2 - Mobile Edge browser for iOS
780
783
  `android_tablet` |`chrome` |1024 x 768 |landscape |Android 3.0
781
784
  `kindle_fire` |`chrome` |1024 x 600 |landscape |
782
785
  `kindle_firehd7` |`chrome` |800 x 480 |landscape |Fire OS 3
@@ -792,15 +795,15 @@ the `WEB_BROWSER` Environment Variable must be set to one of the values from the
792
795
  `iphone6_plus` |`chrome` |414 x 736 |portrait |iOS 12
793
796
  `iphone7` |`chrome` |375 x 667 |portrait |iOS 12
794
797
  `iphone7_plus` |`chrome` |414 x 736 |portrait |iOS 12
795
- `iphone7_chrome` |`chrome` |375 x 667 |portrait |iOS 12.1 - Mobile Chrome browser for iOS
796
- `iphone7_firefox` |`chrome` |375 x 667 |portrait |iOS 12.1 - Mobile Firefox browser for iOS
797
- `iphone7_edge` |`chrome` |375 x 667 |portrait |iOS 12.1 - Microsoft Edge browser for iOS
798
+ `iphone7_chrome` |`chrome` |375 x 667 |portrait |iOS 12.2 - Mobile Chrome browser for iOS
799
+ `iphone7_firefox` |`chrome` |375 x 667 |portrait |iOS 12.2 - Mobile Firefox browser for iOS
800
+ `iphone7_edge` |`chrome` |375 x 667 |portrait |iOS 12.2 - Microsoft Edge browser for iOS
798
801
  `iphone8` |`chrome` |375 x 667 |portrait |iOS 12
799
802
  `iphone8_plus` |`chrome` |414 x 736 |portrait |iOS 12
800
- `iphone_x` |`chrome` |375 x 812 |portrait |iOS 12.1
801
- `iphone_xr` |`chrome` |414 x 896 |portrait |iOS 12.1
802
- `iphone_xs` |`chrome` |375 x 812 |portrait |iOS 12.1
803
- `iphone_xs_max` |`chrome` |414 x 896 |portrait |iOS 12.1
803
+ `iphone_x` |`chrome` |375 x 812 |portrait |iOS 12.2
804
+ `iphone_xr` |`chrome` |414 x 896 |portrait |iOS 12.2
805
+ `iphone_xs` |`chrome` |375 x 812 |portrait |iOS 12.2
806
+ `iphone_xs_max` |`chrome` |414 x 896 |portrait |iOS 12.2
804
807
  `android_phone` |`chrome` |360 x 640 |portrait |Android 4.2.1
805
808
  `nexus6` |`chrome` |411 x 731 |portrait |Android 6
806
809
  `pixel` |`chrome` |411 x 731 |portrait |Android 8
@@ -37,7 +37,7 @@
37
37
  :css_width: 375
38
38
  :css_height: 667
39
39
  :default_orientation: portrait
40
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/70.0.3538.75 Mobile/15E148 Safari/605.1"
40
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/73.0.3683.68 Mobile/15E148 Safari/605.1"
41
41
  :iphone7_firefox:
42
42
  :name: "iPhone 7 - Firefox"
43
43
  :os: ios
@@ -45,7 +45,7 @@
45
45
  :css_width: 375
46
46
  :css_height: 667
47
47
  :default_orientation: portrait
48
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/14.0b12646 Mobile/16B92 Safari/605.1.15"
48
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/16.0b14732 Mobile/15E148 Safari/605.1.15"
49
49
  :iphone7_edge:
50
50
  :name: "iPhone 7 - MS Edge"
51
51
  :os: ios
@@ -53,7 +53,7 @@
53
53
  :css_width: 375
54
54
  :css_height: 667
55
55
  :default_orientation: portrait
56
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/42.7.4 Mobile/16B92 Safari/605.1.15"
56
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.2.1 Mobile/15E148 Safari/605.1.15"
57
57
  :iphone8:
58
58
  :name: "iPhone 8"
59
59
  :os: ios
@@ -77,7 +77,7 @@
77
77
  :css_width: 375
78
78
  :css_height: 812
79
79
  :default_orientation: portrait
80
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
80
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
81
81
  :iphone_x:
82
82
  :name: "iPhone X"
83
83
  :os: ios
@@ -85,7 +85,7 @@
85
85
  :css_width: 375
86
86
  :css_height: 812
87
87
  :default_orientation: portrait
88
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
88
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
89
89
  :iphone_xr:
90
90
  :name: "iPhone XR"
91
91
  :os: ios
@@ -93,7 +93,7 @@
93
93
  :css_width: 414
94
94
  :css_height: 869
95
95
  :default_orientation: portrait
96
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
96
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
97
97
  :iphone_xs:
98
98
  :name: "iPhone XS"
99
99
  :os: ios
@@ -101,7 +101,7 @@
101
101
  :css_width: 375
102
102
  :css_height: 812
103
103
  :default_orientation: portrait
104
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
104
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
105
105
  :iphone_xs_max:
106
106
  :name: "iPhone XS Max"
107
107
  :os: ios
@@ -109,7 +109,7 @@
109
109
  :css_width: 414
110
110
  :css_height: 869
111
111
  :default_orientation: portrait
112
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
112
+ :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
113
113
  :android_phone:
114
114
  :name: "Generic Android phone"
115
115
  :os: android
@@ -237,7 +237,7 @@ nexus6:
237
237
  :css_width: 1112
238
238
  :css_height: 834
239
239
  :default_orientation: landscape
240
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
240
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
241
241
  :ipad_pro_11:
242
242
  :name: "iPad Pro 11 in."
243
243
  :os: ios
@@ -245,7 +245,7 @@ nexus6:
245
245
  :css_width: 1194
246
246
  :css_height: 834
247
247
  :default_orientation: landscape
248
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
248
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
249
249
  :ipad_pro_12_9:
250
250
  :name: "iPad Pro 12.9 in. (3rd generation)"
251
251
  :os: ios
@@ -253,7 +253,7 @@ nexus6:
253
253
  :css_width: 1366
254
254
  :css_height: 1024
255
255
  :default_orientation: landscape
256
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
256
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
257
257
  :ipad_chrome:
258
258
  :name: "iPad - Chrome"
259
259
  :os: ios
@@ -261,7 +261,7 @@ nexus6:
261
261
  :css_width: 1024
262
262
  :css_height: 768
263
263
  :default_orientation: landscape
264
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/70.0.3538.75 Mobile/15E148 Safari/605.1"
264
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/73.0.3683.68 Mobile/15E148 Safari/605.1"
265
265
  :ipad_firefox:
266
266
  :name: "iPad - Firefox"
267
267
  :os: ios
@@ -269,7 +269,7 @@ nexus6:
269
269
  :css_width: 1024
270
270
  :css_height: 768
271
271
  :default_orientation: landscape
272
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/14.0b12646 Mobile/16B92 Safari/605.1.15"
272
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/16.0b14732 Mobile/15E148 Safari/605.1.15"
273
273
  :ipad_edge:
274
274
  :name: "iPad - MS Edge"
275
275
  :os: ios
@@ -277,7 +277,7 @@ nexus6:
277
277
  :css_width: 1024
278
278
  :css_height: 768
279
279
  :default_orientation: landscape
280
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/42.7.4 Mobile/16B92 Safari/605.1.15"
280
+ :user_agent: "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.2.1 Mobile/15E148 Safari/605.1.15"
281
281
  :android_tablet:
282
282
  :name: "Generic Android tablet"
283
283
  :os: android
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '3.1.7'
2
+ VERSION = '3.1.8'
3
3
  end
@@ -648,6 +648,8 @@ module TestCentricity
648
648
  actual = ui_object.get_siebel_options
649
649
  when :style
650
650
  actual = ui_object.style
651
+ when :href
652
+ actual = ui_object.href
651
653
  when :role
652
654
  actual = ui_object.role
653
655
  when :aria_label
@@ -840,6 +840,8 @@ module TestCentricity
840
840
  actual = ui_object.get_siebel_options
841
841
  when :style
842
842
  actual = ui_object.style
843
+ when :href
844
+ actual = ui_object.href
843
845
  when :role
844
846
  actual = ui_object.role
845
847
  when :aria_label
@@ -4,5 +4,15 @@ module TestCentricity
4
4
  super
5
5
  @type = :link
6
6
  end
7
+
8
+ # Return link object's href property
9
+ #
10
+ # @return [String]
11
+ # @example
12
+ # contact_us_link.href
13
+ #
14
+ def href
15
+ get_attribute('href')
16
+ end
7
17
  end
8
18
  end
@@ -7,8 +7,8 @@ module TestCentricity
7
7
  super
8
8
  @type = :list
9
9
  list_spec = {
10
- list_item: 'li',
11
- selected_item: 'li.selected'
10
+ selected_item: 'li.selected',
11
+ list_item: 'li'
12
12
  }
13
13
  define_list_elements(list_spec)
14
14
  end
@@ -4,15 +4,17 @@ module TestCentricity
4
4
  attr_accessor :selected_item
5
5
  attr_accessor :list_trigger
6
6
  attr_accessor :text_field
7
+ attr_accessor :options_list
7
8
 
8
9
  def initialize(name, parent, locator, context)
9
10
  super
10
11
  @type = :selectlist
11
12
  list_spec = {
12
- list_item: "li[class*='active-result']",
13
- selected_item: "li[class*='result-selected']",
14
- list_trigger: nil,
15
- text_field: nil
13
+ selected_item: "li[class*='result-selected']",
14
+ list_item: "li[class*='active-result']",
15
+ list_trigger: nil,
16
+ text_field: nil,
17
+ options_list: nil
16
18
  }
17
19
  define_list_elements(list_spec)
18
20
  end
@@ -28,6 +30,8 @@ module TestCentricity
28
30
  @list_trigger = value
29
31
  when :text_field
30
32
  @text_field = value
33
+ when :options_list
34
+ @options_list = value
31
35
  else
32
36
  raise "#{element} is not a recognized selectlist element"
33
37
  end
@@ -50,13 +54,39 @@ module TestCentricity
50
54
  def choose_option(option)
51
55
  obj, = find_element
52
56
  object_not_found_exception(obj, nil)
57
+
58
+ unless @list_trigger.nil? && @options_list.nil?
59
+ obj.find(:css, @list_trigger).click
60
+ menu = obj.find(:css, @options_list, minimum: 0, wait: 2)
61
+ object_not_found_exception(menu, nil)
62
+ raise "Could not find option #{option} to choose" unless first(:css, @list_item, minimum: 0, wait: 2)
63
+
64
+ if option.is_a?(Array)
65
+ option.each do |item|
66
+ page.find(:css, @list_item, text: item.strip).click
67
+ end
68
+ else
69
+ if option.is_a?(Hash)
70
+ page.find(:css, "#{@list_item}:nth-of-type(#{option[:index]})").click if option.key?(:index)
71
+ page.find(:css, "#{@list_item}:nth-of-type(#{option[:value]})").click if option.key?(:value)
72
+ page.find(:css, "#{@list_item}:nth-of-type(#{option[:text]})").click if option.key?(:text)
73
+ else
74
+ options = obj.all(@list_item).collect(&:text)
75
+ sleep(2) unless options.include?(option)
76
+ first(:css, @list_item, text: option).click
77
+ end
78
+ end
79
+ return
80
+ end
81
+
53
82
  if @list_trigger.nil?
54
83
  obj.click
55
84
  else
56
85
  page.find(:css, @list_trigger).click
57
86
  sleep(1)
58
87
  end
59
- if first(:css, @list_item, minimum: 0)
88
+
89
+ if first(:css, @list_item, minimum: 0, wait: 2)
60
90
  if option.is_a?(Array)
61
91
  option.each do |item|
62
92
  page.find(:css, @list_item, text: item.strip).click
@@ -107,10 +137,19 @@ module TestCentricity
107
137
  def get_options
108
138
  obj, = find_element
109
139
  object_not_found_exception(obj, nil)
110
- if obj.first(:css, @list_item, minimum: 0)
111
- obj.all(@list_item).collect(&:text)
140
+ if @list_trigger.nil? && @options_list.nil?
141
+ if obj.first(:css, @list_item, minimum: 0, wait: 2)
142
+ obj.all(@list_item).collect(&:text)
143
+ else
144
+ obj.all('option', visible: :all).collect(&:text)
145
+ end
112
146
  else
113
- obj.all('option', visible: :all).collect(&:text)
147
+ obj.find(:css, @list_trigger).click
148
+ menu = obj.find(:css, @options_list, minimum: 0, wait: 2)
149
+ object_not_found_exception(menu, nil)
150
+ options = menu.all(@list_item, visible: true, minimum: 0, wait: 2).collect(&:text)
151
+ obj.find(:css, @list_trigger).click
152
+ options
114
153
  end
115
154
  end
116
155
 
@@ -126,10 +165,19 @@ module TestCentricity
126
165
  def get_option_count
127
166
  obj, = find_element
128
167
  object_not_found_exception(obj, nil)
129
- if obj.first(:css, @list_item, minimum: 0)
130
- obj.all(@list_item).count
168
+ if @list_trigger.nil? && @options_list.nil?
169
+ if obj.first(:css, @list_item, minimum: 0, wait: 2)
170
+ obj.all(@list_item).count
171
+ else
172
+ obj.all('option', visible: :all).count
173
+ end
131
174
  else
132
- obj.all('option', visible: :all).count
175
+ obj.find(:css, @list_trigger).click
176
+ menu = obj.find(:css, @options_list, minimum: 0, wait: 2)
177
+ object_not_found_exception(menu, nil)
178
+ num_items = menu.all(@list_item, visible: true, minimum: 0, wait: 2).count
179
+ obj.find(:css, @list_trigger).click
180
+ num_items
133
181
  end
134
182
  end
135
183
 
@@ -156,6 +204,8 @@ module TestCentricity
156
204
  object_not_found_exception(obj, nil)
157
205
  if obj.first(:css, @list_item, minimum: 0)
158
206
  obj.first(:css, @selected_item).text
207
+ elsif obj.first(:css, @selected_item, minimum: 0)
208
+ obj.first(:css, @selected_item).text
159
209
  else
160
210
  obj.first('option[selected]', visible: :all).text
161
211
  end
@@ -10,15 +10,15 @@ Gem::Specification.new do |spec|
10
10
  spec.required_ruby_version = '>= 2.3.0'
11
11
  spec.authors = ['A.J. Mrozinski']
12
12
  spec.email = ['testcentricity@gmail.com']
13
- spec.summary = %q{A Page Object and Data Object Model Framework for desktop and mobile web testing}
14
- spec.description = %q{
13
+ spec.summary = 'A Page Object and Data Object Model Framework for desktop and mobile web testing'
14
+ spec.description = '
15
15
  The TestCentricity™ Web core generic framework for desktop and mobile web browser-based applications testing implements
16
16
  a Page Object Model DSL for use with Cucumber, Capybara, and Selenium-Webdriver. The gem provides support for running
17
17
  automated tests against locally hosted desktop browsers, locally hosted emulated mobile browsers (iOS, Android, Windows
18
18
  Phone, Blackberry, Kindle Fire) running within a local instance of Chrome, mobile Safari browsers on iOS device simulators
19
19
  or physical iOS devices (using Appium and XCode on OS X), mobile Chrome or Android browsers on Android Studio virtual
20
20
  device emulators (using Appium and Android Studio on OS X), or cloud hosted desktop or mobile web browsers (using the
21
- BrowserStack, Sauce Labs, CrossBrowserTesting, TestingBot, or Gridlastic services).}
21
+ BrowserStack, Sauce Labs, CrossBrowserTesting, TestingBot, or Gridlastic services).'
22
22
  spec.homepage = ''
23
23
  spec.license = 'BSD-3-Clause'
24
24
 
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.1.7
4
+ version: 3.1.8
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-02-01 00:00:00.000000000 Z
11
+ date: 2019-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler