flights_gui_henry_tests 2.0.3 → 2.0.4
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.
- 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
|