flights_gui_henry_tests 1.8.7

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.
Files changed (143) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +3 -0
  3. data/features/data/home-offers-config.csv +883 -0
  4. data/features/data/host.yml +72 -0
  5. data/features/data/miles.yml +216 -0
  6. data/features/data/search.yml +27 -0
  7. data/features/data/sites.yml +39 -0
  8. data/features/data/tag_microsoft.yml +68 -0
  9. data/features/step_definitions/checkout/agencia_steps.rb +6 -0
  10. data/features/step_definitions/checkout/chat_steps.rb +43 -0
  11. data/features/step_definitions/checkout/checkout_steps.rb +144 -0
  12. data/features/step_definitions/checkout/cupones_steps.rb +26 -0
  13. data/features/step_definitions/checkout/error_messages.rb +251 -0
  14. data/features/step_definitions/checkout/seguros_steps.rb +78 -0
  15. data/features/step_definitions/checkout/thanks_steps.rb +75 -0
  16. data/features/step_definitions/content/contents_steps.rb +140 -0
  17. data/features/step_definitions/desambiguation/disambiguation_airports_steps.rb +73 -0
  18. data/features/step_definitions/desambiguation/disambiguation_city_steps.rb +43 -0
  19. data/features/step_definitions/filter/filters_airlines.rb +38 -0
  20. data/features/step_definitions/filter/filters_airports_steps.rb +31 -0
  21. data/features/step_definitions/filter/filters_price_steps.rb +87 -0
  22. data/features/step_definitions/filter/filters_stops_steps.rb +44 -0
  23. data/features/step_definitions/filter/filters_time_steps.rb +143 -0
  24. data/features/step_definitions/filter/matrix_steps.rb +249 -0
  25. data/features/step_definitions/landing/landing_checkout_steps.rb +45 -0
  26. data/features/step_definitions/landing/landing_filters_steps.rb +17 -0
  27. data/features/step_definitions/landing/landing_home_alerts_steps.rb +21 -0
  28. data/features/step_definitions/landing/landing_home_steps.rb +82 -0
  29. data/features/step_definitions/landing/landing_long_tail.rb +58 -0
  30. data/features/step_definitions/landing/landing_negative_steps.rb +127 -0
  31. data/features/step_definitions/landing/landing_passenger_review_steps.rb +8 -0
  32. data/features/step_definitions/landing/landing_steps.rb +325 -0
  33. data/features/step_definitions/orders/orders.rb +67 -0
  34. data/features/step_definitions/others/advancedgui_steps.rb +28 -0
  35. data/features/step_definitions/others/advancednogui_steps.rb +34 -0
  36. data/features/step_definitions/others/anticipatedsearch_steps.rb +13 -0
  37. data/features/step_definitions/others/flights_tracker_steps.rb +73 -0
  38. data/features/step_definitions/others/generic_steps.rb +35 -0
  39. data/features/step_definitions/others/newsletter_steps.rb +50 -0
  40. data/features/step_definitions/others/one_day_search.rb +58 -0
  41. data/features/step_definitions/others/print_steps.rb +26 -0
  42. data/features/step_definitions/others/querystringparameters_steps.rb +6 -0
  43. data/features/step_definitions/others/recommendation_steps.rb +80 -0
  44. data/features/step_definitions/others/render_steps.rb +70 -0
  45. data/features/step_definitions/others/tag_steps.rb +157 -0
  46. data/features/step_definitions/others/upgrade_bussines_steps.rb +27 -0
  47. data/features/step_definitions/results/load_steps.rb +69 -0
  48. data/features/step_definitions/results/results_steps.rb +21 -0
  49. data/features/step_definitions/results/search_steps.rb +82 -0
  50. data/features/step_definitions/search/alerts_steps.rb +132 -0
  51. data/features/step_definitions/search/basefare_steps.rb +64 -0
  52. data/features/step_definitions/search/bestprices_steps.rb +70 -0
  53. data/features/step_definitions/search/cross_sell_row_hoteles.rb +78 -0
  54. data/features/step_definitions/search/cross_sell_steps.rb +15 -0
  55. data/features/step_definitions/search/delays_steps.rb +67 -0
  56. data/features/step_definitions/search/details_steps.rb +9 -0
  57. data/features/step_definitions/search/ecoflights_steps.rb +9 -0
  58. data/features/step_definitions/search/fenix_steps.rb +119 -0
  59. data/features/step_definitions/search/flight_gui_steps.rb +312 -0
  60. data/features/step_definitions/search/miles_step.rb +13 -0
  61. data/features/step_definitions/search/pagination_steps.rb +41 -0
  62. data/features/step_definitions/search/reviews_step.rb +56 -0
  63. data/features/step_definitions/search/search_no_gui_steps.rb +185 -0
  64. data/features/step_definitions/search/wish_list_steps.rb +123 -0
  65. data/features/support/env.rb +61 -0
  66. data/features/support/lib/clusters/data/datos_new.rb +33 -0
  67. data/features/support/lib/clusters/details/details_cluster.rb +30 -0
  68. data/features/support/lib/clusters/results/landing_cluster.rb +29 -0
  69. data/features/support/lib/clusters/results/render_cluster.rb +43 -0
  70. data/features/support/lib/clusters/results_cluster.rb +140 -0
  71. data/features/support/lib/clusters.rb +5 -0
  72. data/features/support/lib/helpers/browser.rb +212 -0
  73. data/features/support/lib/helpers/checkout.rb +31 -0
  74. data/features/support/lib/helpers/clusters.rb +234 -0
  75. data/features/support/lib/helpers/landing.rb +117 -0
  76. data/features/support/lib/helpers/render.rb +135 -0
  77. data/features/support/lib/helpers.rb +5 -0
  78. data/features/support/lib/price.rb +66 -0
  79. data/features/support/lib/services/fenix.rb +14 -0
  80. data/features/support/lib/services/landing.rb +18 -0
  81. data/features/support/lib/services/results.rb +62 -0
  82. data/features/support/lib/services.rb +4 -0
  83. data/features/support/matchers.rb +120 -0
  84. data/features/support/redefinitions.rb +42 -0
  85. data/features/tests/checkout/agency.feature +33 -0
  86. data/features/tests/checkout/button_cac.feature +52 -0
  87. data/features/tests/checkout/chat.feature +20 -0
  88. data/features/tests/checkout/cupones.feature +54 -0
  89. data/features/tests/checkout/error_messages.feature +64 -0
  90. data/features/tests/checkout/integration.feature +215 -0
  91. data/features/tests/checkout/low_cost.feature +55 -0
  92. data/features/tests/checkout/seguros.feature +37 -0
  93. data/features/tests/contents/costs.feature +29 -0
  94. data/features/tests/contents/rules.feature +58 -0
  95. data/features/tests/contents/webcheckin.feature +26 -0
  96. data/features/tests/desambiguation/airports.feature +89 -0
  97. data/features/tests/desambiguation/city.feature +86 -0
  98. data/features/tests/filters/filters.feature +160 -0
  99. data/features/tests/fixes/advancedgui.feature +171 -0
  100. data/features/tests/fixes/advancednogui.feature +60 -0
  101. data/features/tests/fixes/book_no_gui.feature +21 -0
  102. data/features/tests/fixes/cross_sell_row_hoteles.feature +70 -0
  103. data/features/tests/fixes/facebook.feature +31 -0
  104. data/features/tests/fixes/landing_home_alerts.feature +82 -0
  105. data/features/tests/fixes/matrix_stops.feature +104 -0
  106. data/features/tests/fixes/one_day_search.feature +63 -0
  107. data/features/tests/fixes/print.feature +87 -0
  108. data/features/tests/fixes/searches_no_gui.feature +85 -0
  109. data/features/tests/landing/landing_alerts.feature +93 -0
  110. data/features/tests/landing/landing_checkout.feature +286 -0
  111. data/features/tests/landing/landing_filters.feature +176 -0
  112. data/features/tests/landing/landing_home.feature +68 -0
  113. data/features/tests/landing/landing_integration.feature +153 -0
  114. data/features/tests/landing/landing_long_tail.feature +162 -0
  115. data/features/tests/landing/landing_matrix.feature +156 -0
  116. data/features/tests/landing/landing_negative.feature +157 -0
  117. data/features/tests/landing/landing_orders.feature +107 -0
  118. data/features/tests/landing/landing_pagination.feature +142 -0
  119. data/features/tests/landing/landing_passenger_review.feature +139 -0
  120. data/features/tests/landing/landing_positive.feature +155 -0
  121. data/features/tests/landing/landing_reviews.feature +139 -0
  122. data/features/tests/landing/landing_tags.feature +148 -0
  123. data/features/tests/matrix/matrix_airlines.feature +104 -0
  124. data/features/tests/matrix/matrix_fare_chart.feature +24 -0
  125. data/features/tests/matrix/matrix_price.feature +35 -0
  126. data/features/tests/others/alerts.feature +89 -0
  127. data/features/tests/others/anticipatedsearch.feature +82 -0
  128. data/features/tests/others/flights_tracker.feature +94 -0
  129. data/features/tests/others/newsletter.feature +131 -0
  130. data/features/tests/others/querystringparameters.feature +82 -0
  131. data/features/tests/others/recommendation.feature +170 -0
  132. data/features/tests/others/semaphore.feature +206 -0
  133. data/features/tests/others/upgrade_bussines.feature +100 -0
  134. data/features/tests/search/basefare.feature +88 -0
  135. data/features/tests/search/itineraries.feature +85 -0
  136. data/features/tests/search/orders.feature +100 -0
  137. data/features/tests/search/pagination.feature +70 -0
  138. data/features/tests/search/reviews.feature +84 -0
  139. data/features/tests/search/searches.feature +197 -0
  140. data/features/tests/search/wish_list.feature +102 -0
  141. data/flights_gui_henry_tests.gemspec +32 -0
  142. data/henry-context.yml +14733 -0
  143. metadata +324 -0
