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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7917a4a1ada3cb0b0566254f5b532ba1cddc65cd
4
- data.tar.gz: 85f1401e70958eb738b54e64e4a88735cf96ae59
3
+ metadata.gz: 5ecb341538b4bcd8501c7bf6f4a6c325e3aa14d7
4
+ data.tar.gz: 1a3ae498e09a2d23b5d47204ee51259aeb5f9379
5
5
  SHA512:
6
- metadata.gz: 13d1469eb5896ef4c5566d68512328dccc6b5fa1378ae4f8bc0a9956839cf711a458162763a17804d91d4a2638b24bddf2ce2983111ccecd7d906493992f886b
7
- data.tar.gz: 8947b315c2b36afd426a983e47fc67af8d37336faa6c43b2d083af2eabaeff82dfffa7869c49183fafa5921738e62556c65339df9f5b116be0399ba2a4ebab1c
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
- price_cluster['adt'] = (doc/"div.fare-detail-base span.price-currency").first.inner_text.strip
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 span.sub-cluster span.airport a")[index].inner_text.strip)
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
@@ -98,7 +98,7 @@ rescue Net::ReadTimeout, Selenium::WebDriver::Error::WebDriverError, ChildProces
98
98
  sleep 5
99
99
  if reintentos > 0
100
100
  puts 'Error Net::ReadTimeout - Reintentando abrir el browser...'
101
- retry
101
+ retry
102
102
  else
103
103
  @@error_navegador = true
104
104
  end
@@ -8,3 +8,4 @@ require_relative 'new_checkout/fast_checkout'
8
8
  require_relative 'new_checkout/datos_de_facturacion'
9
9
  require_relative 'new_checkout/informacion_de_contacto'
10
10
  require_relative 'new_checkout/multipleoneway'
11
+ require_relative 'new_checkout/3dsecure'
@@ -0,0 +1,9 @@
1
+ #encoding: utf-8
2
+ module NewCheckout
3
+ module Secure3D
4
+ include PageObject
5
+
6
+ div(:risk_reject_modal,:id=>"risk-rejected-modal")
7
+
8
+ end
9
+ end
@@ -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 |cluster_html,i|
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
- ((cluster_html/"div.sub-cluster")[0]/"li.cluster-item").each_with_index do |item,j|
118
- cluster[0].span(:class,'showMoreItineraries').click if cluster[0].span(:class,'showMoreItineraries').present?
119
- cluster[0].lis(:class,'detail')[j].links[0].span(:class,'text').click
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[0].when_visible(timeout=20)
122
- _cluster["idas"] << NewDetailsCluster.new(Hpricot.parse(new_popup_detail_elements[0].html))
123
- cluster[0].lis(:class,'detail')[j].span(:class,'itinerary-detail-hide').click
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
@@ -1,3 +1,3 @@
1
1
  module FlightsGui
2
- VERSION = "2.4.40"
2
+ VERSION = "2.4.41"
3
3
  end
@@ -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
@@ -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')