flights_gui_tests 2.3.38 → 2.3.39
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 +4 -4
- data/features/step_definitions/checkout/cash_payment_steps.rb +1 -1
- data/features/step_definitions/landing/itineraries_steps.rb +4 -4
- data/features/step_definitions/landing/landing_steps.rb +2 -2
- data/features/step_definitions/landing/load_steps.rb +2 -0
- data/features/step_definitions/landing/negative_steps.rb +7 -7
- data/features/step_definitions/results/load_steps.rb +1 -0
- data/features/step_definitions/thanks/load_steps.rb +1 -1
- data/features/step_definitions/thanks/thanks_steps.rb +1 -0
- data/features/support/classes/landing/cluster.rb +72 -72
- data/features/support/pages/checkout/checkout_page.rb +1 -1
- data/features/support/pages/landing/search_page.rb +18 -12
- data/features/support/pages/results/search_page.rb +1 -0
- data/features/support/pages/thanks/thanks_page/new_thanks_page.rb +1 -0
- data/features/support/pages/thanks/thanks_page/old_thanks_page.rb +2 -2
- data/features/support/version.rb +1 -1
- data/features/tests/black_list/online_payment.feature +0 -1
- data/features/tests/landing/filters.feature +16 -13
- data/features/tests/landing/integration.feature +0 -1
- data/features/tests/landing/long_tail.feature +0 -1
- data/features/tests/landing/negative.feature +1 -1
- data/features/tests/landing/search.feature +0 -1
- data/features/tests/results/multipleoneway.feature +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cd67bc4d8f5f87089ea2d31a96e02e914e684135
|
|
4
|
+
data.tar.gz: b218729030d51c82c3692b45b67af965a2783273
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 150a43ba32803450cb933be93b3e64e06475e468b883fa35ab6d55cda6068f43e9690196cd51dd2f2c96718947bedb66ca780717a35cb7083a43d9b0d07baf53
|
|
7
|
+
data.tar.gz: df69891a302ab4ec4d62bedd8a5a3f28e8ce66c88d69fa75c45db2d9d8c611fa6dc4dbe9a8718725f3c9ef8c93b8bedfea30f83b72e0714339e5df71cfc47e66
|
|
@@ -32,7 +32,7 @@ Entonces(/^(?:verifico|valido) que vuelva al checkout correctamente$/) do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
Entonces(/^(?:verifico|valido) los pasos para hacer el pago online$/) do
|
|
35
|
-
@page.
|
|
35
|
+
@page.mensaje_alerta_cash_element.text.no_accents.should equal("Recuerde que el pago debera ser realizado antes de las 20hs, de lo contrario su reserva sera cancelada.")
|
|
36
36
|
@page.checkout_id_cash_element.should visible("numero de reserva")
|
|
37
37
|
@page.pasos_pago_online_elements.length.should equal(8)
|
|
38
38
|
@page.checkout_id_cash_element.text.should match(@id_reserva)
|
|
@@ -12,8 +12,8 @@ Y(/^comparo los datos de cluster contra los detalles$/) do
|
|
|
12
12
|
(item.tramos.first["fecha_origen"].strftime("%d%m")).should match(@page.datos_de_itinerarios[i].idas[j].fecha.strftime("%d%m"))
|
|
13
13
|
(item.tramos.first["hora_origen"].strftime("%d%m")).should match(@page.datos_de_itinerarios[i].idas[j].hou_sal_ida.strftime("%d%m"))
|
|
14
14
|
item.duracion.to_s.should match((@page.datos_de_itinerarios[i].idas[j].duracion).to_s)
|
|
15
|
-
item.tramos.
|
|
16
|
-
(item.tramos.
|
|
15
|
+
item.tramos.last["ciudad_destino"].should match(@page.datos_de_itinerarios[i].idas[j].destino.no_accents.strip)
|
|
16
|
+
(item.tramos.last["hora_destino"].strftime("%d%m")).should match(@page.datos_de_itinerarios[i].idas[j].hou_lle_ida.strftime("%d%m"))
|
|
17
17
|
end
|
|
18
18
|
detail["vueltas"].each_with_index do |item,j|
|
|
19
19
|
item.tramos.first["clase"].should be_true
|
|
@@ -22,8 +22,8 @@ Y(/^comparo los datos de cluster contra los detalles$/) do
|
|
|
22
22
|
(item.tramos.first["fecha_origen"].strftime("%d%m")).should match(@page.datos_de_itinerarios[i].vueltas[j].fecha.strftime("%d%m"))
|
|
23
23
|
(item.tramos.first["hora_origen"].strftime("%H%M")).should match(@page.datos_de_itinerarios[i].vueltas[j].hou_sal_ida.strftime("%H%M"))
|
|
24
24
|
item.duracion.to_s.should match((@page.datos_de_itinerarios[i].vueltas[j].duracion).to_s)
|
|
25
|
-
item.tramos.
|
|
26
|
-
(item.tramos.
|
|
25
|
+
item.tramos.last["ciudad_destino"].should match(@page.datos_de_itinerarios[i].vueltas[j].destino.no_accents.strip)
|
|
26
|
+
(item.tramos.last["hora_destino"].strftime("%d%m")).should match(@page.datos_de_itinerarios[i].vueltas[j].hou_lle_ida.strftime("%d%m"))
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
end
|
|
@@ -16,7 +16,7 @@ end
|
|
|
16
16
|
Y(/^(?:verifico|valido) que la ciudad destino sea la que se eligio$/) do
|
|
17
17
|
doc = Hpricot.parse(@page.html)
|
|
18
18
|
ciudades = (doc/"div.mainTitle/h1").inner_text.strip.no_accents
|
|
19
|
-
ciudad_destino = ciudades.match(/ (para|a|to) ([^,]+)/)[2].strip
|
|
19
|
+
ciudad_destino = ciudades.match(/ (para|a|to) ([^,]+) desde (.+)/)[2].strip
|
|
20
20
|
@page.ciudad_elegida.downcase.should equal(ciudad_destino.downcase) unless @page.ciudad_elegida.match(/Guarullos|Panama|Santiago|Mexico/)
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -92,7 +92,7 @@ end
|
|
|
92
92
|
|
|
93
93
|
Cuando(/^(?:verifico|valido) que el paginado no rompa en la ultima paginas de landing$/) do
|
|
94
94
|
doc = Hpricot.parse(@page.html)
|
|
95
|
-
unless (doc/"div.flights-pagination li.page a").length==1
|
|
95
|
+
unless (doc/"div.flights-pagination li.page a").length==1 or @page.paginas_elements[-1].nil?
|
|
96
96
|
url_with_filter = @page.url
|
|
97
97
|
iterator = @page.paginas_elements[-1].text
|
|
98
98
|
@page.paginas_elements[-1].links[0].click
|
|
@@ -39,6 +39,8 @@ Y(/^(?:verifico|valido) la pagina donde ingresa$/) do
|
|
|
39
39
|
@page_results = Results::SearchPage.new($browser)
|
|
40
40
|
@page_checkout = Checkout::NewCheckoutPage.new($browser)
|
|
41
41
|
puts " URL: #{@page.url}"
|
|
42
|
+
@page.elegir_idioma
|
|
43
|
+
@page.cargar_valores_abtesting
|
|
42
44
|
Watir::Wait.until(timeout = 300){@page_results.carga_element.present? or @page_results.itinerario_element.present? or @page_checkout.pasajeros_element.present? or @page_checkout.notificacion_warning_element.present?}
|
|
43
45
|
if @page_checkout.pasajeros_element.present? or @page_checkout.notificacion_warning_element.present?
|
|
44
46
|
@page = @page_checkout
|
|
@@ -50,19 +50,19 @@ end
|
|
|
50
50
|
|
|
51
51
|
Entonces(/^(?:verifico|valido) que si la url no tiene el seoPath, se redirige a la pagina que si lo tiene$/) do
|
|
52
52
|
@page.ir(@path_landing[1])
|
|
53
|
-
sleep(
|
|
53
|
+
sleep(1)
|
|
54
54
|
@page.url.strip.should equal(@path_landing.to_s.gsub(/\?(.+)/,'').strip)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
Entonces(/^(?:verifico|valido) que si el seoPath esta mal escrito, se redirige a la pagina con el seoPath correcto$/) do
|
|
58
58
|
@page.ir(@path_landing[1]+"qwerty")
|
|
59
|
-
sleep(
|
|
59
|
+
sleep(1)
|
|
60
60
|
@page.url.strip.should equal(@path_landing.to_s.strip.to_s.gsub(/\?(.+)/,'').strip)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
Entonces(/^(?:verifico|valido) que si se pone un codigo de aeropuerto en vez de uno de cuidad, se redirige a la ciudad del aeropuerto$/) do
|
|
64
64
|
@page.ir(@path_landing[1].gsub(/\/...\/...\//,"/ccs/eze/"))
|
|
65
|
-
sleep(
|
|
65
|
+
sleep(1)
|
|
66
66
|
if AllPages.lang=="pt"
|
|
67
67
|
@page.url.strip.should equal(@path_landing[1].to_s.gsub(/\/...\/...\//,"/ccs/bue/")+@path_landing[2]+"-buenos+aires-saindo-de-caracas")
|
|
68
68
|
elsif AllPages.lang=="en"
|
|
@@ -74,27 +74,27 @@ end
|
|
|
74
74
|
|
|
75
75
|
Entonces(/^(?:verifico|valido) que si se pone algun caracter en mayuscula, se redirige a todo minuscula$/) do
|
|
76
76
|
@page.ir(@path_landing[1] + @path_landing[2].upcase + @path_landing[3])
|
|
77
|
-
sleep(
|
|
77
|
+
sleep(1)
|
|
78
78
|
@page.url.strip.should equal(@path_landing.to_s.strip)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
Entonces(/^(?:verifico|valido) que si la url tiene parametros, se deben conservar en la redireccion$/) do
|
|
82
82
|
@page.ir(@path_landing[1] + "qwerty?param=value")
|
|
83
|
-
sleep(
|
|
83
|
+
sleep(1)
|
|
84
84
|
@page.url.strip.should equal("#{@path_landing.to_s.strip.to_s.gsub(/\?(.+)/,'').strip}?param=value")
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
Entonces(/^(?:verifico|valido) que la url para sem funcione correctamente con un ciudad con resultados sin seoPath$/) do
|
|
88
88
|
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas|flights)\/(...)\/(...)\//)
|
|
89
89
|
@page.ir("#{match[1]}#{match[2]}/handler/#{match[3]}/#{match[4]}")
|
|
90
|
-
sleep(
|
|
90
|
+
sleep(1)
|
|
91
91
|
@page.url.strip.should equal(@path_landing.to_s.strip.gsub(/\?(.+)/,''))
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
Entonces(/^(?:verifico|valido) que la url para sem funcione correctamente con un ciudad sin resultados sin seoPath$/) do
|
|
95
95
|
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas|flights)\/(...)\/(...)\//)
|
|
96
96
|
@page.ir("#{match[1]}#{match[2]}/handler/#{match[3]}/KLP")
|
|
97
|
-
sleep(
|
|
97
|
+
sleep(1)
|
|
98
98
|
@page.url.strip.should equal("#{match[1]}#{match[2].to_s.gsub(/\?(.+)/,'').strip}/")
|
|
99
99
|
end
|
|
100
100
|
|
|
@@ -54,6 +54,7 @@ Cuando(/^espero que (?:termine|finalize|acabe) de cargar la pagina de resultados
|
|
|
54
54
|
@page.carga_element.when_not_visible(timeout=200)
|
|
55
55
|
@page.actualizar_filtro_element.when_not_visible(timeout=120)
|
|
56
56
|
@page.barra_progreso_element.when_not_visible(timeout=200)
|
|
57
|
+
@page.loader_element.when_not_visible(timeout=100)
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
Cuando(/^espero que (?:termine|finalize|acabe) de cargar la pagina de streaming de resultados$/) do
|
|
@@ -3,7 +3,7 @@ Cuando(/^espero que termine de cargar la pagina de gracias$/) do
|
|
|
3
3
|
if @page.new_thanks?
|
|
4
4
|
@page = Thanks::NewThanksPage.new($browser)
|
|
5
5
|
else
|
|
6
|
-
@page = Thanks::
|
|
6
|
+
@page = Thanks::NewThanksPage.new($browser)
|
|
7
7
|
end
|
|
8
8
|
Watir::Wait.until(timeout=120){@page.checkout_id_element.present? or @page.checkout_id_cash_element.present?}
|
|
9
9
|
end
|
|
@@ -26,6 +26,7 @@ Entonces(/^(?:verifico|valido) el link de mi despegar$/) do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
Y(/^(?:verifico|valido) los valores del desglose en gracias contra los del checkout/) do
|
|
29
|
+
@itinerario_gracias = @page.datos_itinerario
|
|
29
30
|
unless @cambio_precio
|
|
30
31
|
@itinerario_gracias.validar_suma_desgloce.should be_within(4).of(@itinerario_gracias.tarifas['total'].value)
|
|
31
32
|
unless @itinerario_gracias.tarifas['adt'].nil? or @itinerario_gracias.tarifas['adt'].valor.zero? or @itinerario_gracias.tarifas['tarifa_adulto'].nil?
|
|
@@ -1,85 +1,85 @@
|
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
|
2
|
-
class LandingCluster < Results::
|
|
2
|
+
class LandingCluster < Results::NewCluster
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def load_data_from(div_datos)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
def load_data_to(div_datos)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
end
|
|
5
|
+
# def load_data_from(div_datos)
|
|
6
|
+
# @idas = Array.new
|
|
7
|
+
# (div_datos/"li.itinerary").each do |div_datos_ida|
|
|
8
|
+
# duracion = (div_datos_ida/"li.time").inner_text.strip
|
|
9
|
+
# origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
|
|
10
|
+
# destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
|
|
11
|
+
# origen_iata = (div_datos/"a")[0].inner_text.strip
|
|
12
|
+
# destino_iata = (div_datos/"a")[1].inner_text.strip
|
|
13
|
+
# fecha = (div_datos_ida/"li.date").first.inner_text.strip.no_accents
|
|
14
|
+
# escala = (div_datos_ida/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_ida/"li.stops/a").inner_text.to_i
|
|
15
|
+
# aerolinea = Array.new
|
|
16
|
+
# i = 0
|
|
17
|
+
# (div_datos_ida/"li.airlinesShort//img").each do |aer|
|
|
18
|
+
# aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
|
19
|
+
# i = i + 1
|
|
20
|
+
# end
|
|
21
|
+
# (div_datos_ida/"li.airlines//img").each do |aer|
|
|
22
|
+
# aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
|
23
|
+
# i = i + 1
|
|
24
|
+
# end
|
|
25
|
+
# hou_sal_ida = Time.parse((div_datos_ida/"li.leave span.hour").inner_text.strip)
|
|
26
|
+
# hou_lle_ida = Time.parse((div_datos_ida/"li.arrive span.hour").inner_text.strip)
|
|
27
|
+
# @idas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
|
|
28
|
+
# end
|
|
29
|
+
# @nro_vuelo_ida = 0
|
|
30
|
+
# @ida = @idas[@nro_vuelo_ida]
|
|
31
|
+
# end
|
|
32
|
+
# def load_data_to(div_datos)
|
|
33
|
+
# @vueltas = Array.new
|
|
34
|
+
# (div_datos/"li.itinerary").each do |div_datos_vuelta|
|
|
35
|
+
# duracion = (div_datos_vuelta/"li.time").inner_text.strip
|
|
36
|
+
# origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
|
|
37
|
+
# destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
|
|
38
|
+
# origen_iata = (div_datos/"a")[0].inner_text.strip
|
|
39
|
+
# destino_iata = (div_datos/"a")[1].inner_text.strip
|
|
40
|
+
# fecha = (div_datos_vuelta/"li.date").last.inner_text.strip.no_accents
|
|
41
|
+
# escala = (div_datos_vuelta/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_vuelta/"li.stops/a").inner_text.to_i
|
|
42
|
+
# aerolinea = Array.new
|
|
43
|
+
# i = 0
|
|
44
|
+
# (div_datos_vuelta/"li.airlinesShort//img").each do |aer|
|
|
45
|
+
# aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
|
46
|
+
# i = i + 1
|
|
47
|
+
# end
|
|
48
|
+
# (div_datos_vuelta/"li.airlines//img").each do |aer|
|
|
49
|
+
# aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
|
50
|
+
# i = i + 1
|
|
51
|
+
# end
|
|
52
|
+
# hou_sal_ida = Time.parse((div_datos_vuelta/"li.leave span.hour").inner_text.strip)
|
|
53
|
+
# hou_lle_ida = Time.parse((div_datos_vuelta/"li.arrive span.hour").inner_text.strip)
|
|
54
|
+
# @vueltas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
|
|
55
|
+
# end
|
|
56
|
+
# @nro_vuelo_vuelta = 0
|
|
57
|
+
# @vuelta = @vueltas[@nro_vuelo_vuelta]
|
|
58
|
+
# end
|
|
59
59
|
|
|
60
|
-
def load_prices(p_html)
|
|
60
|
+
# def load_prices(p_html)
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
# @tarifas = Hash.new
|
|
63
|
+
# @tarifas['tarifa_adulto'] = Price.new((p_html/"span.price-currency span.currency").first.inner_text.strip + " " + (p_html/"span.price-currency span.amount").first.inner_text.strip)
|
|
64
|
+
# @tarifas['tarifa_adulto_dolar'] = Price.new((p_html/"span.price-currency span.currency").last.inner_text.strip + " " + (p_html/"span.price-currency span.amount").last.inner_text.strip)
|
|
65
|
+
# @tarifas['adt'] = (p_html/"ul.fare-detail//li").empty? ? Price.new("$ 0",true) : Price.new(((p_html/"ul.fare-detail//li").select{|li| li.inner_text.no_accents.downcase =~ /adulto/}.first/"span[@class='price-currency ARS']").inner_text.strip)
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
# adt = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /adulto/}.first
|
|
68
|
+
# @tarifas['adt'] = adt ? Price.new((adt/"span.currency").first.inner_text.strip + " " + (adt/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
# tasas = (p_html/"li.taxes-price").empty? ? (p_html/"li[@class='taxDetail.OTHER-price']").first : (p_html/"li.taxes-price").first
|
|
71
|
+
# @tarifas['tasas'] = tasas ? Price.new((tasas/"span.currency").first.inner_text.strip + " " + (tasas/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
# cargos = (p_html/"li.charges-price").first
|
|
74
|
+
# @tarifas['cargos'] = cargos ? Price.new((cargos/"span.currency").first.inner_text.strip + " " + (cargos/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
# afip = (p_html/"li[@class='taxDetail.ZK-price']").first
|
|
77
|
+
# @tarifas['afip'] = afip ? Price.new((afip/"span.currency").first.inner_text.strip + " " + (afip/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
# @tarifas['encargos'] = Price.new("$ 0",true)
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
end
|
|
81
|
+
# campo = (p_html/"li").empty? ? "total" : "fare"
|
|
82
|
+
# @tarifas['total'] = (p_html/"li.#{campo}-price span.currency").empty? ? Price.new("$ 0",true) : Price.new((p_html/"li.#{campo}-price span.currency").first.inner_text.strip + " " + (p_html/"li.#{campo}-price span.amount").first.inner_text.strip)
|
|
83
|
+
# end
|
|
84
84
|
|
|
85
85
|
end
|
|
@@ -7,7 +7,7 @@ module Checkout
|
|
|
7
7
|
|
|
8
8
|
element(:pasajeros,:fieldset,:id=>"passengers")
|
|
9
9
|
element(:checkout_id,:em,:class=>"checkout-id")
|
|
10
|
-
element(:checkout_id_cash,:span,:class=>"
|
|
10
|
+
element(:checkout_id_cash,:span,:class=>"number")
|
|
11
11
|
|
|
12
12
|
link(:comprar,:id=>"submit")
|
|
13
13
|
link(:cupon_validar,:id=>"validate-voucher")
|
|
@@ -14,6 +14,7 @@ module Landing
|
|
|
14
14
|
elements(:filtros_salidas,:checkbox,:css=>".ux-flights-filter-departures input")
|
|
15
15
|
elements(:paginas,:li,:css=>".flights-pagination .page")
|
|
16
16
|
elements(:detalle_precio_itinerario, :li, :css=>"#clusters .cluster .fare-detail li")
|
|
17
|
+
elements(:new_popup_detail,:div,:class=>'inline-detail')
|
|
17
18
|
|
|
18
19
|
element(:precio_itinerario, :span, :css=>".cluster .fare .price-currency")
|
|
19
20
|
element(:precio_itinerario_mx, :span, :css=>".cluster .total-price-only .price-currency")
|
|
@@ -40,12 +41,12 @@ module Landing
|
|
|
40
41
|
radio_button(:vuelo_roundtrip,:id=>"roundtrip")
|
|
41
42
|
|
|
42
43
|
select_list(:orden,:id=>"orderby")
|
|
43
|
-
select_list(:adultos,:css=>"#
|
|
44
|
-
select_list(:menores,:css=>"#
|
|
45
|
-
select_list(:edad,:css=>"#
|
|
44
|
+
select_list(:adultos,:css=>"#search-popup .adults-select")
|
|
45
|
+
select_list(:menores,:css=>"#search-popup .childs-select")
|
|
46
|
+
select_list(:edad,:css=>"#search-popup .select-age")
|
|
46
47
|
select_list(:moneda,:id=>"currency")
|
|
47
48
|
|
|
48
|
-
link(:buscar_popup,:css=>"#
|
|
49
|
+
link(:buscar_popup,:css=>"#search-popup .search-button")
|
|
49
50
|
|
|
50
51
|
li(:pagina_previa,:class=>"pagination-button prev")
|
|
51
52
|
li(:pagina_siguiente,:class=>"pagination-button next")
|
|
@@ -77,7 +78,7 @@ module Landing
|
|
|
77
78
|
opciones_vuelta_elements[index].click if tipo_de_busqueda=="roundtrip"
|
|
78
79
|
boton_comprar = itinerarios_elements[index].links(:class,/buy/).select{|boton| boton.present?}
|
|
79
80
|
boton_comprar.first.click
|
|
80
|
-
|
|
81
|
+
adultos_element.when_visible(timeout=10)
|
|
81
82
|
adultos_element.select(2)
|
|
82
83
|
menores_element.select(1)
|
|
83
84
|
edad_element.select_value(4)
|
|
@@ -96,24 +97,29 @@ module Landing
|
|
|
96
97
|
def cargar_detalles_itinerarios()
|
|
97
98
|
clusters = Array.new
|
|
98
99
|
doc = Hpricot.parse(lista_itinerarios_element.html)
|
|
100
|
+
k = 0
|
|
99
101
|
(doc/"div.cluster").each_with_index do |cluster,i|
|
|
100
102
|
_cluster = {"idas"=>Array.new,"vueltas"=>Array.new}
|
|
101
103
|
(cluster/"div.outbound li.cluster-item").each_with_index do |item,j|
|
|
102
104
|
itinerarios_elements[i].div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').click if itinerarios_elements[i].div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').present?
|
|
103
|
-
itinerarios_elements[i].div(:class,
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
itinerarios_elements[i].div(:class,'sub-cluster outbound').lis(:class,'detail')[j].links[0].span(:class,'text').click
|
|
106
|
+
new_popup_detail_elements[k].when_visible(timeout=20)
|
|
107
|
+
_cluster["idas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[k].html))
|
|
108
|
+
itinerarios_elements[i].div(:class,'sub-cluster outbound').li(:class,'detail').span(:class,'itinerary-detail-hide').click
|
|
106
109
|
sleep(0.25)
|
|
110
|
+
k = k + 1
|
|
107
111
|
end
|
|
108
112
|
(cluster/"div.inbound li.cluster-item").each_with_index do |item,j|
|
|
109
113
|
itinerarios_elements[i].div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').click if itinerarios_elements[i].div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').present?
|
|
110
|
-
itinerarios_elements[i].div(:class,
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
itinerarios_elements[i].div(:class,'sub-cluster inbound').lis(:class,'detail')[j].links[0].span(:class,'text').click
|
|
115
|
+
new_popup_detail_elements[k].when_visible(timeout=20)
|
|
116
|
+
_cluster["vueltas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[k].html))
|
|
117
|
+
itinerarios_elements[i].div(:class,'sub-cluster inbound').li(:class,'detail').span(:class,'itinerary-detail-hide').click
|
|
113
118
|
sleep(0.25)
|
|
119
|
+
k = k + 1
|
|
114
120
|
end
|
|
115
121
|
clusters << _cluster
|
|
116
|
-
break if i >
|
|
122
|
+
break if i > 1
|
|
117
123
|
end
|
|
118
124
|
return clusters
|
|
119
125
|
end
|
|
@@ -25,6 +25,7 @@ module Results
|
|
|
25
25
|
link(:link_mejor_precio,:id=>"best-price")
|
|
26
26
|
|
|
27
27
|
span(:header_mejor_precio,:class=>"nibbler-common-header-bestprice-inside ")
|
|
28
|
+
span(:loader,:class=>"loader-content")
|
|
28
29
|
|
|
29
30
|
li(:pagina_previa,:class=>"pagination-button prev")
|
|
30
31
|
li(:pagina_siguiente,:class=>"pagination-button next")
|
|
@@ -17,6 +17,7 @@ module Thanks
|
|
|
17
17
|
div(:link_mi_despegar,:id=>"self-service")
|
|
18
18
|
div(:mensaje_alerta,:class=>"ux-common-message ux-common-message-warning ")
|
|
19
19
|
div(:datos_deposito,:class=>"thanks-reservation-info")
|
|
20
|
+
p(:mensaje_alerta_cash,:class=>"delay")
|
|
20
21
|
|
|
21
22
|
elements(:pasos_pago_online,:div,:class=>"thanks-reservation-homebanking-step")
|
|
22
23
|
elements(:links_mas_detalles_gracias,:link,:css=>"#popup-booking-details .stops .number")
|
|
@@ -7,7 +7,7 @@ module Thanks
|
|
|
7
7
|
include PageObject
|
|
8
8
|
|
|
9
9
|
element(:checkout_id,:em,:class=>"checkout-id")
|
|
10
|
-
element(:checkout_id_cash,:span,:class=>"
|
|
10
|
+
element(:checkout_id_cash,:span,:class=>"number")
|
|
11
11
|
|
|
12
12
|
div(:popup_desglose_gracias,:id=>"popup-booking-details")
|
|
13
13
|
div(:popup_asistencia_al_viajero,:id=>"insurance-recommendation-popup")
|
|
@@ -15,7 +15,7 @@ module Thanks
|
|
|
15
15
|
div(:cerrar_popup_asistencia_al_viajero,:css=>"#insurance-recommendation-popup .message-close")
|
|
16
16
|
div(:popup_desglose_detalles_gracias,:class=>"flights-popup popup-detail")
|
|
17
17
|
div(:link_mi_despegar,:class=>"ux-shared-checkout-thanks-ticket-cont")
|
|
18
|
-
|
|
18
|
+
p(:mensaje_alerta,:class=>"delay")
|
|
19
19
|
div(:datos_deposito,:class=>"thanks-reservation-info")
|
|
20
20
|
|
|
21
21
|
elements(:pasos_pago_online,:div,:class=>"thanks-reservation-homebanking-step")
|
data/features/support/version.rb
CHANGED
|
@@ -34,7 +34,6 @@ Característica: checkout.online_payment
|
|
|
34
34
|
Entonces espero que termine de cargar la pagina de gracias
|
|
35
35
|
Y verifico que ingrese a la pagina de gracias para pago cash
|
|
36
36
|
Y verifico el popup de asistencia al viajero
|
|
37
|
-
Y verifico los datos del vuelo comprado
|
|
38
37
|
Y verifico los valores del desglose en gracias contra los del checkout
|
|
39
38
|
Y verifico los pasos para hacer el pago online
|
|
40
39
|
Y verifico el tag de datalayer
|
|
@@ -9,7 +9,6 @@ Característica: landing.filters
|
|
|
9
9
|
* ingreso una pagina de landing del tipo '<tipo>'
|
|
10
10
|
Cuando realizo la busqueda
|
|
11
11
|
Entonces verifico que la pagina no rompa
|
|
12
|
-
Entonces si el site es "AR|CO|VE", ingreso y espero que cargue la vieja pagina de landing
|
|
13
12
|
Y verifico que traiga resultados de landing
|
|
14
13
|
Cuando elijo el tipo de vuelo "<tipo>"
|
|
15
14
|
Entonces verifico que la pagina no rompa
|
|
@@ -17,37 +16,41 @@ Característica: landing.filters
|
|
|
17
16
|
Y verifico que la url sea la correcta
|
|
18
17
|
Entonces elijo moneda local como precio de filtrado
|
|
19
18
|
Cuando verifico que se muestren los filtros de estadia
|
|
20
|
-
Cuando
|
|
19
|
+
Cuando abro los filtros de aerolineas
|
|
20
|
+
Cuando elijo una aerolinea a aplicar - filtros nuevo -
|
|
21
21
|
Entonces filtro por aerolinea
|
|
22
22
|
Cuando espero que termine de cargar la pagina de landing
|
|
23
23
|
Entonces verifico que la pagina no rompa
|
|
24
24
|
Y verifico que la primer pagina muestre correctamente los filtros de aerolineas
|
|
25
|
-
Cuando
|
|
25
|
+
Cuando abro los filtros de aerolineas
|
|
26
|
+
Cuando limpio el filtro de aerolineas - filtros nuevo -
|
|
26
27
|
Cuando espero que termine de cargar la pagina de landing
|
|
27
28
|
Entonces verifico que la pagina no rompa
|
|
28
|
-
Cuando
|
|
29
|
+
Cuando abro los filtros de aeropuertos
|
|
30
|
+
Cuando elijo un aeropuerto de origen a aplicar - filtros nuevo -
|
|
29
31
|
Entonces filtro por aeropuerto
|
|
30
32
|
Cuando espero que termine de cargar la pagina de landing
|
|
31
33
|
Entonces verifico que la pagina no rompa
|
|
32
34
|
Y verifico que la primer pagina muestre correctamente los filtros de aeropuertos outbound
|
|
33
|
-
Cuando
|
|
35
|
+
Cuando abro los filtros de aeropuertos
|
|
36
|
+
Cuando limpio el filtro de aeropuertos de origen - filtros nuevo -
|
|
34
37
|
Cuando espero que termine de cargar la pagina de landing
|
|
35
|
-
Cuando
|
|
38
|
+
Cuando abro los filtros de escalas
|
|
39
|
+
Cuando elijo una escala a aplicar - filtros nuevo -
|
|
36
40
|
Entonces filtro por escala
|
|
37
41
|
Cuando espero que termine de cargar la pagina de landing
|
|
38
42
|
Entonces verifico que la pagina no rompa
|
|
39
43
|
Y verifico que la primer pagina muestre correctamente los filtros de escalas
|
|
40
|
-
Cuando
|
|
44
|
+
Cuando abro los filtros de escalas
|
|
45
|
+
Cuando limpio el filtro de escalas - filtros nuevo -
|
|
41
46
|
Cuando espero que termine de cargar la pagina de landing
|
|
42
|
-
Cuando
|
|
43
|
-
|
|
47
|
+
Cuando abro los filtros de horarios
|
|
48
|
+
Cuando elijo un horario a aplicar - filtros nuevo -
|
|
49
|
+
Entonces filtro por horario de ida - filtros nuevo -
|
|
44
50
|
Cuando espero que termine de cargar la pagina de landing
|
|
45
51
|
Y verifico que traiga resultados de landing
|
|
46
52
|
Entonces verifico que la pagina no rompa
|
|
47
|
-
Y
|
|
48
|
-
Cuando limpio el filtro de horario outbound
|
|
49
|
-
Cuando espero que termine de cargar la pagina de landing
|
|
50
|
-
Entonces verifico que la pagina no rompa
|
|
53
|
+
Y valido que la primer pagina muestre correctamente los filtros de horario de ida - filtros nuevo -
|
|
51
54
|
|
|
52
55
|
@ar
|
|
53
56
|
@roundtrip
|
|
@@ -9,7 +9,6 @@ Característica: landing.integration
|
|
|
9
9
|
* ingreso una pagina de landing del tipo '<tipo>'
|
|
10
10
|
Cuando realizo la busqueda
|
|
11
11
|
Entonces verifico que la pagina no rompa
|
|
12
|
-
Entonces si el site es "AR|CO|VE", ingreso y espero que cargue la vieja pagina de landing
|
|
13
12
|
Y verifico que traiga resultados de landing
|
|
14
13
|
Cuando elijo el tipo de vuelo "<tipo>"
|
|
15
14
|
Entonces verifico que la pagina no rompa
|
|
@@ -9,7 +9,6 @@ Característica: landing.long_tail
|
|
|
9
9
|
* ingreso una pagina de landing del tipo '<tipo>'
|
|
10
10
|
Cuando realizo la busqueda
|
|
11
11
|
Entonces verifico que la pagina no rompa
|
|
12
|
-
Entonces si el site es "AR|CO|VE", ingreso y espero que cargue la vieja pagina de landing
|
|
13
12
|
Y verifico que traiga resultados de landing
|
|
14
13
|
Cuando elijo el tipo de vuelo "<tipo>"
|
|
15
14
|
Entonces verifico que la pagina no rompa
|
|
@@ -24,12 +24,12 @@ Característica: landing.negative
|
|
|
24
24
|
Y verifico que si la fecha de ida ingresada es posterior a la fecha de vuelta de error
|
|
25
25
|
Y verifico que si la url no tiene el seoPath, se redirige a la pagina que si lo tiene
|
|
26
26
|
Y verifico que si el seoPath esta mal escrito, se redirige a la pagina con el seoPath correcto
|
|
27
|
-
Y verifico que si se pone un codigo de aeropuerto en vez de uno de cuidad, se redirige a la ciudad del aeropuerto
|
|
28
27
|
Y verifico que si se pone algun caracter en mayuscula, se redirige a todo minuscula
|
|
29
28
|
Y verifico que si la url tiene parametros, se deben conservar en la redireccion
|
|
30
29
|
Y verifico que la url para sem funcione correctamente con un ciudad con resultados sin seoPath
|
|
31
30
|
Y verifico que la url para sem funcione correctamente con un ciudad sin resultados sin seoPath
|
|
32
31
|
Y verifico que la url de landing para el destino "lrl" no rompa
|
|
32
|
+
Y verifico que si se pone un codigo de aeropuerto en vez de uno de cuidad, se redirige a la ciudad del aeropuerto
|
|
33
33
|
|
|
34
34
|
@pt
|
|
35
35
|
@roundtrip
|
|
@@ -9,7 +9,6 @@ Característica: landing.search
|
|
|
9
9
|
* ingreso una pagina de landing del tipo '<tipo>'
|
|
10
10
|
Cuando realizo la busqueda
|
|
11
11
|
Entonces verifico que la pagina no rompa
|
|
12
|
-
Entonces si el site es "AR|CO|VE", ingreso y espero que cargue la vieja pagina de landing
|
|
13
12
|
Y verifico que traiga resultados de landing
|
|
14
13
|
Cuando elijo el tipo de vuelo "<tipo>"
|
|
15
14
|
Entonces verifico que la pagina no rompa
|
|
@@ -28,7 +28,6 @@ Característica: results.multipleoneway
|
|
|
28
28
|
Y espero que termine de cargar la pagina de checkout
|
|
29
29
|
Y verifico que ingrese al checkout
|
|
30
30
|
Entonces si existe la opcion de cobertura, elijo "no_chequear" si quiero cobertura
|
|
31
|
-
#Y si el site es "MX", valido que no se muestre la leyenda de tarifas en pesos
|
|
32
31
|
Y valido los valores del desglose del checkout con multipleoneway
|
|
33
32
|
Y verifico el pixel de Efrontier
|
|
34
33
|
Y verifico el pixel de trackeame en checkout
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: flights_gui_tests
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.3.
|
|
4
|
+
version: 2.3.39
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- lgonzalez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-10-
|
|
11
|
+
date: 2015-10-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: henry-container
|