@@ -0,0 +1,251 @@
1
+ When /^Verifico que sean visibles los campos obligatorios$/ do
2
+ container = BROWSER.fieldset(:id,'passengers')
3
+ index = 0
4
+ @search.adt.times do |adulto|
5
+ container.text_field(:id,"passenger-first-name-#{index}").should visible
6
+ container.text_field(:id,"passenger-last-name-#{index}").should visible
7
+ index += 1
8
+ end
9
+ @search.cnn.times do |adulto|
10
+ container.text_field(:id,"passenger-first-name-#{index}").should visible
11
+ container.text_field(:id,"passenger-last-name-#{index}").should visible
12
+ container.select_list(:id,"passenger-birthday-day-#{index}").should visible
13
+ container.select_list(:id,"passenger-birthday-month-#{index}").should visible
14
+ container.select_list(:id,"passenger-birthday-year-#{index}").should visible
15
+ index += 1
16
+ end
17
+ @search.inf.times do |adulto|
18
+ container.text_field(:id,"passenger-first-name-#{index}").should visible
19
+ container.text_field(:id,"passenger-last-name-#{index}").should visible
20
+ container.select_list(:id,"passenger-birthday-day-#{index}").should visible
21
+ container.select_list(:id,"passenger-birthday-month-#{index}").should visible
22
+ container.select_list(:id,"passenger-birthday-year-#{index}").should visible
23
+ index += 1
24
+ end
25
+ container = BROWSER.fieldset(:id,'payment')
26
+ container.radio(:value,/CREDIT/).should visible
27
+ container.select_list(:id,'card-brand').should visible
28
+ container.text_field(:id,'card-number').should visible
29
+ container.select_list(:id,'card-expiration-month').should visible
30
+ container.select_list(:id,'card-expiration-year').should visible
31
+ container.text_field(:id,'security-code').should visible
32
+ end
33
+
34
+ When /^Verifico que se desplieguen las alertas de campos vacios$/ do
35
+ container = BROWSER.fieldset(:id,'passengers')
36
+ BROWSER.link(:id,'submit').click
37
+ (@search.adt+@search.cnn+@search.inf).times do |time|
38
+ container.span(:id,"passenger-first-name-#{time}-missing_field").should visible
39
+ end
40
+ container = BROWSER.fieldset(:id,'payment')
41
+ container.span(:id,"card-number-missing_field").should visible
42
+ container.span(:id,"expiration-date-missing_field").should visible
43
+ container.span(:id,"security-code-missing_field").should visible
44
+ container.span(:id,"owner-name-missing_field").should visible
45
+ container = BROWSER.fieldset(:id,'contact')
46
+ container.span(:id,"contact-email-missing_field").should visible
47
+ container.span(:id,"contact-email-repeat-missing_field").should visible
48
+ container.span(:id,"phone-0-missing_field").should visible
49
+ end
50
+
51
+ When /^Verifico que se desplieguen las alertas de campos con datos invalidos$/ do
52
+ container = BROWSER.fieldset(:id,'passengers')
53
+ (@search.adt+@search.cnn+@search.inf).times do |time|
54
+ container.text_field(:id,"passenger-first-name-#{time}").set("123")
55
+ container.text_field(:id,"passenger-last-name-#{time}").set("123")
56
+ BROWSER.link(:id,'submit').click
57
+ container.span(:id,"passenger-first-name-#{time}-invalid_name").should visible
58
+ container.span(:id,"passenger-last-name-#{time}-invalid_name").should visible
59
+ container.text_field(:id,"passenger-first-name-#{time}").set("@%")
60
+ container.text_field(:id,"passenger-last-name-#{time}").set("@%")
61
+ BROWSER.link(:id,'submit').click
62
+ container.span(:id,"passenger-first-name-#{time}-invalid_name").should visible
63
+ container.span(:id,"passenger-last-name-#{time}-invalid_name").should visible
64
+ end
65
+ container = BROWSER.fieldset(:id,'payment')
66
+ container.text_field(:id,'security-code').set("052545454")
67
+ BROWSER.link(:id,'submit').click
68
+ container.span(:id,"security-code-invalid_card_security_code").should visible
69
+ container.select_list(:id,'card-expiration-month').select "1"
70
+ container.select_list(:id,'card-expiration-year').select (Date.today.year).to_s
71
+ BROWSER.link(:id,'submit').click
72
+ container.span(:id,"expiration-date-invalid_date_min").should visible
73
+ container.text_field(:id,'owner-name').set("diegoqaromero")
74
+ BROWSER.link(:id,'submit').click
75
+ container.span(:id,"owner-name-invalid_card_owner_name").should visible
76
+ container = BROWSER.fieldset(:id,'contact')
77
+ container.text_field(:id,'contact-email').set("123")
78
+ BROWSER.link(:id,'submit').click
79
+ container.span(:id,"contact-email-invalid_email").should visible
80
+ container.text_field(:id,'contact-email-repeat').set("123")
81
+ BROWSER.link(:id,'submit').click
82
+ container.span(:id,"contact-email-repeat-invalid_email").should visible
83
+ end
84
+
85
+ When /^Verifico intentos de compra con datos invalidos$/ do
86
+ container = BROWSER.fieldset(:id,'passengers')
87
+ plus_name=["A","B","C","D","E","F","G","H","I","J","k"]
88
+ (@search.adt+@search.cnn+@search.inf).times do |time|
89
+ container.text_field(:id,"passenger-first-name-#{time}").set("123")
90
+ BROWSER.link(:id,'submit').click
91
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
92
+ container.text_field(:id,"passenger-first-name-#{time}").set("@%")
93
+ BROWSER.link(:id,'submit').click
94
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
95
+ container.text_field(:id,"passenger-first-name-#{time}").set(nil)
96
+ BROWSER.link(:id,'submit').click
97
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
98
+ container.text_field(:id,"passenger-first-name-#{time}").set("Martin QA" + plus_name[time])
99
+ end
100
+ (@search.adt+@search.cnn+@search.inf).times do |time|
101
+ container.text_field(:id,"passenger-last-name-#{time}").set("123")
102
+ BROWSER.link(:id,'submit').click
103
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
104
+ container.text_field(:id,"passenger-last-name-#{time}").set("@%")
105
+ BROWSER.link(:id,'submit').click
106
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
107
+ container.text_field(:id,"passenger-last-name-#{time}").set(nil)
108
+ BROWSER.link(:id,'submit').click
109
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
110
+ container.text_field(:id,"passenger-last-name-#{time}").set("Diez" + plus_name[time])
111
+ end
112
+ container = BROWSER.fieldset(:id,'payment')
113
+ container.text_field(:id,'security-code').set("052545454")
114
+ BROWSER.link(:id,'submit').click
115
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
116
+ container.text_field(:id,'security-code').set(nil)
117
+ BROWSER.link(:id,'submit').click
118
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
119
+ container.select_list(:id,'card-brand').select "Visa" #Se puede hacer un select con regexp?
120
+ container.text_field(:id,'card-number').set("32454532532")
121
+ BROWSER.link(:id,'submit').click
122
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
123
+ container.text_field(:id,'card-number').set(nil)
124
+ BROWSER.link(:id,'submit').click
125
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
126
+ container.text_field(:id,'card-number').set("4242424242424242") #Parametrizar
127
+ container.text_field(:id,'security-code').set("123") #Parametrizar
128
+ container.select_list(:id,'card-expiration-month').select (Date.today.month - 1).to_s
129
+ container.select_list(:id,'card-expiration-year').select (Date.today.year).to_s
130
+ BROWSER.link(:id,'submit').click
131
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
132
+ container.select_list(:id,'card-expiration-month').select (Date.today.month).to_s
133
+ container.select_list(:id,'card-expiration-year').select (Date.today.year).to_s
134
+ container.text_field(:id,"owner-name").set(nil)
135
+ BROWSER.link(:id,'submit').click
136
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
137
+ container.text_field(:id,"owner-name").set("diegoqaromero")
138
+ BROWSER.link(:id,'submit').click
139
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
140
+ container.text_field(:id,"owner-name").set "Diego qa romero"
141
+ container = BROWSER.fieldset(:id,'contact')
142
+ container.text_field(:id,"contact-email").set("123")
143
+ BROWSER.link(:id,'submit').click
144
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
145
+ container.text_field(:id,"contact-email").set(nil)
146
+ BROWSER.link(:id,'submit').click
147
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
148
+ container.text_field(:id,"contact-email").set("testvuelos@despegar.com")
149
+ container.text_field(:id,"contact-email-repeat").set("123")
150
+ BROWSER.link(:id,'submit').click
151
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
152
+ container.text_field(:id,"contact-email-repeat").set(nil)
153
+ BROWSER.link(:id,'submit').click
154
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
155
+ container.text_field(:id,"contact-email-repeat").set("testvuelos@despegar.com")
156
+ container.text_field(:id,"phone-number-0").set ("#{}")
157
+ BROWSER.link(:id,'submit').click
158
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
159
+ container.text_field(:id,"phone-number-0").set (nil)
160
+ BROWSER.link(:id,'submit').click
161
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
162
+ container.text_field(:id,"phone-number-0").set("2345679")
163
+ BROWSER.checkbox(:id=>'read-agreement').set(true)
164
+ BROWSER.link(:id,'submit').click
165
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
166
+ end
167
+
168
+ When /^Verifico texto de error de banco vacio$/ do
169
+ BROWSER.empty_other_bank_name_error.should be_visible
170
+ end
171
+
172
+ When /^Verifico que se muestre el combo de codigo de telefono de pais$/ do
173
+ doc = Hpricot.parse(BROWSER.html)
174
+ BROWSER.text_field(:id,'country-code-0').should visible
175
+ BROWSER.text_field(:id,'country-code-0').set("AR")
176
+ BROWSER.text_field(:id,'country-code-0').send_keys :enter
177
+ sleep(0.5)
178
+ BROWSER.text_field(:id,'country-code-0').value.should equal("Argentina (54)")
179
+ BROWSER.text_field(:id,'country-code-0').set("XX")
180
+ BROWSER.text_field(:id,'country-code-0').send_keys :tab
181
+ BROWSER.text_field(:id,'country-code-0').value.should equal("XX")
182
+ #BROWSER.span(:id,'phone-0-invalid').should visible
183
+ BROWSER.text_field(:id,'country-code-0').set("AR")
184
+ BROWSER.text_field(:id,'country-code-0').send_keys :enter
185
+ end
186
+
187
+ When /^Verifico que se muestren los campos de factura$/ do
188
+ container = BROWSER.fieldset(:id,'invoice')
189
+ container.div(:id,'invoiceDefinition.selected.value').should visible
190
+ container.div(:id,'invoiceDefinition.invoiceDataDefinition').should_not visible
191
+ container.checkbox(:id,'invoice-check').should visible
192
+ container.checkbox(:id,'invoice-check').set(true)
193
+ container.text_field(:id,'invoice-fiscal-id').should visible
194
+ container.text_field(:id,'invoice-card-holder-name').should visible
195
+ container.select_list(:id,'invoice-country').should visible
196
+ container.select_list(:id,'invoice-state').should visible
197
+ container.text_field(:id,'invoice-city').should visible
198
+ container.text_field(:id,'invoice-street').should visible
199
+ if $SITE.match("MX")
200
+ container.text_field(:id,'invoice-email').should visible
201
+ container.text_field(:id,'invoice-postal-code').should visible
202
+ container.text_field(:id,'invoice-address-number').should visible
203
+ container.text_field(:id,'invoice-address-floor').should visible
204
+ container.text_field(:id,'invoice-address-deparment').should visible
205
+ container.link(:class,'search-postal-code').should visible
206
+ end
207
+ end
208
+
209
+ When /^Verifico texto de error de campos de factura vacio$/ do
210
+ container = BROWSER.fieldset(:id,'invoice')
211
+ BROWSER.link(:id,'submit').click
212
+ container.span(:id,'invoice-fiscal-id-missing_field').text.no_accents.should match("Por favor, ingrese el RFC de la razon social informada|Por favor, ingrese un numero de RUC")
213
+ if $SITE.match("MX")
214
+ container.span(:id,'invoice-card-holder-name-missing_field').text.no_accents.should match("Por favor, ingrese el nombre o razon social")
215
+ container.span(:id,'invoice-email-missing_field').text.no_accents.should match("Por favor, ingrese el e-mail donde desea recibir la factura fiscal")
216
+ container.span(:id,'invoice-city-missing_field').text.no_accents.should match("Por favor, ingrese la colonia del domicilio fiscal")
217
+ container.span(:id,'invoice-postal-code-missing_field').text.no_accents.should match("Por favor, ingrese el codigo postal del domicilio fiscal")
218
+ container.span(:id,'invoice-address-missing_field').text.no_accents.should match("Por favor, complete la direccion")
219
+ end
220
+ end
221
+
222
+ When /^Verifico texto de error de campos de factura con datos erroneos$/ do
223
+ container = BROWSER.fieldset(:id,'invoice')
224
+ container.text_field(:id,'invoice-fiscal-id').set("##%#}")
225
+ BROWSER.link(:id,'submit').click
226
+ if $SITE.match("MX")
227
+ container.span(:id,'invoice-fiscal-id-invalid_cuit').text.no_accents.should match("Por favor, ingrese un RFC valido")
228
+ container.text_field(:id,'invoice-email').set("qwerty")
229
+ BROWSER.link(:id,'submit').click
230
+ container.span(:id,'invoice-email-invalid_email').text.no_accents.should match("El e-mail ingresado posee caracteres invalidos. Por favor verifique la direccion ingresada")
231
+ elsif $SITE.match("PE")
232
+ container.span(:id,'invoice-fiscal-id-invalid_ruc').text.no_accents.should match("Por favor, verifique que el RUC contenga exactamente 11 digitos")
233
+ end
234
+ end
235
+
236
+ And /^Verifico los campos de cupones de descuento$/ do
237
+ if BROWSER.checkbox(:id,'vouchers').present?
238
+ BROWSER.checkbox(:id,'vouchers').set(true)
239
+ BROWSER.text_field(:id,'voucher-code-0').should visible("caja de texto de codigo de referencia")
240
+ BROWSER.link(:class,'add-voucher').should_not visible("link de agregar otro codigo de referencia")
241
+ BROWSER.text_field(:id,'voucher-code-0').set("233332223332223a")
242
+ BROWSER.checkbox(:id,"invoice-check").set(false) if BROWSER.checkbox(:id,"invoice-check").present?
243
+ BROWSER.checkbox(:id=>'read-agreement').set(true)
244
+ BROWSER.link(:id,'submit').click
245
+ sleep(1)
246
+ BROWSER.div(:id,'popup-checkout-transition-template').should_not visible
247
+ Watir::Wait.until(){BROWSER.span(:id,'voucher-code-0-invalid_id').should visible}
248
+ BROWSER.div(:class,'ux-common-warning ux-common-error').should visible
249
+ BROWSER.div(:class,'ux-common-warning ux-common-error').text.no_accents.downcase.should match("ocurrio un error con el codigo de referencia")
250
+ end
251
+ end
@@ -0,0 +1,78 @@
1
+ # -*- encoding : utf-8 -*-
2
+ Then /^Verifico que se muestre correctamente la caja de seguro sin chequear$/ do
3
+ BROWSER.div(:id,'upselling').should visible("caja de seguros")
4
+ BROWSER.div(:id,'upselling').checkbox(:id,'upselling-checkbox').should visible("checkbox en la caja de seguro")
5
+ BROWSER.div(:id,'upselling').link(:class,'coverage').should visible("link de cobertura en la caja de seguro")
6
+ BROWSER.div(:id,'upselling').span(:class,/status unprotected/).should visible("texto de no estoy protegido en la caja de seguro")
7
+ BROWSER.div(:id,'upselling').span(:class,/status unprotected/).text.should match("No estoy protegido")
8
+ BROWSER.div(:id,'upselling').span(:class,"description").text.should match("ASSIST CARD")
9
+ end
10
+
11
+ When /^Chequeo el seguro$/ do
12
+ BROWSER.div(:id,'upselling').checkbox(:id,'upselling-checkbox').set(true)
13
+ Watir::Wait.until(timeout = 20){!BROWSER.div(:class,'loading').span(:class,'img').present?}
14
+ sleep(1)
15
+ end
16
+
17
+ Then /^Verifico que se muestre correctamente la caja de seguro chequeada$/ do
18
+ BROWSER.div(:id,'upselling').should visible("caja de seguros")
19
+ BROWSER.div(:id,'upselling').checkbox(:id,'upselling-checkbox').should visible("checkbox en la caja de seguro")
20
+ BROWSER.div(:id,'upselling').link(:class,'coverage').should visible("link de cobertura en la caja de seguro")
21
+ BROWSER.div(:id,'upselling').span(:class,/status protected/).should visible("texto de estoy protegido en la caja de seguro")
22
+ BROWSER.div(:id,'upselling').span(:class,/status protected/).text.should match("Estoy protegido")
23
+ BROWSER.div(:id,'upselling').span(:class,"description").text.should match("ASSIST CARD")
24
+ end
25
+
26
+ When /^Muestro el popup de la cobertura completa$/ do
27
+ BROWSER.div(:id,'upselling').link(:class,'coverage').click
28
+ Watir::Wait.until(timeout = 20){BROWSER.div(:id,'popup-upselling-coverage-template').present?}
29
+ end
30
+
31
+ Then /^Verifico que se muestre correctamente el popup de la cobertura completa para destino "(.*)"$/ do |destino|
32
+ popup = BROWSER.div(:id,'popup-upselling-coverage-template')
33
+ popup.div(:class,'coverage').should visible("Contenido del popup")
34
+ popup.text.should match_sensitive("ASSIST CARD")
35
+ popup.div(:class,'coverage').ul(:class,'list codes').should visible("Contenido del popup Codigos")
36
+ popup.div(:class,'coverage').ul(:class,'list descriptions').should visible("Contenido del popup Descripcion")
37
+ popup.div(:class,'coverage').ul(:class,'list values').should visible("Contenido del popup Values")
38
+ popup.div(:class,'coverage').ul(:class,'list values').li(:class,/row odd/).text.strip.should match(destino.match("MIA") ? 'U\$S' : "€")
39
+ popup.div(:class,'coverage').text.should_not is_empty
40
+ BROWSER.div(:class,'popup-upselling-coverage').span(:class,'popup-close-button popup-close').click
41
+ Watir::Wait.until(timeout = 20){!popup.div(:class,'coverage').present?}
42
+ end
43
+
44
+ And /^Elijo "(.*)" si quiero cobertura$/ do |option|
45
+ BROWSER.div(:id,'upselling').checkbox(:id,'upselling-checkbox').set((option=="chequear") ? true : false)
46
+ Watir::Wait.until(timeout = 20){!BROWSER.div(:class,'loading').span(:class,'img').present?}
47
+ sleep(1)
48
+ end
49
+
50
+ When /^Se encuentra la opcion de cobertura$/ do
51
+ unless BROWSER.div(:id,'upselling').present?
52
+ pending("No se encuentra la opcion de seguros")
53
+ end
54
+ end
55
+
56
+ And /^Verifico que el precio del seguro se muestre correctamente en el desglose$/ do
57
+ BROWSER.div(:id,'detail').li(:class,/item destination_service_insurance/).should visible
58
+ price_detail=BROWSER.div(:id,'detail').li(:class,/item destination_service_insurance/).span(:class,'amount').text
59
+ price_assistance=BROWSER.div(:id,'upselling').span(:class,'description').span(:class,'bold').text.gsub(/\./,'').match(/(.+)(\D)(\d+) (por persona)$/)[3]
60
+ price_detail.gsub(/\./,'').to_i.should be_within(4).of(price_assistance.to_i*(@search.adt+@search.cnn+@search.inf)) unless $SITE == "AR"
61
+ end
62
+
63
+ And /^Verifico que el precio del seguro no se muestre en el desglose$/ do
64
+ BROWSER.div(:id,'detail').li(:class,'item travel-assistance ').should_not visible
65
+ end
66
+
67
+ Then /^valido que el seguro este "(.*)"$/ do |option|
68
+ Watir::Wait.until(timeout = 20){BROWSER.div(:id,'upselling').present?}
69
+ if (option=="chequear")
70
+ BROWSER.div(:id,'upselling').span(:class,/status protected hidden/).text.should match("Estoy protegido")
71
+ else
72
+ BROWSER.div(:id,'upselling').span(:class,/status unprotected/).text.should match("No estoy protegido")
73
+ end
74
+ end
75
+
76
+ When /^existe la opcion de cobertura$/ do
77
+ BROWSER.div(:id,'upselling').should visible
78
+ end
@@ -0,0 +1,75 @@
1
+ And /^Verifico la opcion de compartir en facebook$/ do
2
+ Watir::Wait.until(timeout = 20){BROWSER.div(:id,'mi-despegar-header').present?}
3
+ # BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').should visible("caja de compratir en facebook")
4
+ # BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').div(:class,'nibbler-shared-checkout-thanks-user').should visible("usuario logueado en facebook")
5
+ # BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').div(:class,'nibbler-shared-checkout-thanks-user').p(:class,'nibbler-shared-checkout-thanks-user-name').text.should match("Tester")
6
+ # BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').link(:class,'nibbler-shared-checkout-thanks-btn share-button').should visible("Boton facebook compartir")
7
+ # BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').link(:class,'nibbler-shared-checkout-thanks-btn share-button').click
8
+ # Watir::Wait.until(timeout = 20){BROWSER.div(:class,'fb_dialog_content fb_dialog_iframe').present?}
9
+ # frame = BROWSER.div(:class,'fb_dialog_content fb_dialog_iframe').frames.first
10
+ # frame.div(:class,'platform_dialog_container').form(:id,'uiserver_form').div(:class,'uiAttachmentTitle').links[0].text.no_accents.should match(@search.to_city_1.name($SITE)) unless @search.description=="multipledestinations"
11
+ # frame.div(:class,'platform_dialog_container').form(:id,'uiserver_form').textarea(:id,'feedform_user_message').set("TEST IT")
12
+ # frame.div(:id,'platform_dialog_bottom_bar').input(:id,'u_0_7').click
13
+ # Watir::Wait.until(timeout = 20){!BROWSER.div(:class,'fb_dialog_content fb_dialog_iframe').present?}
14
+ end
15
+
16
+ When /^Verifico el boton de login de facebook$/ do
17
+ BROWSER.div(:id,'ticket').div(:class,'facebook-buttons').should visible("Caja de botones de facebook")
18
+ BROWSER.div(:id,'ticket').div(:class,'facebook-buttons').span(:class,'messages-custom-login-title').should visible("Titulo caja de botones de facebook")
19
+ BROWSER.div(:id,'ticket').div(:class,'facebook-buttons').ul(:class,'nibbler-shared-checkout-thanks-steps').should visible("Descripcion de pasos en caja de botones de facebook")
20
+ BROWSER.div(:id,'ticket').div(:class,'facebook-buttons').link(:class,'social-login nibbler-shared-checkout-thanks-btn').should visible("Link para ingresar en caja de botones de facebook")
21
+ end
22
+
23
+ When /^Verifico que el usuario se loguee en facebook$/ do
24
+ BROWSER.div(:id,'ticket').div(:class,'facebook-buttons').link(:class,'social-login nibbler-shared-checkout-thanks-btn').click
25
+ attach_browser(BROWSER, :url, "facebook")
26
+ Watir::Wait.until(timeout = 20){BROWSER.text_field(:id,'email').present? or BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').present?}
27
+ unless BROWSER.div(:id,'ticket').div(:class,'button-logged nibbler-shared-checkout-thanks-cont').present?
28
+ BROWSER.text_field(:id,'email').set("nicolas.simean@teracode.com")
29
+ BROWSER.text_field(:id,'pass').set("testing")
30
+ BROWSER.button(:id,'u_0_1').click
31
+ attach_browser(BROWSER, :url, ($SITE=="BR") ? "decolar" : "despegar")
32
+ end
33
+ end
34
+
35
+ And /^me pide confirmar permisos$/ do
36
+ nil.should be_true
37
+ end
38
+
39
+ And /^confirmo los permisos para loguearme en facebook$/ do
40
+
41
+ end
42
+
43
+ And /^Cierro la sesion de facebook$/ do
44
+ BROWSER.div(:id,'header').p(:class,'button-logout').link(:class,'social-logged').click
45
+ Watir::Wait.until(timeout = 20){!BROWSER.div(:id,'header').p(:class,'button-logout').link(:class,'social-logged').present?}
46
+ end
47
+
48
+ And /^Verifico los links del header$/ do
49
+ header_html = Hpricot.parse(BROWSER.div(:id,'header').html)
50
+ links = []
51
+ (header_html/"a").each do |a|
52
+ if a.attributes['href'] and !a.attributes['href'].match(/pacotes/)
53
+ if a.attributes['href'].match(/http/)
54
+ links << a.attributes['href']
55
+ else
56
+ links << "http://#{@search.host}" + a.attributes['href']
57
+ end
58
+ end
59
+ end
60
+ links.uniq.each do |link|
61
+ get = HTTParty.get(link)
62
+ get.code.should equal(200)
63
+ end
64
+ end
65
+
66
+ And /^Verifico que se muestre las ofertas de cross selling$/ do
67
+ BROWSER.div(:class,'ux-common-crossselling').should visible("Cross selling en gracias")
68
+ end
69
+
70
+ And /^Verifico el link de mi despegar$/ do
71
+ if @case_data.params['country'].upcase=="BR"
72
+ BROWSER.div(:class,'ux-shared-checkout-thanks-ticket-cont').text.no_accents.downcase.should match("em caso de duvidas, acesse")
73
+ BROWSER.div(:class,'ux-shared-checkout-thanks-ticket-cont').link(:href,/http:\/\/#{@search.host}\/meudecolar/).should visible
74
+ end
75
+ end
@@ -0,0 +1,140 @@
1
+ # -*- encoding : utf-8 -*-
2
+ #rules
3
+ When /^Ingreso a la pagina de reglas "(.*)"$/ do |site|
4
+ set_site(site)
5
+ @search = MockSearchRoundtrip.new(site,$ENV,nil)
6
+ BROWSER.goto(@search.host + "/content/flights/rules")
7
+ set_cookies(BROWSER)
8
+ end
9
+
10
+ Then /^Espero que la carga devuelva "(.*)"$/ do |text|
11
+ BROWSER.text.should match(text)
12
+ end
13
+
14
+ Then /^Verifico que el link de costos redirija correctamente$/ do
15
+ BROWSER.a(:class,'baggage-fees').href.should match("\/content\/flights\/baggagefees")
16
+ end
17
+
18
+ #costs
19
+
20
+ When /^Ingreso a la pagina de costos "(.*)"$/ do |site|
21
+ set_site(site)
22
+ @search = MockSearch.new(site,$ENV,nil)
23
+ BROWSER.goto(@search.host + "/content/flights/baggagefees")
24
+ set_cookies(BROWSER)
25
+ end
26
+
27
+ When /^Espero que termine de cargar la pagina de costos$/ do
28
+ Watir::Wait.until{BROWSER.div(:class,"tabs grid_7 omega alpha").present?}
29
+ end
30
+
31
+ When /^Hago click en el indice "(.*)"$/ do |index|
32
+ BROWSER.div(:class,"tabs grid_7 omega alpha").a(:class=>/grid_7 omega alpha/,:index=>index.to_i).click
33
+ end
34
+
35
+ When /^Hago click en la aerolinea "(.*)"$/ do |index|
36
+ BROWSER.li(:class=>"airline",:index=>index.to_i).div(:class,"airline-title").click
37
+ end
38
+
39
+ Then /^Verifico que se muestre la aerolinea "(.*)"$/ do |index|
40
+ BROWSER.li(:class=>"airline",:index=>index.to_i).ul(:class,"fees-category").should visible
41
+ end
42
+
43
+ Then /^Verifico que se muestre el indice "(.*)"$/ do |text|
44
+ BROWSER.div(:class,"tabs grid_7 omega alpha").a(:class=>"tab active grid_7 omega alpha",:index=>0).text.strip.should match(text)
45
+ end
46
+
47
+ Then /^Verifico que no se muestre el indice "(.*)"$/ do |text|
48
+ BROWSER.div(:class,"tabs grid_7 omega alpha").a(:class=>"tab active grid_7 omega alpha",:index=>0).text.strip.should_not match(text)
49
+ end
50
+
51
+ Then /^Verifico la correcta carga de la pagina de costos$/ do
52
+ BROWSER.li(:class,"airline").ul(:class,"fees-category").exists?.should be_true
53
+ end
54
+
55
+ #webcheckin
56
+
57
+ When /^Ingreso a la pagina de webcheckin "(.*)"$/ do |site|
58
+ set_site(site)
59
+ @search = MockSearch.new(site,$ENV,nil)
60
+ BROWSER.goto(@search.host + "/content/flights/webcheckin")
61
+ set_cookies(BROWSER)
62
+ end
63
+
64
+ Then /^Espero que la pagina de webcheckin cargue correctamente$/ do
65
+ Watir::Wait.until(timeout = 60){BROWSER.ul(:class,'airlines').present?}
66
+ end
67
+
68
+ When /^Levanto datos de aerolineas$/ do
69
+ doc = Hpricot.parse(BROWSER.html)
70
+ @airlines = (doc/"ul.airlines li")
71
+ end
72
+
73
+ Then /^Verifico cada aerolinea y que el link redireccione correctamente$/ do
74
+ i = 0
75
+ air_no_200 = []
76
+ @airlines.each do |airline|
77
+ href = (airline/"a").first.attributes['href']
78
+ img = (airline/"img").first.attributes
79
+ code = img['src'].match(/\/(..)\.png/)[1]
80
+ text = (airline/"h2").inner_text.strip
81
+ img['alt'].should match(text)
82
+ if code.upcase =~ /LA|DL|KLM/
83
+ href.should match(/www.lan.com|delta.com|klm/)
84
+ elsif code.upcase == 'JJ'
85
+ else
86
+ begin
87
+ BROWSER.ul(:class,'airlines').links[i].click
88
+ rescue Timeout::Error
89
+ puts "Timeout al ingresar al webcheckin de #{text}"
90
+ end
91
+ href.should match("content\/flights\/webcheckin\/#{code.upcase}")
92
+ begin
93
+ Watir::Wait.until(timeout = 60){BROWSER.frame(:id,'frame').present?}
94
+ rescue Watir::Wait::TimeoutError, Timeout::Error
95
+ puts "No se muestra como un frame -> #{text}"
96
+ end
97
+ if BROWSER.frame(:id,'frame').present?
98
+ frame = BROWSER.frame(:id,'frame')
99
+ begin
100
+ frame.src.empty?.should_not be_true
101
+ rescue Selenium::WebDriver::Error::UnknownError
102
+ puts frame
103
+ rescue Timeout::Error
104
+ puts frame
105
+ end
106
+ begin
107
+ respond = HTTParty.get(frame.src)
108
+ rescue URI::InvalidURIError
109
+ puts "URI::InvalidURIError -> #{text}"
110
+ rescue HTTParty::RedirectionTooDeep
111
+ puts "HTTParty::RedirectionTooDeep -> #{text}"
112
+ rescue EOFError
113
+ puts "EOFError -> #{text}"
114
+ rescue Errno::ECONNREFUSED
115
+ puts "Errno::ECONNREFUSED -> #{text}"
116
+ rescue SocketError
117
+ puts "SocketError -> #{text}"
118
+ rescue Errno::ECONNRESET
119
+ puts "Errno::ECONNRESET -> #{text}"
120
+ rescue Errno::ETIMEDOUT
121
+ air_no_200 << text
122
+ rescue Timeout::Error
123
+ puts "Timeout::Error -> #{text}"
124
+ end
125
+ if respond
126
+ puts "#{respond.code} #{text} #{frame.src}"
127
+ air_no_200 << text if respond.code != 200
128
+ end
129
+ end
130
+ BROWSER.back
131
+ begin
132
+ Watir::Wait.until(timeout = 120){BROWSER.ul(:class,'airlines').present?}
133
+ rescue Watir::Wait::TimeoutError
134
+ puts "Watir::Wait::TimeoutError (back) -> #{text}"
135
+ end
136
+ end
137
+ i += 1
138
+ end
139
+ air_no_200.should is_empty
140
+ end
@@ -0,0 +1,73 @@
1
+ #encoding: UTF-8
2
+ When /^Espero que termine de cargar la pagina de desambiguacion$/ do
3
+ Watir::Wait.until(timeout = 60){BROWSER.div(:class,'disambiguation-top grid_24 alpha omega').present?}
4
+ end
5
+
6
+ Then /^Verifico que ingrese a la pagina de desambiguacion$/ do
7
+ BROWSER.div(:class,"messages").should visible
8
+ BROWSER.div(:class,"messages").text.should match("Por favor seleccione uno de los siguientes aeropuertos cercanos|Veja abaixo os aeroportos mais|Please choose one of the following nearby airports")
9
+ end
10
+
11
+ When /^Seteo las edades de los menores$/ do
12
+ @search.get_childrens.to_i.times do | j |
13
+ BROWSER.li(:class,"ctn-select-age ctn-#{1+j}").selects[0].select_value(["I","C"][rand(2)])
14
+ end
15
+ end
16
+
17
+ Then /^Verifico que se muestre el mapa$/ do
18
+ doc = Hpricot.parse(BROWSER.html)
19
+ (doc/"li.strech").each do |tramo|
20
+ (tramo/"div.map-container").should_not is_empty
21
+ (tramo/"ul.airports").should_not is_empty
22
+ (tramo/"ul/li").should_not is_empty
23
+ end
24
+ end
25
+
26
+ And /^Verifico que el combo de distancia este correcto$/ do
27
+ doc = Hpricot.parse(BROWSER.html)
28
+ @distancia = (doc/"select.distances").first
29
+ BROWSER.select_list(:class,@distancia.attributes['class']).should visible
30
+ BROWSER.select_list(:class,@distancia.attributes['class']).select_value((@distancia/"option").last.attributes['value'])
31
+ sleep(0.5)
32
+ end
33
+
34
+ And /^Verifico cada opcion de aeropuerto "(.*)" en "(.*)"$/ do |type,city|
35
+ cities={"BZC"=>["GIG", "SDU", "JDF", "CFB", "CAW", "MEA", "IZA"],
36
+ "PCM"=>["CUN","CZM"]}
37
+ doc = Hpricot.parse(BROWSER.html)
38
+ i = 0
39
+ (doc/"li.strech").each do |tramo|
40
+ airports = ((tramo/"ul.airports//li.airport").reject{|it| it.attributes['style'].match(/none/)})
41
+ airports.collect{ |airport| (airport/"p.description").inner_text[-4,3]}.should equal(cities[city])
42
+ option = rand(airports.length)
43
+ begin
44
+ aux = (tramo/"ul.airports//li.airport").length - airports.length
45
+ rescue
46
+ aux = 0
47
+ end
48
+ if type.downcase.match(/multipledestinations/)
49
+ if (tramo/"select").first.attributes["class"].downcase.match(/departure/)
50
+ @iata = (tramo/"ul.airports//p.description")[option+aux].inner_text[-4,3]
51
+ else
52
+ @iata = (tramo/"ul.airports//p.description")[option+aux].inner_text[-4,3]
53
+ end
54
+ else
55
+ if (tramo/"select").first.attributes["class"].downcase.match(/departure/)
56
+ @iata = (tramo/"ul.airports//p.description")[option+aux].inner_text[-4,3]
57
+ else
58
+ @iata = (tramo/"ul.airports//p.description")[option+aux].inner_text[-4,3]
59
+ end
60
+ end
61
+ puts @iata
62
+ BROWSER.li(:class=>"strech",:index=>i).radio(:class=>'radio',:index=>option+aux).click if BROWSER.li(:class=>"strech",:index=>i).radio(:class=>'radio',:index=>option+aux).exists?
63
+ i += 1
64
+ end
65
+ end
66
+
67
+ And /^Paso a resultados$/ do
68
+ BROWSER.link(:class,'ctn-searchbutton').click
69
+ end
70
+
71
+ Then /^Verifico que el aeropuerto elegido sea el buscado$/ do
72
+ BROWSER.url.should match("#{@iata}")
73
+ end