flights_gui_henry_tests 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/features/data/miles.yml +3 -3
- data/features/step_definitions/checkout/checkout_steps.rb +12 -0
- data/features/step_definitions/checkout/error_messages.rb +14 -1
- data/features/step_definitions/landing/landing_steps.rb +3 -1
- data/features/step_definitions/search/basefare_steps.rb +9 -2
- data/features/step_definitions/search/flight_gui_steps.rb +5 -2
- data/features/step_definitions/search/wish_list_steps.rb +2 -2
- data/features/support/lib/helpers/browser.rb +5 -1
- data/features/support/lib/helpers/clusters.rb +39 -74
- data/features/tests/checkout/error_messages.feature +17 -1
- data/features/tests/checkout/integration.feature +1 -0
- data/features/tests/checkout/low_cost.feature +14 -0
- data/features/tests/landing/landing_positive.feature +0 -6
- data/features/tests/search/basefare.feature +1 -0
- data/features/tests/search/orders.feature +0 -24
- data/features/tests/search/searches.feature +22 -0
- data/flights_gui_henry_tests.gemspec +1 -1
- data/henry-context.yml +93 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGRjOTA1MWIxNTNlYzI4YjQxM2M5ZmIwMTMyZWE2ZjVlZWRiYmNmYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjlhZjU2OTExNDYxZWIyOTlhZTA1OGJlYTQxOGRlMmU2MTJkNTk0Zg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmVmODMyOTI3NDM4OGI4MThkMzM5ZTVkNDg4YjY0NDdlNTIxNjFhMWU4MDY0
|
10
|
+
OGIwMzI3OTAyNjExYzJlZTY3Y2FhYjRkYTdkZDVhOTc1NjY2OGZlOTkwOGQ5
|
11
|
+
MjlhYTIxYmZiYjA3ODg5ZTI0NTRhZTQ2YjU1YjEwNTVlZDMxZDk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTJhY2FmYzFhYzA0MmRmNjk5YjZmY2NmZGYzYzU5NTk5M2FmYTc0NjAyZjgz
|
14
|
+
NDk1NWNlZDg2MGRiMTc3NmMzMTJlNDhlMTA5MzhkMTM5NTc1OWE2ZmU4Y2Q2
|
15
|
+
NDFkZTg1YWFkNGNmMGUzOGFlNjI3MzQwOWE0NGYzMzdiNjQxYWE=
|
data/features/data/miles.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
US:
|
2
2
|
text:
|
3
|
-
-
|
4
|
-
-
|
3
|
+
- Earn up to miles unit
|
4
|
+
- You can earn miles unit
|
5
5
|
unit:
|
6
6
|
MILE: miles
|
7
7
|
KILOMETER: kilometres
|
@@ -47,7 +47,7 @@ US:
|
|
47
47
|
- with SkyMiles reward program
|
48
48
|
- You can earn unit SkyMiles
|
49
49
|
AM:
|
50
|
-
- with Premier reward program
|
50
|
+
- with Club Premier reward program
|
51
51
|
- You can earn unit Club Premier
|
52
52
|
AC:
|
53
53
|
- with Altitude reward program
|
@@ -185,3 +185,15 @@ And /^Levanto los datos del vuelo$/ do
|
|
185
185
|
end
|
186
186
|
end
|
187
187
|
end
|
188
|
+
|
189
|
+
When /^Verifico que se muestre el banner de cancelacion$/ do
|
190
|
+
value = get_abtesting "showFreeCancelMessage"
|
191
|
+
puts value
|
192
|
+
if $SITE=="EC" and value < 50
|
193
|
+
BROWSER.div(:id,'cancellation-advice').should visible("banner de cancelacion")
|
194
|
+
BROWSER.div(:id,'cancellation-advice').div(:class,'ux-common-message-content').p(:index,0).text.strip.should equal("¡Compre tranquilo!")
|
195
|
+
BROWSER.div(:id,'cancellation-advice').div(:class,'ux-common-message-content').p(:index,1).text.no_accents.strip.should equal("Si necesita cancelar su compra puede hacerlo gratis desde Mi Despegar hasta las 22 hs. del dia de hoy.")
|
196
|
+
else
|
197
|
+
BROWSER.div(:id,'cancellation-advice').should_not visible("banner de cancelacion")
|
198
|
+
end
|
199
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
When /^Verifico que sean visibles los campos obligatorios$/ do
|
2
3
|
container = BROWSER.fieldset(:id,'passengers')
|
3
4
|
index = 0
|
@@ -248,4 +249,16 @@ And /^Verifico los campos de cupones de descuento$/ do
|
|
248
249
|
BROWSER.div(:class,'ux-common-warning ux-common-error').should visible
|
249
250
|
BROWSER.div(:class,'ux-common-warning ux-common-error').text.no_accents.downcase.should match("ocurrio un error con el codigo de referencia")
|
250
251
|
end
|
251
|
-
end
|
252
|
+
end
|
253
|
+
|
254
|
+
And /^Verifico las nacionalidades de los pasajeros$/ do
|
255
|
+
if $SITE=~/AR|VE/
|
256
|
+
container = BROWSER.fieldset(:id,'passengers')
|
257
|
+
container.select_list(:id,'nationality-0').select_value($SITE)
|
258
|
+
container.span(:id,'nationality-0-invalid_custom_nationality').should_not visible("error en la nacionalidad")
|
259
|
+
container.select_list(:id,'nationality-0').select_value("BR")
|
260
|
+
container.span(:id,'nationality-0-invalid_custom_nationality').should visible("error en la nacionalidad")
|
261
|
+
container.span(:id,'nationality-0-invalid_custom_nationality').text.no_accents.should match("En cumplimiento de la resolucion 5499, solo podran comprar en este sitio residentes de la Republica Argentina.|Pasajes aereos internacionales solo para la venta de residentes de la Republica Bolivariana de Venezuela conformes al Art 2 de la providencia 124 de Cadivi.")
|
262
|
+
BROWSER.div(:id,'agreement.value').label(:class,'label').text.no_accents.should match("y declaro que todos los pasajeros son residentes de la Republica Argentina|y declaro ser residente de la Republica Bolivariana de Venezuela")
|
263
|
+
end
|
264
|
+
end
|
@@ -50,7 +50,9 @@ When /^Genero resultados de landing$/ do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
When /^Espero que termine de cargar la home de landing$/ do
|
53
|
-
Watir::Wait.until(timeout = 60){BROWSER.div(:class,'destiny-offers').present? or BROWSER.div(:class,'most-searched').present?}
|
53
|
+
Watir::Wait.until(timeout = 60){BROWSER.div(:class,'destiny-offers').present? or BROWSER.div(:class,'most-searched').present? or BROWSER.form(:class,'searchbox flights').present?}
|
54
|
+
sleep(2)
|
55
|
+
pending("No hay resultados ") unless (BROWSER.div(:class,'destiny-offers').present? or BROWSER.div(:class,'most-searched').present?)
|
54
56
|
@class_div = BROWSER.div(:class,'destiny-offers').present? ? 'destiny-offers' : 'most-searched'
|
55
57
|
end
|
56
58
|
|
@@ -35,12 +35,19 @@ end
|
|
35
35
|
Then /^Valido el sorting en "(.*)"$/ do |pais|
|
36
36
|
doc = Hpricot.parse(BROWSER.select_list(:id,'orderby').html)
|
37
37
|
options = (doc/"option").collect{|option| option.attributes['value']}
|
38
|
-
(options.include?("TOTALFARE_ASCENDING") and options.include?("TOTALFARE_DESCENDING")).should be_true
|
39
38
|
if pais=="BR"
|
40
39
|
BROWSER.select_list(:id,'orderby').value.should match("FARE_ASCENDING")
|
41
40
|
elsif pais != "MX"
|
42
41
|
BROWSER.select_list(:id,'orderby').value.should match("TOTALFARE_ASCENDING")
|
43
42
|
end
|
43
|
+
options.should include?("FARE_ASCENDING")
|
44
|
+
options.should include?("STOPSCOUNT_ASCENDING")
|
45
|
+
options.should include?("TOTALFARE_ASCENDING")
|
46
|
+
options.should include?("DURATION_ASCENDING")
|
47
|
+
options.should include?("PERSONAL_ASCENDING")
|
48
|
+
options.should_not include?("FARE_DESCENDING")
|
49
|
+
options.should_not include?("STOPSCOUNT_DESCENDING")
|
50
|
+
options.should_not include?("TOTALFARE_DESCENDING")
|
44
51
|
end
|
45
52
|
|
46
53
|
Then /^Verifico que el texto en el combo de ordenamiento sea el correcto$/ do
|
@@ -59,6 +66,6 @@ Then /^Verifico los textos de las opciones del combo$/ do
|
|
59
66
|
else "Mas Elegidos"
|
60
67
|
end
|
61
68
|
doc = Hpricot.parse(BROWSER.select_list(:id,'orderby').html)
|
62
|
-
options = (doc/"option").collect{|option| option.inner_text.no_accents}
|
69
|
+
options = (doc/"option").collect{|option| option.inner_text.no_accents.strip}
|
63
70
|
options.include?(combo_text).should be_true
|
64
71
|
end
|
@@ -180,10 +180,13 @@ end
|
|
180
180
|
|
181
181
|
And /^Realizo la compra$/ do
|
182
182
|
#BROWSER.checkbox(:id=>'read-agreement').set(true)
|
183
|
-
BROWSER.
|
183
|
+
unless BROWSER.checkbox(:id=>'read-agreement').set?
|
184
|
+
BROWSER.execute_script("javascript:void($('#read-agreement').click());")
|
185
|
+
end
|
184
186
|
begin
|
185
|
-
#BROWSER.a(:id=>'submit').click
|
186
187
|
BROWSER.execute_script("javascript:void($('#submit').click());")
|
188
|
+
rescue Selenium::WebDriver::Error::UnknownError
|
189
|
+
BROWSER.a(:id=>'submit').click
|
187
190
|
rescue Watir::Wait::TimeoutError, Timeout::Error
|
188
191
|
stop_browser(BROWSER)
|
189
192
|
end
|
@@ -54,7 +54,7 @@ Then /^Abro la lista de deseos$/ do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
Then /^Verifico textos y que no se muestren opciones en la lista de deseos$/ do
|
57
|
-
BROWSER.div(:class,'nibbler-popup-wishlist nibbler-header-popup big').div(:class,'nibbler-common-last-searches nibbler-common-header-favorites-list').should visible("lista de elementos vacio")
|
57
|
+
#BROWSER.div(:class,'nibbler-popup-wishlist nibbler-header-popup big').div(:class,'nibbler-common-last-searches nibbler-common-header-favorites-list').should visible("lista de elementos vacio")
|
58
58
|
BROWSER.div(:class,'nibbler-popup-wishlist nibbler-header-popup big').div(:class,'nibbler-common-last-searches nibbler-common-with').should_not visible("lista con deseos")
|
59
59
|
end
|
60
60
|
|
@@ -119,7 +119,7 @@ Then /^Me deslogueo como usuario$/ do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
Then /^Verifico que no se muestre en el header el usuario logueado$/ do
|
122
|
-
BROWSER.div(:id,'nibbler-common-header').
|
122
|
+
BROWSER.div(:id,'nibbler-common-header').link(:class,'button-login').should visible("boton de logueo")
|
123
123
|
BROWSER.div(:id,'nibbler-common-header').div(:class,'fb-description').should_not visible("usuario logueado")
|
124
124
|
BROWSER.div(:id,'nibbler-common-header').li(:class,'nibbler-common-header-favorites nibbler-user nibbler-common-header-favorites-has').should_not visible("corazon rojo en el header")
|
125
125
|
end
|
@@ -29,7 +29,11 @@ def set_cookies(browser)
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def get_abtesting(abtesting)
|
32
|
-
|
32
|
+
begin
|
33
|
+
return BROWSER.cookies.to_a.select{|cookie| cookie[:name]=="abzTestingId"}.first[:value].split(',').select{|option| option.match(/#{abtesting}/)}.first.gsub(/\D/,'').to_i
|
34
|
+
rescue NoMethodError
|
35
|
+
return 0
|
36
|
+
end
|
33
37
|
end
|
34
38
|
|
35
39
|
def get_cookie(name)
|
@@ -50,73 +50,27 @@ def validate_cluster_miles(json,type,cluster,i)
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
end
|
54
|
-
|
55
|
-
def validate_cluster_ecoflights(json,type,cluster,i)
|
56
|
-
|
57
|
-
j=0
|
58
|
-
if type != "multipledestinations"
|
59
|
-
cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').ul(:class,'itineraries-group').lis(:class,'item itinerary itinerary-required').each do |route|
|
60
|
-
if route.li(:class,'ecological').span(:class,'main-sprite icon-eco-flight').present?
|
61
|
-
json['result']['data']['items'][i]['itinerariesBox']['outboundRoutes'][j]['carbonFootprintInfo']['mostEcological'].should be_true
|
62
|
-
else
|
63
|
-
json['result']['data']['items'][i]['itinerariesBox']['outboundRoutes'][j]['carbonFootprintInfo']['mostEcological'].should be_false
|
64
|
-
end
|
65
|
-
route.li(:class,'stops').a(:class,'text').click
|
66
|
-
Watir::Wait.until{BROWSER.div(:class,"flights-popup popup-detail").present?}
|
67
|
-
json['result']['data']['items'][i]['itinerariesBox']['outboundRoutes'].collect{|outbound| (outbound['carbonFootprintInfo']['relativeWeight'] * 100).to_i}.include?(BROWSER.div(:class,"flights-popup popup-detail").span(:class,'main-sprite icon-full-leaf').style.match(/(\d+)(\.|\%)/)[1].to_i).should be_true
|
68
|
-
j += 1
|
69
|
-
cerrar_popup
|
70
|
-
end
|
71
|
-
if type == "roundtrip"
|
72
|
-
k=0
|
73
|
-
cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').ul(:class,'itineraries-group').lis(:class,'item itinerary itinerary-required').each do |route|
|
74
|
-
if route.li(:class,'ecological').span(:class,'main-sprite icon-eco-flight').present?
|
75
|
-
json['result']['data']['items'][i]['itinerariesBox']['inboundRoutes'][k]['carbonFootprintInfo']['mostEcological'].should be_true
|
76
|
-
else
|
77
|
-
json['result']['data']['items'][i]['itinerariesBox']['inboundRoutes'][k]['carbonFootprintInfo']['mostEcological'].should be_false
|
78
|
-
end
|
79
|
-
route.li(:class,'stops').a(:class,'text').click
|
80
|
-
Watir::Wait.until{BROWSER.div(:class,"flights-popup popup-detail").present?}
|
81
|
-
json['result']['data']['items'][i]['itinerariesBox']['inboundRoutes'].collect{|inbound| (inbound['carbonFootprintInfo']['relativeWeight'] * 100).to_i}.include?(BROWSER.div(:class,"flights-popup popup-detail").span(:class,'main-sprite icon-full-leaf').style.match(/(\d+)(\.|\%)/)[1].to_i).should be_true
|
82
|
-
k += 1
|
83
|
-
cerrar_popup
|
84
|
-
end
|
85
|
-
end
|
86
|
-
else
|
87
|
-
cluster.div(:class,'itineraries').divs(:class,'sub-cluster multiple').each do |route|
|
88
|
-
if route.li(:class,'ecological').span(:class,'main-sprite icon-eco-flight').present?
|
89
|
-
json['result']['data']['items'][i]['itinerary']['routes'][j]['carbonFootprintInfo']['mostEcological'].should be_true
|
90
|
-
else
|
91
|
-
json['result']['data']['items'][i]['itinerary']['routes'][j]['carbonFootprintInfo']['mostEcological'].should be_false
|
92
|
-
end
|
93
|
-
route.li(:class,'stops').a(:class,'text').click
|
94
|
-
Watir::Wait.until{BROWSER.div(:class,"flights-popup popup-detail").present?}
|
95
|
-
json['result']['data']['items'][i]['itinerary']['routes'].collect{|aux|(aux['carbonFootprintInfo']['relativeWeight'] * 100).to_i}.include?(BROWSER.div(:class,"flights-popup popup-detail").span(:class,'main-sprite icon-full-leaf').style.match(/(\d+)(\.|\%)/)[1].to_i).should be_true
|
96
|
-
j += 1
|
97
|
-
cerrar_popup
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|
53
|
+
end
|
102
54
|
|
103
55
|
def validate_cluster_details(json,type,cluster,i,itinerary)
|
104
56
|
j=0
|
105
57
|
BROWSER.div(:class,'show-and-hide-clusters').link(:class,'toggle-clusters show-clusters').click if BROWSER.div(:class,'show-and-hide-clusters').link(:class,'toggle-clusters show-clusters').present?
|
106
58
|
if type != "multipledestinations"
|
107
59
|
cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').click if cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').present?
|
108
|
-
cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').ul(:class,'itineraries-group cluster-items-list').lis(:class
|
109
|
-
recorrer_segmentos(route,itinerary.idas[j])
|
60
|
+
cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').ul(:class,'itineraries-group cluster-items-list').lis(:class,"item itinerary cluster-item").each do |route|
|
61
|
+
cluster_detail = recorrer_segmentos(route,itinerary.idas[j])
|
110
62
|
j += 1
|
111
63
|
cerrar_popup
|
64
|
+
validar_clase(cluster_detail,route)
|
112
65
|
end
|
113
66
|
if type == "roundtrip"
|
114
67
|
k=0
|
115
68
|
cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').click if cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').present?
|
116
|
-
cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').ul(:class,'itineraries-group cluster-items-list').lis(:class
|
117
|
-
recorrer_segmentos(route,itinerary.vueltas[k])
|
69
|
+
cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').ul(:class,'itineraries-group cluster-items-list').lis(:class,"item itinerary cluster-item").each do |route|
|
70
|
+
cluster_detail = recorrer_segmentos(route,itinerary.vueltas[k])
|
118
71
|
k += 1
|
119
72
|
cerrar_popup
|
73
|
+
validar_clase(cluster_detail,route)
|
120
74
|
end
|
121
75
|
end
|
122
76
|
else
|
@@ -146,6 +100,12 @@ def validate_itins_cluster_details(json,type,cluster,i)
|
|
146
100
|
end
|
147
101
|
end
|
148
102
|
|
103
|
+
def validar_clase(cluster,route)
|
104
|
+
if cluster.tramos.select{|tramo| tramo['bussines'] }.empty?
|
105
|
+
route
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
149
109
|
def recorrer_segmentos(route,cluster)
|
150
110
|
route.li(:class,'stops').a(:class,'text').click
|
151
111
|
Watir::Wait.until{BROWSER.div(:class,"flights-popup popup-detail").present?}
|
@@ -156,7 +116,8 @@ def recorrer_segmentos(route,cluster)
|
|
156
116
|
detail.tramos.last['ciudad_destino'].should match(cluster.destino)
|
157
117
|
cluster.fecha.should equal(detail.tramos.first['fecha_origen'])
|
158
118
|
cluster.hou_sal_ida.should equal(detail.tramos.first['hora_origen'])
|
159
|
-
|
119
|
+
reglas_de_vuelo()
|
120
|
+
return detail
|
160
121
|
end
|
161
122
|
|
162
123
|
def reglas_de_vuelo()
|
@@ -181,12 +142,13 @@ def validate_cluster_with_headers(type,cluster,i)
|
|
181
142
|
end
|
182
143
|
|
183
144
|
def validate_cluster_ancillaries(json,type,cluster,i)
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
145
|
+
j=0
|
146
|
+
if type != "multipledestinations"
|
147
|
+
cluster.div(:class,'itineraries').div(:class,'sub-cluster outbound').ul(:class,'itineraries-group cluster-items-list').lis(:class,'item itinerary cluster-item').each do |route|
|
148
|
+
puts "entra"
|
149
|
+
json['result']['data']['items'][i]['itinerariesBox']['outboundRoutes'][j]['ancillaryTypes'].each do |amenity|
|
150
|
+
puts "paso d"
|
151
|
+
route.li(:class,'ancillaries').span(:class,"icon-ancillaries icon-ancillaries-#{amenity}").should visible
|
190
152
|
# (route.li(:class,'ancillaries').span(:class,"icon-ancillaries icon-ancillaries-#{amenity}")).click
|
191
153
|
# popup = Hpricot.parse(BROWSER.div(:class,'flights-popup popup-ancillary').html)
|
192
154
|
# if amenity == 'INTERNET_ACCESS'
|
@@ -198,24 +160,27 @@ def validate_cluster_ancillaries(json,type,cluster,i)
|
|
198
160
|
# popup.div(:class,'popup-header').inner_text.no_accents.strip.should match(/Equipaje por pasajero/)
|
199
161
|
# end
|
200
162
|
# end
|
163
|
+
end
|
164
|
+
j += 1
|
165
|
+
# cerrar_popup
|
166
|
+
end
|
167
|
+
if type == "roundtrip"
|
168
|
+
cluster.div(:class,'itineraries').div(:class,'sub-cluster inbound').ul(:class,'itineraries-group cluster-items-list').lis(:class,'item itinerary cluster-item').each do |route|
|
169
|
+
puts "entra c"
|
170
|
+
json['result']['data']['items'][i]['itinerariesBox']['inboundRoutes'][j]['ancillaryTypes'].each do |amenity|
|
171
|
+
puts "paso"
|
172
|
+
route.li(:class,'ancillaries').span(:class,"icon-ancillaries icon-ancillaries-#{amenity}").should visible
|
201
173
|
end
|
202
174
|
j += 1
|
203
|
-
# cerrar_popup
|
204
175
|
end
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
end
|
212
|
-
else
|
213
|
-
cluster.div(:class,'itineraries').div(:class,'sub-cluster multiple').ul(:class,'itineraries-group').lis(:class,'item itinerary cluster-item').each do |route|
|
214
|
-
json['result']['data']['items'][i]['itinerary']['routes'][j]['ancillaryTypes'].each do |amenity|
|
215
|
-
route.li(:class,'ancillaries').span(:class,"icon-ancillaries icon-ancillaries-#{amenity}").should visible
|
216
|
-
end
|
217
|
-
j += 1
|
176
|
+
else
|
177
|
+
cluster.div(:class,'itineraries').div(:class,'sub-cluster multiple').ul(:class,'itineraries-group cluster-items-list').lis(:class,'item itinerary cluster-item').each do |route|
|
178
|
+
puts "entra"
|
179
|
+
json['result']['data']['items'][i]['itinerary']['routes'][j]['ancillaryTypes'].each do |amenity|
|
180
|
+
puts "paso a"
|
181
|
+
route.li(:class,'ancillaries').span(:class,"icon-ancillaries icon-ancillaries-#{amenity}").should visible
|
218
182
|
end
|
183
|
+
j += 1
|
219
184
|
end
|
220
185
|
end
|
221
186
|
end
|
@@ -10,6 +10,7 @@ Característica: checkout.error_messages
|
|
10
10
|
Entonces Verifico que traiga resultados
|
11
11
|
Cuando Elijo un itinerario y paso a checkout
|
12
12
|
Cuando Verifico que ingrese al checkout
|
13
|
+
Y Verifico las nacionalidades de los pasajeros
|
13
14
|
Y Si pide factura fiscal, Verifico que se muestren los campos de factura
|
14
15
|
Y Si pide factura fiscal, Verifico texto de error de campos de factura vacio
|
15
16
|
Y Si pide factura fiscal, Verifico texto de error de campos de factura con datos erroneos
|
@@ -61,4 +62,19 @@ Característica: checkout.error_messages
|
|
61
62
|
@multipledestinations
|
62
63
|
Ejemplos:
|
63
64
|
|pais|tipo|cabotage|
|
64
|
-
|US |multipledestinations|nil|
|
65
|
+
|US |multipledestinations|nil|
|
66
|
+
@ve
|
67
|
+
@roundtrip
|
68
|
+
Ejemplos:
|
69
|
+
|pais|tipo|cabotage|
|
70
|
+
|VE |roundtrip|nil|
|
71
|
+
@ve
|
72
|
+
@oneway
|
73
|
+
Ejemplos:
|
74
|
+
|pais|tipo|cabotage|
|
75
|
+
|VE |oneway|nil|
|
76
|
+
@ve
|
77
|
+
@multipledestinations
|
78
|
+
Ejemplos:
|
79
|
+
|pais|tipo|cabotage|
|
80
|
+
|VE |multipledestinations|nil|
|
@@ -10,6 +10,7 @@ Característica: checkout.integration
|
|
10
10
|
Entonces Verifico que traiga resultados
|
11
11
|
Cuando Elijo un itinerario y paso a checkout
|
12
12
|
Cuando Verifico que ingrese al checkout
|
13
|
+
Y Verifico que se muestre el banner de cancelacion
|
13
14
|
Y Valido los valores del desglose del checkout
|
14
15
|
Y Verifico el pixel de Efrontier
|
15
16
|
Y Verifico el pixel de trackeame en checkout
|
@@ -53,3 +53,17 @@ Característica: checkout.low_cost
|
|
53
53
|
#|US|oneway|nil|VOL|CUN|LAS|
|
54
54
|
#|US|roundtrip|true|VOL|GDL|MEX|
|
55
55
|
#|US|oneway|nil|VOL|LAX|MEX|
|
56
|
+
@us
|
57
|
+
Ejemplos:
|
58
|
+
|pais|tipo|cabotage|prov|from|to|
|
59
|
+
|US|roundtrip|true|AIJ|MEX|GDL|
|
60
|
+
|US|oneway|true|AIJ|MEX|GDL|
|
61
|
+
|US|roundtrip|true|AIJ|MEX|CUN|
|
62
|
+
|US|oneway|true|AIJ|MEX|CUN|
|
63
|
+
@mx
|
64
|
+
Ejemplos:
|
65
|
+
|pais|tipo|cabotage|prov|from|to|
|
66
|
+
|MX|roundtrip|true|AIJ|MEX|GDL|
|
67
|
+
|MX|oneway|true|AIJ|MEX|GDL|
|
68
|
+
|MX|roundtrip|true|AIJ|MEX|CUN|
|
69
|
+
|MX|oneway|true|AIJ|MEX|CUN|
|
@@ -25,12 +25,6 @@ Característica: landing.positive
|
|
25
25
|
Y Verifico que traiga aeropuertos y concuerden con la ciudad buscada
|
26
26
|
Y Verifico que traiga fechas en formato correcto
|
27
27
|
Cuando Elijo un ticket e ingreso a la pagina de resultados
|
28
|
-
Cuando Verifico la pagina donde ingresa
|
29
|
-
Cuando Si ingreso resultados, Espero que termine de cargar
|
30
|
-
Entonces Si ingreso resultados, Verifico que sea la pagina de resultados correcta
|
31
|
-
Y Si ingreso resultados, Verifico que traiga resultados
|
32
|
-
Y Si ingreso resultados, Verifico que el valor elejido en landing se encuentre en la lista de resultados
|
33
|
-
Y Si ingreso checkout, Verifico que ingrese al checkout
|
34
28
|
|
35
29
|
|
36
30
|
@ar
|
@@ -12,6 +12,7 @@ Característica: search.basefare
|
|
12
12
|
Y Valido el sorting en "<pais>"
|
13
13
|
Y Elijo moneda local en "<pais>"
|
14
14
|
Y Filtro por un itinerario en la matriz en "<pais>"
|
15
|
+
Cuando Espero que termine de cargar
|
15
16
|
Entonces Valido la base tarifaria en "<pais>"
|
16
17
|
Y Valido el breakdown en "<pais>"
|
17
18
|
|
@@ -17,84 +17,60 @@ Característica: search.orders
|
|
17
17
|
@ar
|
18
18
|
Ejemplos:
|
19
19
|
|pais|tipo|order|
|
20
|
-
|AR |roundtrip|STOPSCOUNT_DESCENDING|
|
21
20
|
|AR |roundtrip|STOPSCOUNT_ASCENDING|
|
22
21
|
|AR |oneway|TOTALFARE_ASCENDING|
|
23
|
-
|AR |multipledestinations|TOTALFARE_DESCENDING|
|
24
22
|
@br
|
25
23
|
Ejemplos:
|
26
24
|
|pais|tipo|order|
|
27
|
-
|BR |roundtrip|STOPSCOUNT_DESCENDING|
|
28
25
|
|BR |roundtrip|STOPSCOUNT_ASCENDING|
|
29
26
|
|BR |oneway|TOTALFARE_ASCENDING|
|
30
|
-
|BR |oneway|TOTALFARE_DESCENDING|
|
31
27
|
@cl
|
32
28
|
Ejemplos:
|
33
29
|
|pais|tipo|order|
|
34
|
-
|CL |roundtrip|STOPSCOUNT_DESCENDING|
|
35
30
|
|CL |roundtrip|STOPSCOUNT_ASCENDING|
|
36
31
|
|CL |oneway|TOTALFARE_ASCENDING|
|
37
|
-
|CL |multipledestinations|TOTALFARE_DESCENDING|
|
38
32
|
@co
|
39
33
|
Ejemplos:
|
40
34
|
|pais|tipo|order|
|
41
|
-
|CO |roundtrip|STOPSCOUNT_DESCENDING|
|
42
35
|
|CO |roundtrip|STOPSCOUNT_ASCENDING|
|
43
36
|
|CO |oneway|TOTALFARE_ASCENDING|
|
44
|
-
|CO |multipledestinations|TOTALFARE_DESCENDING|
|
45
37
|
@cr
|
46
38
|
Ejemplos:
|
47
39
|
|pais|tipo|order|
|
48
|
-
|CR |roundtrip|STOPSCOUNT_DESCENDING|
|
49
40
|
|CR |roundtrip|STOPSCOUNT_ASCENDING|
|
50
41
|
|CR |oneway|TOTALFARE_ASCENDING|
|
51
|
-
|CR |multipledestinations|TOTALFARE_DESCENDING|
|
52
42
|
@pa
|
53
43
|
Ejemplos:
|
54
44
|
|pais|tipo|order|
|
55
|
-
|PA |roundtrip|STOPSCOUNT_DESCENDING|
|
56
45
|
|PA |roundtrip|STOPSCOUNT_ASCENDING|
|
57
46
|
|PA |oneway|TOTALFARE_ASCENDING|
|
58
|
-
|PA |multipledestinations|TOTALFARE_DESCENDING|
|
59
47
|
@ec
|
60
48
|
Ejemplos:
|
61
49
|
|pais|tipo|order|
|
62
|
-
|EC |roundtrip|STOPSCOUNT_DESCENDING|
|
63
50
|
|EC |roundtrip|STOPSCOUNT_ASCENDING|
|
64
51
|
|EC |oneway|TOTALFARE_ASCENDING|
|
65
|
-
|EC |multipledestinations|TOTALFARE_DESCENDING|
|
66
52
|
@mx
|
67
53
|
Ejemplos:
|
68
54
|
|pais|tipo|order|
|
69
|
-
|MX |roundtrip|STOPSCOUNT_DESCENDING|
|
70
55
|
|MX |roundtrip|STOPSCOUNT_ASCENDING|
|
71
56
|
|MX |oneway|TOTALFARE_ASCENDING|
|
72
|
-
|MX |multipledestinations|TOTALFARE_DESCENDING|
|
73
57
|
@pe
|
74
58
|
Ejemplos:
|
75
59
|
|pais|tipo|order|
|
76
|
-
|PE |roundtrip|STOPSCOUNT_DESCENDING|
|
77
60
|
|PE |roundtrip|STOPSCOUNT_ASCENDING|
|
78
61
|
|PE |oneway|TOTALFARE_ASCENDING|
|
79
|
-
|PE |multipledestinations|TOTALFARE_DESCENDING|
|
80
62
|
@uy
|
81
63
|
Ejemplos:
|
82
64
|
|pais|tipo|order|
|
83
|
-
|UY |roundtrip|STOPSCOUNT_DESCENDING|
|
84
65
|
|UY |roundtrip|STOPSCOUNT_ASCENDING|
|
85
66
|
|UY |oneway|TOTALFARE_ASCENDING|
|
86
|
-
|UY |multipledestinations|TOTALFARE_DESCENDING|
|
87
67
|
@us
|
88
68
|
Ejemplos:
|
89
69
|
|pais|tipo|order|
|
90
|
-
|US |roundtrip|STOPSCOUNT_DESCENDING|
|
91
70
|
|US |roundtrip|STOPSCOUNT_ASCENDING|
|
92
71
|
|US |oneway|TOTALFARE_ASCENDING|
|
93
|
-
|US |multipledestinations|TOTALFARE_DESCENDING|
|
94
72
|
@ve
|
95
73
|
Ejemplos:
|
96
74
|
|pais|tipo|order|
|
97
|
-
|VE |roundtrip|STOPSCOUNT_DESCENDING|
|
98
75
|
|VE |roundtrip|STOPSCOUNT_ASCENDING|
|
99
76
|
|VE |oneway|TOTALFARE_ASCENDING|
|
100
|
-
|VE |multipledestinations|TOTALFARE_DESCENDING|
|
@@ -9,6 +9,28 @@ Característica: search.searches
|
|
9
9
|
Entonces Verifico que la pagina no rompa
|
10
10
|
#Cuando Verifico el nuevo loader
|
11
11
|
Cuando Espero que termine de cargar
|
12
|
+
Entonces Verifico que traiga resultados
|
13
|
+
Cuando Espero que termine de cargar
|
14
|
+
Entonces Verifico que traiga resultados
|
15
|
+
Cuando Si el site es "AR|BR", Levanto los tag que deben mostrarse segun la ciudad buscada para una busqueda "<tipo>"
|
16
|
+
Entonces Si el site es "AR|BR", Verifico que se muestre en el codigo fuente
|
17
|
+
Y Verifico si se muestran los beneficios en resultados
|
18
|
+
Y Verifico el primer tag de google en resultado de fgui
|
19
|
+
Y Verifico el segundo tag de google en resultado de fgui
|
20
|
+
Y Verifico el tag de groovinads
|
21
|
+
Y Verifico el logger en resultado de fgui
|
22
|
+
Y Verifico el tag de canonical
|
23
|
+
Y Verifico el tag de remarketing de facebook
|
24
|
+
Y Verifico el tag de facebook
|
25
|
+
Y Verifico el pixel de e-planning
|
26
|
+
Y Verifico que no se muestre la leyenda de mejor precio garantizado en resultados
|
27
|
+
Cuando Genero el respond de la busqueda
|
28
|
+
Y Verifico que las datos de la pagina sean consistente a la busqueda realizada
|
29
|
+
Cuando Elijo un itinerario y paso a checkout
|
30
|
+
Cuando Verifico que ingrese al checkout
|
31
|
+
Entonces Verifico que la pagina no rompa
|
32
|
+
Y Verifico si se muestran los beneficios en checkout
|
33
|
+
Y Verifico que se muestren la caja de clientes felices
|
12
34
|
|
13
35
|
@ar
|
14
36
|
@roundtrip
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
gem.require_paths = ["lib"] #Usualmente es solo lib -> ["lib"]
|
17
17
|
|
18
|
-
gem.version = '2.0.
|
18
|
+
gem.version = '2.0.4' #La version se debe incrementar cada vez que se desea publicar una nueva version del test.
|
19
19
|
|
20
20
|
gem.add_dependency('henry-container', '>= 0.1.39')
|
21
21
|
gem.add_dependency('watir-webdriver')
|
data/henry-context.yml
CHANGED
@@ -13921,6 +13921,36 @@ tasks:
|
|
13921
13921
|
recipients:
|
13922
13922
|
- estebanldh@gmail.com
|
13923
13923
|
- nsimean@despegar.com
|
13924
|
+
- name: checkout.low_cost.us
|
13925
|
+
class_name: Henry::Task::CucumberTask
|
13926
|
+
options:
|
13927
|
+
tags:
|
13928
|
+
- checkout
|
13929
|
+
- low_cost
|
13930
|
+
- us
|
13931
|
+
expand: true
|
13932
|
+
no-source: true
|
13933
|
+
reports:
|
13934
|
+
- format: html
|
13935
|
+
name: ${DATE}_${TASK_NAME}.html
|
13936
|
+
recipients:
|
13937
|
+
- estebanldh@gmail.com
|
13938
|
+
- nsimean@despegar.com
|
13939
|
+
- name: checkout.low_cost.mx
|
13940
|
+
class_name: Henry::Task::CucumberTask
|
13941
|
+
options:
|
13942
|
+
tags:
|
13943
|
+
- checkout
|
13944
|
+
- low_cost
|
13945
|
+
- mx
|
13946
|
+
expand: true
|
13947
|
+
no-source: true
|
13948
|
+
reports:
|
13949
|
+
- format: html
|
13950
|
+
name: ${DATE}_${TASK_NAME}.html
|
13951
|
+
recipients:
|
13952
|
+
- estebanldh@gmail.com
|
13953
|
+
- nsimean@despegar.com
|
13924
13954
|
- name: checkout.error_messages
|
13925
13955
|
class_name: Henry::Task::CucumberTask
|
13926
13956
|
options:
|
@@ -14108,6 +14138,69 @@ tasks:
|
|
14108
14138
|
recipients:
|
14109
14139
|
- estebanldh@gmail.com
|
14110
14140
|
- nsimean@despegar.com
|
14141
|
+
- name: checkout.error_messages.ve
|
14142
|
+
class_name: Henry::Task::CucumberTask
|
14143
|
+
options:
|
14144
|
+
tags:
|
14145
|
+
- checkout
|
14146
|
+
- error_messages
|
14147
|
+
- ve
|
14148
|
+
expand: true
|
14149
|
+
no-source: true
|
14150
|
+
reports:
|
14151
|
+
- format: html
|
14152
|
+
name: ${DATE}_${TASK_NAME}.html
|
14153
|
+
recipients:
|
14154
|
+
- estebanldh@gmail.com
|
14155
|
+
- nsimean@despegar.com
|
14156
|
+
- name: checkout.error_messages.ve.roundtrip
|
14157
|
+
class_name: Henry::Task::CucumberTask
|
14158
|
+
options:
|
14159
|
+
tags:
|
14160
|
+
- checkout
|
14161
|
+
- error_messages
|
14162
|
+
- ve
|
14163
|
+
- roundtrip
|
14164
|
+
expand: true
|
14165
|
+
no-source: true
|
14166
|
+
reports:
|
14167
|
+
- format: html
|
14168
|
+
name: ${DATE}_${TASK_NAME}.html
|
14169
|
+
recipients:
|
14170
|
+
- estebanldh@gmail.com
|
14171
|
+
- nsimean@despegar.com
|
14172
|
+
- name: checkout.error_messages.ve.oneway
|
14173
|
+
class_name: Henry::Task::CucumberTask
|
14174
|
+
options:
|
14175
|
+
tags:
|
14176
|
+
- checkout
|
14177
|
+
- error_messages
|
14178
|
+
- ve
|
14179
|
+
- oneway
|
14180
|
+
expand: true
|
14181
|
+
no-source: true
|
14182
|
+
reports:
|
14183
|
+
- format: html
|
14184
|
+
name: ${DATE}_${TASK_NAME}.html
|
14185
|
+
recipients:
|
14186
|
+
- estebanldh@gmail.com
|
14187
|
+
- nsimean@despegar.com
|
14188
|
+
- name: checkout.error_messages.ve.multipledestinations
|
14189
|
+
class_name: Henry::Task::CucumberTask
|
14190
|
+
options:
|
14191
|
+
tags:
|
14192
|
+
- checkout
|
14193
|
+
- error_messages
|
14194
|
+
- ve
|
14195
|
+
- multipledestinations
|
14196
|
+
expand: true
|
14197
|
+
no-source: true
|
14198
|
+
reports:
|
14199
|
+
- format: html
|
14200
|
+
name: ${DATE}_${TASK_NAME}.html
|
14201
|
+
recipients:
|
14202
|
+
- estebanldh@gmail.com
|
14203
|
+
- nsimean@despegar.com
|
14111
14204
|
- name: checkout.integration
|
14112
14205
|
class_name: Henry::Task::CucumberTask
|
14113
14206
|
options:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flights_gui_henry_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lgonzalez,lsimean
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: henry-container
|