flights_gui_tests 2.4.40 → 2.4.41
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/3d_secure_steps.rb +21 -0
- data/features/step_definitions/page_steps.rb +9 -1
- data/features/step_definitions/results/basefare_steps.rb +5 -1
- data/features/step_definitions/results/filters_steps.rb +1 -1
- data/features/support/env.rb +1 -1
- data/features/support/modules/checkout/checkout.rb +1 -0
- data/features/support/modules/checkout/new_checkout/3dsecure.rb +9 -0
- data/features/support/modules/checkout/new_checkout/informacion_de_contacto.rb +11 -0
- data/features/support/modules/checkout/new_checkout/tarjeta.rb +19 -0
- data/features/support/modules/pages/cookies.rb +0 -1
- data/features/support/pages/checkout/checkout_page/new_checkout_page.rb +1 -0
- data/features/support/pages/landing/search_page.rb +18 -21
- data/features/support/version.rb +1 -1
- data/features/tests/checkout/book_3d_secure.feature +46 -0
- data/features/tests/checkout/book_ok_ticketed.feature +2 -2
- data/features/tests/landing/tags.feature +4 -0
- data/flights_gui_tests.gemspec +0 -1
- data/henry-context.yml +4483 -4586
- metadata +6 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ecb341538b4bcd8501c7bf6f4a6c325e3aa14d7
|
4
|
+
data.tar.gz: 1a3ae498e09a2d23b5d47204ee51259aeb5f9379
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5de5f02f4a0cba51d3cd2a85b0df0a22e964a5b8219a1c2fa00147ad7aa05cc0b137c6596fd8bc1bd136ea0e600cdb88b1d5867b05c25350feab38e6a09d735d
|
7
|
+
data.tar.gz: 11533d221740090a24032bc13c506c919ade8dd308e106d0868017d53597f95f26b588f032f0f469e8e9a40bd59828a0c26ed19da910a8f814f2f821b58e928d
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
Entonces(/^cargo los datos de la tarjeta para 3d secure$/) do
|
3
|
+
@page.cargar_datos_tarjeta_nuevo_formulario_3d_secure
|
4
|
+
end
|
5
|
+
|
6
|
+
Entonces(/^cargo los datos de contacto para forzar risk reject$/) do
|
7
|
+
@page.cargar_datos_de_contacto_reject
|
8
|
+
end
|
9
|
+
|
10
|
+
Cuando(/^muestra el popup de 3d secure$/) do
|
11
|
+
@page.risk_reject_modal_element.when_visible(:timeout=>20)
|
12
|
+
end
|
13
|
+
|
14
|
+
Entonces(/^elijo la opcion de verificar tarjeta$/) do
|
15
|
+
pending # Write code here that turns the phrase above into concrete actions
|
16
|
+
end
|
17
|
+
|
18
|
+
Entonces(/^ingreso los datos y verifico la tarjeta$/) do
|
19
|
+
pending # Write code here that turns the phrase above into concrete actions
|
20
|
+
end
|
21
|
+
|
@@ -17,7 +17,7 @@ Entonces(/^seteo el proveedor "(.*)"$/) do |provider|
|
|
17
17
|
@page.refresh
|
18
18
|
end
|
19
19
|
|
20
|
-
Entonces(/^seteo el header "(.*)" con el valor "(.*)"$/) do |header,value|
|
20
|
+
Entonces(/^seteo el header "(.*)" con el valor "(.*)" en checkout$/) do |header,value|
|
21
21
|
@page.execute_script("javascript:void(document.cookie='#{header}=#{value};path=/');")
|
22
22
|
@page.manage_data.set_header_json({header=>value})
|
23
23
|
@page.refresh
|
@@ -25,6 +25,14 @@ Entonces(/^seteo el header "(.*)" con el valor "(.*)"$/) do |header,value|
|
|
25
25
|
step "verifico que ingrese al checkout"
|
26
26
|
end
|
27
27
|
|
28
|
+
Entonces(/^seteo el header "(.*)" con el valor "(.*)" en resultados$/) do |header,value|
|
29
|
+
@page.execute_script("javascript:void(document.cookie='#{header}=#{value};path=/');")
|
30
|
+
@page.manage_data.set_header_json({header=>value})
|
31
|
+
@page.refresh
|
32
|
+
step "espero que termine de cargar la pagina de resultados"
|
33
|
+
step "verifico que traiga resultados"
|
34
|
+
end
|
35
|
+
|
28
36
|
Entonces(/^es ida y vuelta$/) do
|
29
37
|
@page.manage_data.description.should equal("roundtrip")
|
30
38
|
end
|
@@ -60,7 +60,11 @@ Entonces(/^(?:verifico|valido) la base tarifaria$/) do
|
|
60
60
|
if @basefare == 'tot'
|
61
61
|
price_cluster['tot'] = (doc/"div.clusters li.fare-price span.item-price span.price-currency").first.inner_text.strip
|
62
62
|
else
|
63
|
-
|
63
|
+
if (doc/"div.fare-detail-base span.price-currency").length == 2
|
64
|
+
price_cluster['adt'] = (doc/"div.fare-detail-base span.price-currency").last.inner_text.strip
|
65
|
+
else
|
66
|
+
price_cluster['adt'] = (doc/"div.fare-detail-base span.price-currency").first.inner_text.strip
|
67
|
+
end
|
64
68
|
end
|
65
69
|
if price_cluster[@basefare]
|
66
70
|
puts "#{price_cluster[@basefare].gsub(/\n/, '')} != #{price_matrix.gsub(/\n/, '')}"
|
@@ -83,7 +83,7 @@ end
|
|
83
83
|
Entonces(/^(?:verifico|valido) que la primer pagina muestre correctamente los filtros de aeropuertos (outbound|inbound)$/) do |_class|
|
84
84
|
doc = Hpricot.parse(@page.html)
|
85
85
|
index = _class=="outbound" ? 0 : 1
|
86
|
-
@airport.checkbox.value.to_s.strip.should equal((doc/"div#clusters div.cluster
|
86
|
+
@airport.checkbox.value.to_s.strip.should equal((doc/"div#clusters div.cluster .sub-cluster span.airport a")[index].inner_text.strip)
|
87
87
|
end
|
88
88
|
|
89
89
|
Cuando(/^limpio el filtro de aeropuertos de salida$/) do
|
data/features/support/env.rb
CHANGED
@@ -26,5 +26,16 @@ module NewCheckout
|
|
26
26
|
numero_contacto_element.set "123456"
|
27
27
|
end
|
28
28
|
|
29
|
+
def cargar_datos_de_contacto_reject
|
30
|
+
uncheck_opcion_ofertas
|
31
|
+
mail_contacto_element.set "testchas@despegar.com" if mail_contacto_element.enabled?
|
32
|
+
mail_contacto_confimacion_element.set "testchas@despegar.com"
|
33
|
+
telefono_contacto_element.select_value("HOME")
|
34
|
+
pais_contacto_element.set "Argentina (54)"
|
35
|
+
sleep 0.5
|
36
|
+
area_contacto_element.set "055"
|
37
|
+
numero_contacto_element.set "123456"
|
38
|
+
end
|
39
|
+
|
29
40
|
end
|
30
41
|
end
|
@@ -154,6 +154,25 @@ module NewCheckout
|
|
154
154
|
sexo_titular_tarjeta_element.select_value "MALE" if sexo_titular_tarjeta_element.present?
|
155
155
|
self.cargar_datos_extras_de_tarjeta
|
156
156
|
end
|
157
|
+
|
158
|
+
def cargar_datos_tarjeta_nuevo_formulario_3d_secure
|
159
|
+
@provider = self.provider
|
160
|
+
un_pago_visa_element.click
|
161
|
+
sleep(1)
|
162
|
+
cuotas_element.select_value("1_CREDIT_VI_null")
|
163
|
+
numero_tarjeta_element.set "4000000000000002"
|
164
|
+
mes_vencimiento_tarjeta_element.select 12
|
165
|
+
ano_vencimiento_tarjeta_element.select(Date.today.year+4)
|
166
|
+
codigo_seguridad_tarjeta_element.set "123"
|
167
|
+
banco_emisor_element.set "galicia" if banco_emisor_element.present?
|
168
|
+
tipo_titular_tarjeta_value = "PERSON" if tipo_titular_tarjeta_element.present?
|
169
|
+
nombre_titular_tarjeta_element.set "Martin qa diez"
|
170
|
+
if documento_titular_tarjeta_element.present?
|
171
|
+
documento_titular_tarjeta_element.set "22233366638"
|
172
|
+
end
|
173
|
+
sexo_titular_tarjeta_element.select_value "MALE" if sexo_titular_tarjeta_element.present?
|
174
|
+
self.cargar_datos_extras_de_tarjeta
|
175
|
+
end
|
157
176
|
|
158
177
|
def cargar_datos_tarjeta_guardada
|
159
178
|
@browser.execute_script("javascript:void($('#stored-cards .display-cards').click())") if mostrar_cartas_guardadas_element.text.no_accents.downcase.match("mas|mais|more")
|
@@ -3,7 +3,6 @@ module Pages
|
|
3
3
|
module Cookies
|
4
4
|
#modifico el valor del abtesting requerido
|
5
5
|
def modificar_abtesting(nombre,valor)
|
6
|
-
byebug
|
7
6
|
cookie = self.recuperar_cookie("abzTestingId")
|
8
7
|
nuevo_valor = cookie[:value].gsub(/#{self.recuperar_valor_abtesting(nombre)}/,valor.to_s)
|
9
8
|
self.eliminar_cookie("abzTestingId")
|
@@ -11,6 +11,7 @@ module Checkout
|
|
11
11
|
include NewCheckout::DatosDeFacturacion
|
12
12
|
include NewCheckout::InformacionDeContacto
|
13
13
|
include NewCheckout::Multipleoneway
|
14
|
+
include NewCheckout::Secure3D
|
14
15
|
|
15
16
|
div(:seccion_preguntas_riesgo,:css=>"#form .radio-group")
|
16
17
|
div(:opcion_no_deposito,:css=>"#confirm-payment-popup .flights-button-no")
|
@@ -111,33 +111,30 @@ module Landing
|
|
111
111
|
clusters = Array.new
|
112
112
|
doc = Hpricot.parse(lista_itinerarios_element.html)
|
113
113
|
k = 0
|
114
|
-
(doc/"div.cluster").each_with_index do |
|
115
|
-
cluster = $HENRY_PARAMS['angular'] ? itinerarios_elements[i].div(:class,'itineraries').spans(:class,'sub-cluster') : itinerarios_elements[i].div(:class,'itineraries').divs(:class,'sub-cluster')
|
114
|
+
(doc/"div.cluster").each_with_index do |cluster,i|
|
116
115
|
_cluster = {"idas"=>Array.new,"vueltas"=>Array.new}
|
117
|
-
(
|
118
|
-
|
119
|
-
|
116
|
+
(cluster/"div.outbound li.cluster-item").each_with_index do |item,j|
|
117
|
+
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?
|
118
|
+
itinerarios_elements[i].div(:class,'sub-cluster outbound').lis(:class,'detail')[j].links[0].span(:class,'text').click
|
120
119
|
sleep(0.5)
|
121
|
-
new_popup_detail_elements[
|
122
|
-
_cluster["idas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[
|
123
|
-
|
120
|
+
new_popup_detail_elements[k].when_visible(timeout=20)
|
121
|
+
_cluster["idas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[k].html))
|
122
|
+
itinerarios_elements[i].div(:class,'sub-cluster outbound').lis(:class,'detail')[j].span(:class,'itinerary-detail-hide').click
|
123
|
+
sleep(0.5)
|
124
|
+
k = k + 1
|
125
|
+
break if k > 1
|
126
|
+
end
|
127
|
+
(cluster/"div.inbound li.cluster-item").each_with_index do |item,j|
|
128
|
+
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?
|
129
|
+
itinerarios_elements[i].div(:class,'sub-cluster inbound').lis(:class,'detail')[j].links[0].span(:class,'text').click
|
130
|
+
sleep(0.5)
|
131
|
+
new_popup_detail_elements[k].when_visible(timeout=20)
|
132
|
+
_cluster["vueltas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[k].html))
|
133
|
+
itinerarios_elements[i].div(:class,'sub-cluster inbound').lis(:class,'detail')[j].span(:class,'itinerary-detail-hide').click
|
124
134
|
sleep(0.5)
|
125
135
|
k = k + 1
|
126
136
|
break if k > 1
|
127
137
|
end
|
128
|
-
if (cluster_html/"div.sub-cluster")[1]
|
129
|
-
((cluster_html/"div.sub-cluster")[1]/"li.cluster-item").each_with_index do |item,j|
|
130
|
-
cluster[1].span(:class,'showMoreItineraries').click if cluster[1].span(:class,'showMoreItineraries').present?
|
131
|
-
cluster[1].lis(:class,'detail')[j].links[0].span(:class,'text').click
|
132
|
-
sleep(0.5)
|
133
|
-
new_popup_detail_elements[0].when_visible(timeout=20)
|
134
|
-
_cluster["vueltas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[0].html))
|
135
|
-
cluster[1].lis(:class,'detail')[j].span(:class,'itinerary-detail-hide').click
|
136
|
-
sleep(0.5)
|
137
|
-
k = k + 1
|
138
|
-
break if k > 1
|
139
|
-
end
|
140
|
-
end
|
141
138
|
clusters << _cluster
|
142
139
|
break if i > 1
|
143
140
|
end
|
data/features/support/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
#language: es
|
2
|
+
@checkout
|
3
|
+
Característica: checkout.book_3d_secure
|
4
|
+
Se verifica la correcta carga y funcionamiento de la pagina de checkout, se cargan los datos correctos y se realiza la compra con un bin para mostrar el popup de 3d secure.
|
5
|
+
|
6
|
+
@book_3d_secure
|
7
|
+
Esquema del escenario: Se verifica que se pueda realizar una compra correctamente, validando que los valores a travez del flujo sean correctos y se mantengan a travez del mismo mostrando el popup de 3d secure, realizar la compra correcta.
|
8
|
+
Dado como un usuario de '<pais>'
|
9
|
+
* ingreso una busqueda '<tipo>' del tipo '<cabotage>'
|
10
|
+
Cuando realizo la busqueda
|
11
|
+
Entonces verifico que la pagina no rompa
|
12
|
+
Cuando espero que termine de cargar la pagina de resultados
|
13
|
+
Entonces verifico que traiga resultados
|
14
|
+
Entonces seteo el header "XDESP-CHAS_MOCK-RISK-CORE" con el valor "REJECT" en resultados
|
15
|
+
Cuando elijo un itinerario valido y paso a checkout
|
16
|
+
Entonces verifico que la pagina no rompa
|
17
|
+
Y espero que termine de cargar la pagina de checkout
|
18
|
+
Y verifico que ingrese al checkout
|
19
|
+
Entonces si existe la opcion de cobertura, elijo "no_chequear" si quiero cobertura
|
20
|
+
Entonces cargo los pasajeros
|
21
|
+
Y cargo los datos de la tarjeta para 3d secure
|
22
|
+
Y cargo los datos de facturacion
|
23
|
+
Y cargo los datos de contacto para forzar risk reject
|
24
|
+
Cuando acepto y compro
|
25
|
+
Entonces espero que termine el pedido de compra
|
26
|
+
Entonces si aparece el popup de no disponibilidad, elijo un itinerario del popup de no disponibilidad
|
27
|
+
Cuando muestra el popup de 3d secure
|
28
|
+
Entonces elijo la opcion de verificar tarjeta
|
29
|
+
Y ingreso los datos y verifico la tarjeta
|
30
|
+
Entonces espero que termine de cargar la pagina de gracias
|
31
|
+
Y verifico que ingrese a la pagina de gracias
|
32
|
+
Y verifico el link de mi despegar
|
33
|
+
Y verifico el popup de asistencia al viajero
|
34
|
+
Y verifico los datos del vuelo comprado
|
35
|
+
Y verifico los valores del desglose en gracias contra los del checkout
|
36
|
+
Y verifico el tag de datalayer
|
37
|
+
Y verifico el pixel de Efrontier
|
38
|
+
Y verifico el pixel de doubleclick
|
39
|
+
Y verifico el pixel de trackeame en gracias
|
40
|
+
Y cancelo la reserva en el proveedor
|
41
|
+
|
42
|
+
@br
|
43
|
+
@roundtrip
|
44
|
+
Ejemplos:
|
45
|
+
|pais|tipo|cabotage|
|
46
|
+
|BR |roundtrip|nil|
|
@@ -17,7 +17,7 @@ Característica: checkout.book_ok_ticketed
|
|
17
17
|
Y espero que termine de cargar la pagina de checkout
|
18
18
|
Y verifico que ingrese al checkout
|
19
19
|
Y valido los valores del desglose del checkout
|
20
|
-
Entonces seteo el header "XDESP-FLIGHTS_KEEPER-MOCK-CHAS" con el valor "TICKETED"
|
20
|
+
Entonces seteo el header "XDESP-FLIGHTS_KEEPER-MOCK-CHAS" con el valor "TICKETED" en checkout
|
21
21
|
Entonces si existe la opcion de cobertura, elijo "no_chequear" si quiero cobertura
|
22
22
|
Entonces cargo los pasajeros
|
23
23
|
Y cargo los datos de la tarjeta
|
@@ -99,7 +99,7 @@ Característica: checkout.book_ok_ticketed
|
|
99
99
|
Y espero que termine de cargar la pagina de checkout
|
100
100
|
Y verifico que ingrese al checkout
|
101
101
|
Y valido los valores del desglose del checkout
|
102
|
-
Entonces seteo el header "XDESP-FLIGHTS_KEEPER-MOCK-CHAS" con el valor "TICKETED"
|
102
|
+
Entonces seteo el header "XDESP-FLIGHTS_KEEPER-MOCK-CHAS" con el valor "TICKETED" en checkout
|
103
103
|
Entonces cargo los pasajeros
|
104
104
|
Y cargo los datos de la tarjeta en el nuevo formulario
|
105
105
|
Y si pide datos de facturacion, cargo los datos de facturacion
|
@@ -15,6 +15,10 @@ Característica: landing.tags
|
|
15
15
|
Entonces verifico que traiga resultados de landing
|
16
16
|
Y verifico que la url sea la correcta
|
17
17
|
Y verifico el primer tag de google en resultado
|
18
|
+
Y verifico el segundo tag de google en resultado de landing
|
19
|
+
Y verifico el tag de groovinads
|
20
|
+
Cuando si el site es "AR|BR", levanto los tag que deben mostrarse segun la ciudad buscada para landing
|
21
|
+
Entonces si el site es "AR|BR", verifico que se muestre en el codigo fuente
|
18
22
|
|
19
23
|
@ar
|
20
24
|
@roundtrip
|
data/flights_gui_tests.gemspec
CHANGED
@@ -28,7 +28,6 @@ Gem::Specification.new do |gem|
|
|
28
28
|
gem.add_dependency('sixarm_ruby_unaccent')
|
29
29
|
gem.add_dependency('sanitize')
|
30
30
|
gem.add_dependency('mock_search', '>= 1.0.0')
|
31
|
-
gem.add_dependency('rake','~> 10.5.0')
|
32
31
|
gem.add_dependency('mysql2')
|
33
32
|
gem.add_dependency('dater')
|
34
33
|
gem.add_dependency('henry_process_cleaner')
|