testcentricity 2.4.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) 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 -1384
  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 +343 -111
  56. data/lib/testcentricity/app_core/screen_object.rb +252 -0
  57. data/lib/testcentricity/app_core/screen_objects_helper.rb +29 -201
  58. data/lib/testcentricity/app_core/{screen_sections_helper.rb → screen_section.rb} +40 -105
  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/browser_helper.rb +0 -174
  94. data/lib/testcentricity/data_objects/data_objects_helper.rb +0 -78
  95. data/lib/testcentricity/data_objects/excel_helper.rb +0 -242
  96. data/lib/testcentricity/exception_queue_helper.rb +0 -111
  97. data/lib/testcentricity/utility_helpers.rb +0 -32
  98. data/lib/testcentricity/web_core/drag_drop_helper.rb +0 -15
  99. data/lib/testcentricity/web_core/page_objects_helper.rb +0 -677
  100. data/lib/testcentricity/web_core/page_sections_helper.rb +0 -895
  101. data/lib/testcentricity/web_core/webdriver_helper.rb +0 -588
  102. data/lib/testcentricity/web_elements/button.rb +0 -8
  103. data/lib/testcentricity/web_elements/cell_button.rb +0 -8
  104. data/lib/testcentricity/web_elements/cell_checkbox.rb +0 -38
  105. data/lib/testcentricity/web_elements/cell_element.rb +0 -69
  106. data/lib/testcentricity/web_elements/cell_image.rb +0 -8
  107. data/lib/testcentricity/web_elements/cell_radio.rb +0 -31
  108. data/lib/testcentricity/web_elements/checkbox.rb +0 -100
  109. data/lib/testcentricity/web_elements/file_field.rb +0 -45
  110. data/lib/testcentricity/web_elements/image.rb +0 -34
  111. data/lib/testcentricity/web_elements/label.rb +0 -8
  112. data/lib/testcentricity/web_elements/link.rb +0 -8
  113. data/lib/testcentricity/web_elements/list.rb +0 -100
  114. data/lib/testcentricity/web_elements/list_button.rb +0 -8
  115. data/lib/testcentricity/web_elements/list_checkbox.rb +0 -38
  116. data/lib/testcentricity/web_elements/list_element.rb +0 -61
  117. data/lib/testcentricity/web_elements/list_radio.rb +0 -31
  118. data/lib/testcentricity/web_elements/radio.rb +0 -74
  119. data/lib/testcentricity/web_elements/select_list.rb +0 -208
  120. data/lib/testcentricity/web_elements/siebel_open_ui_helper.rb +0 -15
  121. data/lib/testcentricity/web_elements/table.rb +0 -612
  122. data/lib/testcentricity/web_elements/textfield.rb +0 -114
  123. data/lib/testcentricity/web_elements/ui_elements_helper.rb +0 -532
  124. data/lib/testcentricity/world_extensions.rb +0 -26
  125. data/my_templates/default/method_details/setup.rb +0 -3
  126. data/spec/testcentricity_spec.rb +0 -9
@@ -1,352 +0,0 @@
1
- :iphone:
2
- :name: "iPhone"
3
- :os: ios
4
- :type: phone
5
- :css_width: 320
6
- :css_height: 480
7
- :default_orientation: portrait
8
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
9
- :iphone4:
10
- :name: "iPhone 4"
11
- :os: ios
12
- :type: phone
13
- :css_width: 320
14
- :css_height: 480
15
- :default_orientation: portrait
16
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
17
- :iphone5:
18
- :name: "iPhone 5"
19
- :os: ios
20
- :type: phone
21
- :css_width: 320
22
- :css_height: 568
23
- :default_orientation: portrait
24
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
25
- :iphone6:
26
- :name: "iPhone 6"
27
- :os: ios
28
- :type: phone
29
- :css_width: 375
30
- :css_height: 667
31
- :default_orientation: portrait
32
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
33
- :iphone6_plus:
34
- :name: "iPhone 6 Plus"
35
- :os: ios
36
- :type: phone
37
- :css_width: 414
38
- :css_height: 736
39
- :default_orientation: portrait
40
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
41
- :iphone7:
42
- :name: "iPhone 7"
43
- :os: ios
44
- :type: phone
45
- :css_width: 375
46
- :css_height: 667
47
- :default_orientation: portrait
48
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1"
49
- :iphone7_plus:
50
- :name: "iPhone 7 Plus"
51
- :os: ios
52
- :type: phone
53
- :css_width: 414
54
- :css_height: 736
55
- :default_orientation: portrait
56
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1"
57
- :iphone7_chrome:
58
- :name: "iPhone 7 - Chrome"
59
- :os: ios
60
- :type: phone
61
- :css_width: 375
62
- :css_height: 667
63
- :default_orientation: portrait
64
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) CriOS/65.0.3325.152 Mobile/15E216 Safari/604.1"
65
- :iphone7_firefox:
66
- :name: "iPhone 7 - Firefox"
67
- :os: ios
68
- :type: phone
69
- :css_width: 375
70
- :css_height: 667
71
- :default_orientation: portrait
72
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/11.0b9935 Mobile/15E216 Safari/605.1.15"
73
- :iphone7_edge:
74
- :name: "iPhone 7 - MS Edge"
75
- :os: ios
76
- :type: phone
77
- :css_width: 375
78
- :css_height: 667
79
- :default_orientation: portrait
80
- :user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 EdgiOS/41.13.0.0 Mobile/15E216 Safari/605.1.15"
81
- :iphone8:
82
- :name: "iPhone 8"
83
- :os: ios
84
- :type: phone
85
- :css_width: 375
86
- :css_height: 667
87
- :default_orientation: portrait
88
- :user_agent: "Mozilla/5.0 (iPhone; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.25 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
89
- :iphone8_plus:
90
- :name: "iPhone 8 Plus"
91
- :os: ios
92
- :type: phone
93
- :css_width: 414
94
- :css_height: 736
95
- :default_orientation: portrait
96
- :user_agent: "Mozilla/5.0 (iPhone; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.25 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
97
- :iphonex:
98
- :name: "iPhone X"
99
- :os: ios
100
- :type: phone
101
- :css_width: 375
102
- :css_height: 812
103
- :default_orientation: portrait
104
- :user_agent: "Mozilla/5.0 (iPhone; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.25 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
105
- :android_phone:
106
- :name: "Generic Android phone"
107
- :os: android
108
- :type: phone
109
- :css_width: 360
110
- :css_height: 640
111
- :default_orientation: portrait
112
- :user_agent: "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
113
- nexus6:
114
- :name: "Nexus 6 or 6P phone"
115
- :os: android
116
- :type: phone
117
- :css_width: 411
118
- :css_height: 731
119
- :default_orientation: portrait
120
- :user_agent: "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36"
121
- :samsung_galaxy_s4:
122
- :name: "Samsung Galaxy S4"
123
- :os: android
124
- :type: phone
125
- :css_width: 360
126
- :css_height: 640
127
- :default_orientation: portrait
128
- :user_agent: "Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG SCH-I545 4G Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36"
129
- :samsung_galaxy_s5:
130
- :name: "Samsung Galaxy S5"
131
- :os: android
132
- :type: phone
133
- :css_width: 360
134
- :css_height: 640
135
- :default_orientation: portrait
136
- :user_agent: "Mozilla/5.0 (Linux; Android 6.0.1; SM-G900V Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36"
137
- :samsung_galaxy_s6:
138
- :name: "Samsung Galaxy S6 Edge"
139
- :os: android
140
- :type: phone
141
- :css_width: 360
142
- :css_height: 640
143
- :default_orientation: portrait
144
- :user_agent: "Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G925F Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36"
145
- :pixel:
146
- :name: "Google Pixel phone"
147
- :os: android
148
- :type: phone
149
- :css_width: 411
150
- :css_height: 731
151
- :default_orientation: portrait
152
- :user_agent: "Mozilla/5.0 (Linux; Android 8.0.0; Pixel Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Mobile Safari/537.36"
153
- :pixel_xl:
154
- :name: "Google Pixel XL phone"
155
- :os: android
156
- :type: phone
157
- :css_width: 411
158
- :css_height: 731
159
- :default_orientation: portrait
160
- :user_agent: "Mozilla/5.0 (Linux; Android 8.0.0; Pixel XL Build/OPR6.170623.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36"
161
- :windows_phone8:
162
- :name: "Generic Windows 8 phone"
163
- :os: windows
164
- :type: phone
165
- :css_width: 320
166
- :css_height: 480
167
- :default_orientation: portrait
168
- :user_agent: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)"
169
- :windows_phone7:
170
- :name: "Generic Windows 7 phone"
171
- :os: windows
172
- :type: phone
173
- :css_width: 320
174
- :css_height: 480
175
- :default_orientation: portrait
176
- :user_agent: "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)"
177
- :lumia_950_xl:
178
- :name: "Microsoft Lumia 950 XL"
179
- :os: windows
180
- :type: phone
181
- :css_width: 360
182
- :css_height: 640
183
- :default_orientation: portrait
184
- :user_agent: "Mozilla/5.0 (Windows Phone 10.0; Android 4.2; Microsoft; Lumia 950 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10240"
185
- :blackberry_z10:
186
- :name: "Blackberry Z10"
187
- :os: blackberry
188
- :type: phone
189
- :css_width: 384
190
- :css_height: 640
191
- :default_orientation: portrait
192
- :user_agent: "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+"
193
- :blackberry_z30:
194
- :name: "Blackberry Z30"
195
- :os: blackberry
196
- :type: phone
197
- :css_width: 360
198
- :css_height: 640
199
- :default_orientation: portrait
200
- :user_agent: "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+"
201
- :blackberry_leap:
202
- :name: "Blackberry Leap"
203
- :os: blackberry
204
- :type: phone
205
- :css_width: 360
206
- :css_height: 640
207
- :default_orientation: portrait
208
- :user_agent: "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1791 Mobile Safari/537.35+"
209
- :ipad:
210
- :name: "iPad"
211
- :os: ios
212
- :type: tablet
213
- :css_width: 1024
214
- :css_height: 768
215
- :default_orientation: landscape
216
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1"
217
- :ipad_pro:
218
- :name: "iPad Pro"
219
- :os: ios
220
- :type: tablet
221
- :css_width: 1366
222
- :css_height: 1024
223
- :default_orientation: landscape
224
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.25 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
225
- :ipad_pro_10_5:
226
- :name: "iPad Pro 10.5 in."
227
- :os: ios
228
- :type: tablet
229
- :css_width: 1112
230
- :css_height: 834
231
- :default_orientation: landscape
232
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.25 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
233
- :ipad_chrome:
234
- :name: "iPad - Chrome"
235
- :os: ios
236
- :type: tablet
237
- :css_width: 1024
238
- :css_height: 768
239
- :default_orientation: landscape
240
- :user_agent: "Mozilla/5.0 (iPad; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) CriOS/65.0.3325.152 Mobile/14G60 Safari/602.1"
241
- :ipad_firefox:
242
- :name: "iPad - Firefox"
243
- :os: ios
244
- :type: tablet
245
- :css_width: 1024
246
- :css_height: 768
247
- :default_orientation: landscape
248
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) FxiOS/11.0b9935 Mobile/14G60 Safari/603.3.8"
249
- :ipad_edge:
250
- :name: "iPad - MS Edge"
251
- :os: ios
252
- :type: tablet
253
- :css_width: 1024
254
- :css_height: 768
255
- :default_orientation: landscape
256
- :user_agent: "Mozilla/5.0 (iPad; CPU OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) EdgiOS/41.13.0.0 Mobile/14G60 Safari/603.3.8"
257
- :android_tablet:
258
- :name: "Generic Android tablet"
259
- :os: android
260
- :type: tablet
261
- :css_width: 1024
262
- :css_height: 768
263
- :default_orientation: landscape
264
- :user_agent: "Mozilla/5.0 (Linux; U; Android 3.0; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
265
- :kindle_fire:
266
- :name: "Kindle Fire"
267
- :os: kindle
268
- :type: tablet
269
- :css_width: 1024
270
- :css_height: 600
271
- :default_orientation: landscape
272
- :user_agent: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.141.16-Gen4_11004310) AppleWebkit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true"
273
- :kindle_firehd7:
274
- :name: "Kindle Fire HD 7"
275
- :os: kindle
276
- :type: tablet
277
- :css_width: 800
278
- :css_height: 480
279
- :default_orientation: landscape
280
- :user_agent: "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true"
281
- :kindle_firehd8:
282
- :name: "Kindle Fire HD 8 or 9"
283
- :os: kindle
284
- :type: tablet
285
- :css_width: 1280
286
- :css_height: 800
287
- :default_orientation: landscape
288
- :user_agent: "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true"
289
- :kindle_firehd10:
290
- :name: "Kindle Fire HD 10"
291
- :os: kindle
292
- :type: tablet
293
- :css_width: 1920
294
- :css_height: 1200
295
- :default_orientation: landscape
296
- :user_agent: "Mozilla/5.0 (Linux; Android 5.1.1; KFTBWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36"
297
- :surface:
298
- :name: "Microsoft Surface"
299
- :os: windows
300
- :type: tablet
301
- :css_width: 1366
302
- :css_height: 768
303
- :default_orientation: landscape
304
- :user_agent: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)"
305
- :blackberry_playbook:
306
- :name: "Blackberry Playbook"
307
- :os: blackberry
308
- :type: tablet
309
- :css_width: 1024
310
- :css_height: 600
311
- :default_orientation: landscape
312
- :user_agent: "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+"
313
- :blackberry_passport:
314
- :name: "Blackberry Passport"
315
- :os: blackberry
316
- :type: tablet
317
- :css_width: 504
318
- :css_height: 504
319
- :default_orientation: portrait
320
- :user_agent: "Mozilla/5.0 (Linux; U; Android 4.3; en-us; Passport Build/10.3.2.148) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
321
- :samsung_galaxy_tab:
322
- :name: "Samsung Galaxy Tab series"
323
- :os: android
324
- :type: tablet
325
- :css_width: 1280
326
- :css_height: 800
327
- :default_orientation: landscape
328
- :user_agent: "Mozilla/5.0 (Linux; Android 4.0.4; GT-P6800 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36"
329
- :google_nexus7:
330
- :name: "Nexus 7 series"
331
- :os: android
332
- :type: tablet
333
- :css_width: 960
334
- :css_height: 600
335
- :default_orientation: landscape
336
- :user_agent: "Mozilla/5.0 (Linux; Android 4.4.4; Nexus 7 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36"
337
- :google_nexus9:
338
- :name: "Nexus 9 series"
339
- :os: android
340
- :type: tablet
341
- :css_width: 1024
342
- :css_height: 768
343
- :default_orientation: landscape
344
- :user_agent: "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 9 Build/LMY48I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36"
345
- :google_nexus10:
346
- :name: "Nexus 10 series"
347
- :os: android
348
- :type: tablet
349
- :css_width: 1280
350
- :css_height: 800
351
- :default_orientation: landscape
352
- :user_agent: "Mozilla/5.0 (Linux; Android 5.1; Nexus 10 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.109 Safari/537.36"
@@ -1,69 +0,0 @@
1
- require 'childprocess'
2
-
3
- #
4
- # This class is designed to start and stop the Appium Server process. In order to use it you must have Appium
5
- # and node installed on your computer. You can pass parameters to Appium at startup via the constructor.
6
- #
7
- module TestCentricity
8
- class AppiumServer
9
-
10
- attr_accessor :process
11
-
12
- def initialize(params={})
13
- @params = params
14
- end
15
-
16
- #
17
- # Start the Appium Server
18
- #
19
- def start
20
- # terminate any currently running Appium Server
21
- if running?
22
- system('killall -9 node')
23
- puts 'Terminating existing Appium Server'
24
- sleep(5)
25
- puts 'Appium Server is being restarted'
26
- else
27
- puts 'Appium Server is being started'
28
- end
29
- # start new Appium Server
30
- @process = ChildProcess.build(*parameters)
31
- process.start
32
- # wait until confirmation that Appium Server is running
33
- wait = Selenium::WebDriver::Wait.new(timeout: 30)
34
- wait.until { running? }
35
- puts "Appium Server is running - PID = #{process.pid}"
36
- end
37
-
38
- #
39
- # Check to see if Appium Server is running
40
- #
41
- def running?
42
- response = nil
43
- begin
44
- response = Net::HTTP.get_response(URI('http://127.0.0.1:4723/wd/hub/sessions'))
45
- rescue
46
- end
47
- response && response.code_type == Net::HTTPOK
48
- end
49
-
50
- #
51
- # Stop the Appium Server
52
- #
53
- def stop
54
- process.stop
55
- puts 'Appium Server has been terminated'
56
- end
57
-
58
- private
59
-
60
- def parameters
61
- cmd = ['appium']
62
- @params.each do |key, value|
63
- cmd << '--' + key.to_s
64
- cmd << value.to_s if not value.nil? and value.size > 0
65
- end
66
- cmd
67
- end
68
- end
69
- end
@@ -1,174 +0,0 @@
1
- require 'yaml'
2
-
3
-
4
- module TestCentricity
5
- module Browsers
6
- include Capybara::DSL
7
-
8
- # Sets the size of the browser window.
9
- #
10
- # @param resolution [Array] the desired [width, height]
11
- # @example
12
- # Browsers.set_browser_window_size([1024, 768])
13
- #
14
- def self.set_browser_window_size(resolution)
15
- resolution = resolution.split(',') if resolution.is_a?(String)
16
- window = Capybara.current_session.driver.browser.manage.window
17
- window.resize_to(resolution[0], resolution[1])
18
- Environ.browser_size = [resolution[0].to_i, resolution[1].to_i]
19
- end
20
-
21
- # Maximizes the selenium browser window.
22
- #
23
- # @example
24
- # Browsers.maximize_browser
25
- #
26
- def self.maximize_browser
27
- window = Capybara.current_session.driver.browser.manage.window
28
- window.maximize
29
- end
30
- # Sets the position of the browser window.
31
- #
32
- # @param x [Integer] the desired x coordinate
33
- # @param y [Integer] the desired y coordinate
34
- # @example
35
- # Browsers.set_browser_window_position([100, 300])
36
- #
37
- def self.set_browser_window_position(x, y)
38
- window = Capybara.current_session.driver.browser.manage.window
39
- window.move_to(x, y)
40
- end
41
-
42
- # Refreshes the selenium browser.
43
- #
44
- # @example
45
- # Browsers.refresh_browser
46
- #
47
- def self.refresh_browser
48
- Capybara.page.driver.browser.navigate.refresh
49
- end
50
-
51
- # Emulates clicking the web browser's Back button. Navigates back by one page on the browser’s history.
52
- #
53
- # @example
54
- # Browsers.navigate_back
55
- #
56
- def self.navigate_back
57
- Capybara.page.driver.browser.navigate.back
58
- end
59
-
60
- # Emulates clicking the web browser's Forward button. Navigates forward by one page on the browser’s history.
61
- #
62
- # @example
63
- # Browsers.navigate_forward
64
- #
65
- def self.navigate_forward
66
- Capybara.page.driver.browser.navigate.forward
67
- end
68
-
69
- def self.switch_to_new_browser_instance
70
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.last)
71
- end
72
-
73
- def self.close_all_browser_instances
74
- Capybara.page.driver.browser.window_handles.each do |handle|
75
- page.driver.browser.switch_to.window(handle)
76
- page.driver.browser.close
77
- end
78
- end
79
-
80
- def self.num_browser_instances
81
- Capybara.page.driver.browser.window_handles.count
82
- end
83
-
84
- def self.close_current_browser_instance
85
- Capybara.page.driver.browser.close
86
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.last)
87
- end
88
-
89
- def self.close_old_browser_instance
90
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.first)
91
- Capybara.page.driver.browser.close
92
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.last)
93
- end
94
-
95
- def self.close_named_browser_instance(name)
96
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.find_window(name))
97
- Capybara.page.driver.browser.close
98
- Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.last)
99
- end
100
-
101
- def self.suppress_js_alerts
102
- Capybara.page.execute_script('window.alert = function() {}')
103
- end
104
-
105
- def self.suppress_js_leave_page_modal
106
- Capybara.page.execute_script('window.onbeforeunload = null')
107
- end
108
-
109
- def self.delete_all_cookies
110
- if Capybara.current_driver == :selenium
111
- browser = Capybara.current_session.driver.browser
112
- if browser.respond_to?(:manage) && browser.manage.respond_to?(:delete_all_cookies)
113
- browser.manage.delete_all_cookies
114
- else
115
- raise 'Could not clear cookies.'
116
- end
117
- end
118
- end
119
-
120
- def self.set_device_orientation(orientation)
121
- if Environ.is_mobile? && !Environ.is_device?
122
- Browsers.set_browser_window_size(Browsers.browser_size(Environ.browser.to_s, orientation))
123
- else
124
- puts '***** Cannot change device orientation of desktop web browsers or remote devices *****'
125
- end
126
- end
127
-
128
- def self.mobile_device_agent(device)
129
- device_name = device.gsub(/\s+/, '').downcase.to_sym
130
- device = get_devices[device_name]
131
- agent_string = device[:user_agent]
132
- raise "Device '#{device}' is not defined" unless agent_string
133
- agent_string
134
- end
135
-
136
- def self.mobile_device_name(device)
137
- device_name = device.gsub(/\s+/, '').downcase.to_sym
138
- device = get_devices[device_name]
139
- name = device[:name]
140
- raise "Device '#{device}' is not defined" unless name
141
- Environ.device_os = device[:os]
142
- Environ.device_type = device[:type]
143
- name
144
- end
145
-
146
- def self.browser_size(browser, orientation)
147
- device_name = browser.gsub(/\s+/, '').downcase.to_sym
148
- device = get_devices[device_name]
149
- if device
150
- width = device[:css_width]
151
- height = device[:css_height]
152
- default_orientation = device[:default_orientation].to_sym
153
- if orientation
154
- Environ.device_orientation = orientation
155
- orientation.downcase.to_sym == default_orientation ?
156
- size = [width, height] :
157
- size = [height, width]
158
- else
159
- Environ.device_orientation = device[:default_orientation]
160
- size = [width, height]
161
- end
162
- else
163
- size = [1650, 1000]
164
- end
165
- size
166
- end
167
-
168
- private
169
-
170
- def self.get_devices
171
- YAML.load_file File.expand_path('../../devices/devices.yml', __FILE__)
172
- end
173
- end
174
- end
@@ -1,78 +0,0 @@
1
- require 'yaml'
2
- require 'json'
3
-
4
-
5
- module TestCentricity
6
-
7
- XL_PRIMARY_DATA_PATH ||= 'features/test_data/'
8
- XL_PRIMARY_DATA_FILE ||= "#{XL_PRIMARY_DATA_PATH}data.xls"
9
-
10
-
11
- class DataObject
12
- attr_accessor :current
13
- attr_accessor :context
14
- attr_accessor :hash_table
15
-
16
- def initialize(data)
17
- @hash_table = data
18
- end
19
-
20
- # @deprecated Please use {#current=} instead
21
- def self.set_current(current)
22
- warn "[DEPRECATION] 'TestCentricity::DataObject.set_current' is deprecated. Please use 'current=' instead."
23
- @current = current
24
- end
25
-
26
- def self.current
27
- @current
28
- end
29
-
30
- def self.current=(current)
31
- @current = current
32
- end
33
- end
34
-
35
-
36
- class DataSource
37
- attr_accessor :current
38
-
39
- def read_yaml_node_data(file_name, node_name)
40
- data = YAML.load_file("#{XL_PRIMARY_DATA_PATH}#{file_name}")
41
- data[node_name]
42
- end
43
-
44
- def read_json_node_data(file_name, node_name)
45
- raw_data = File.read("#{XL_PRIMARY_DATA_PATH}#{file_name}")
46
- data = JSON.parse(raw_data)
47
- data[node_name]
48
- end
49
- end
50
-
51
-
52
- class ExcelDataSource < TestCentricity::DataSource
53
- def pick_excel_data_source(sheet, row_spec)
54
- if ENV['TEST_ENVIRONMENT']
55
- environment = ENV['TEST_ENVIRONMENT']
56
- data_file = "#{XL_PRIMARY_DATA_PATH}#{environment}_data.xls"
57
- data_file = XL_PRIMARY_DATA_FILE unless ExcelData.rowspec_exists?(data_file, sheet, row_spec)
58
- else
59
- data_file = XL_PRIMARY_DATA_FILE
60
- end
61
- data_file
62
- end
63
-
64
- def read_excel_row_data(sheet, row_name, parallel = false)
65
- parallel == :parallel && ENV['PARALLEL'] ? row_spec = "#{row_name}#{ENV['TEST_ENV_NUMBER']}" : row_spec = row_name
66
- ExcelData.read_row_data(pick_excel_data_source(sheet, row_spec), sheet, row_spec)
67
- end
68
-
69
- def read_excel_pool_data(sheet, row_name, parallel = false)
70
- parallel == :parallel && ENV['PARALLEL'] ? row_spec = "#{row_name}#{ENV['TEST_ENV_NUMBER']}" : row_spec = row_name
71
- ExcelData.read_row_from_pool(pick_excel_data_source(sheet, row_name), sheet, row_spec)
72
- end
73
-
74
- def read_excel_range_data(sheet, range_name)
75
- ExcelData.read_range_data(pick_excel_data_source(sheet, range_name), sheet, range_name)
76
- end
77
- end
78
- end