flights_gui_tests 1.0.3 → 1.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 +4 -4
- data/features/step_definitions/results/matrix_steps.rb +1 -1
- data/features/step_definitions/results/results_steps.rb +2 -2
- data/features/step_definitions/results/wish_list_steps.rb +1 -1
- data/features/step_definitions/thanks/thanks_steps.rb +1 -1
- data/features/support/classes/checkout/{cluster.rb → old_cluster.rb} +1 -1
- data/features/support/classes/checkout/render_cluster.rb +1 -1
- data/features/support/classes/clusters.rb +3 -3
- data/features/support/classes/landing/cluster.rb +1 -1
- data/features/support/classes/results/old_cluster.rb +172 -0
- data/features/support/classes/results/{details_cluster.rb → old_details_cluster.rb} +1 -1
- data/features/support/env.rb +0 -1
- data/features/support/modules/browser.rb +4 -4
- data/features/support/modules/results/filters.rb +94 -30
- data/features/support/modules/results/itineraries/details.rb +1 -1
- data/features/support/modules/results/itineraries/miles.rb +0 -1
- data/features/support/pages/checkout/checkout_page/old_checkout_page.rb +1 -1
- data/features/support/pages/landing/search_page.rb +2 -2
- data/features/support/pages/results/search_page.rb +10 -10
- data/features/support/pages/thanks/thanks_page.rb +1 -1
- data/features/tests/results/filters.feature +73 -49
- data/flights_gui_tests.gemspec +1 -1
- data/henry-context.yml +6 -35
- metadata +5 -7
- data/features/support/classes/results/cluster.rb +0 -170
- data/features/support/modules/results/new_filters.rb +0 -117
- data/features/tests/results/new_filters.feature +0 -119
@@ -43,7 +43,7 @@ module Results
|
|
43
43
|
route.li(:class,'stops').a(:class,'text').click
|
44
44
|
popup_detail_element.when_visible(timeout=20)
|
45
45
|
doc = Hpricot.parse(popup_detail_element.html)
|
46
|
-
detail =
|
46
|
+
detail = OldDetailsCluster.new(doc)
|
47
47
|
detail.duracion.should match(/#{cluster.duracion}/)
|
48
48
|
detail.tramos.first['ciudad_origen'].should match(cluster.origen)
|
49
49
|
detail.tramos.last['ciudad_destino'].should match(cluster.destino)
|
@@ -43,7 +43,6 @@ module Results
|
|
43
43
|
|
44
44
|
if popup_pasajero_frecuente_element.present?
|
45
45
|
doc = Hpricot.parse(popup_pasajero_frecuente_element.html)
|
46
|
-
byebug
|
47
46
|
(doc/"div.popup-content").inner_text.gsub(/\n\n/," ").gsub(/\n/,"").downcase.no_accents.strip.should match(text.downcase + data[airline][0].downcase.strip)
|
48
47
|
popup_pasajero_frecuente_element.span(:class,'popup-close-button popup-close').click
|
49
48
|
popup_pasajero_frecuente_element.when_not_visible(timeout=20)
|
@@ -52,7 +52,7 @@ module Checkout
|
|
52
52
|
p(:id_reserva_compra_duplicada,:css=>"#popup-duplicated-transaction .paragraph")
|
53
53
|
|
54
54
|
def datos_itinerario()
|
55
|
-
return
|
55
|
+
return OldCheckout::Cluster.new(tipo_de_busqueda,Hpricot.parse(itinerario_element.html))
|
56
56
|
end
|
57
57
|
|
58
58
|
def opcion_seguros(opcion)
|
@@ -103,14 +103,14 @@ module Landing
|
|
103
103
|
(cluster/"div.outbound li.cluster-item").each_with_index do |item,j|
|
104
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?
|
105
105
|
itinerarios_elements[i].div(:class,"sub-cluster outbound").li(:class=>'item itinerary cluster-item',:index=>j).li(:class,'stops').link(:class,'text').click
|
106
|
-
_cluster["idas"] <<
|
106
|
+
_cluster["idas"] << OldDetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
|
107
107
|
popup_detalles_element.span(:class,'popup-close-button popup-close').click
|
108
108
|
sleep(0.25)
|
109
109
|
end
|
110
110
|
(cluster/"div.inbound li.cluster-item").each_with_index do |item,j|
|
111
111
|
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?
|
112
112
|
itinerarios_elements[i].div(:class,"sub-cluster inbound").li(:class=>'item itinerary cluster-item',:index=>j).li(:class,'stops').link(:class,'text').click
|
113
|
-
_cluster["vueltas"] <<
|
113
|
+
_cluster["vueltas"] << OldDetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
|
114
114
|
popup_detalles_element.span(:class,'popup-close-button popup-close').click
|
115
115
|
sleep(0.25)
|
116
116
|
end
|
@@ -10,7 +10,6 @@ module Results
|
|
10
10
|
include Results::Itineraries
|
11
11
|
include Results::SearchParams
|
12
12
|
include Results::Filters
|
13
|
-
include Results::NewFilters
|
14
13
|
include Results::Recommendation
|
15
14
|
include Results::WishList
|
16
15
|
|
@@ -21,11 +20,6 @@ module Results
|
|
21
20
|
div(:actualizar_informacion,:class=>"update-message")
|
22
21
|
div(:actualizar_filtro,:id=>"update-message-overlay")
|
23
22
|
div(:nuevo_cluster,:css=>".inline-detail-clusters-style")
|
24
|
-
div(:mensaje_cancelacion,:id=>"cancellation-advice-popup-content")
|
25
|
-
div(:cerrar_mensaje_cancelacion,:css=>"#cancellation-advice-popup-content .flights-message-close")
|
26
|
-
|
27
|
-
div(:popup_destino_hot,:id=>"hot-destination-advice-popup")
|
28
|
-
div(:cerrar_popup_destino_hot,:css=>"#hot-destination-advice-popup .flights-message-close")
|
29
23
|
|
30
24
|
link(:link_mejor_precio,:id=>"best-price")
|
31
25
|
|
@@ -50,13 +44,19 @@ module Results
|
|
50
44
|
select_list(:orden,:id=>"orderby")
|
51
45
|
select_list(:moneda,:id=>"currency")
|
52
46
|
|
47
|
+
#popups
|
48
|
+
div(:mensaje_cancelacion,:id=>"cancellation-advice-popup-content")
|
49
|
+
div(:cerrar_mensaje_cancelacion,:css=>"#cancellation-advice-popup-content .flights-message-close")
|
50
|
+
div(:popup_destino_hot,:id=>"hot-destination-advice-popup")
|
51
|
+
div(:cerrar_popup_destino_hot,:css=>"#hot-destination-advice-popup .flights-message-close")
|
52
|
+
div(:popup_destino_hot_LOW,:id=>"hot-destination-advice-popup-content-LOW-HOT_DESTINATION_AVAILABILITY")
|
53
|
+
div(:cerrar_popup_destino_hot_LOW,:css=>"#hot-destination-advice-popup-content-LOW-HOT_DESTINATION_AVAILABILITY .flights-message-close")
|
53
54
|
span(:cerrar_popup_alerta,:css=>"#create-alert-popup .popup-close-button")
|
54
55
|
span(:cerrar_popup_cantidad_visitantes,:css=>"#searches-count-alert-popup .popup-close-button")
|
55
|
-
|
56
|
-
div(:boton_alertas,:id=>"nibbler-subscriptions")
|
57
|
-
|
56
|
+
div(:boton_alertas,:id=>"flights-alerts")
|
58
57
|
div(:popup_alertas,:id=>"nibbler-subscriptions")
|
59
58
|
span(:cerrar_popup_alertas,:css=>"#nibbler-subscriptions .nibbler-common-overlay-close")
|
59
|
+
#fin popups
|
60
60
|
|
61
61
|
def cargar_url(tipo,ambiente,cabotaje="nil",params={})
|
62
62
|
super(tipo,ambiente,cabotaje,params)
|
@@ -98,7 +98,7 @@ module Results
|
|
98
98
|
if @nuevo_cluster
|
99
99
|
return Results::NewCluster.new(tipo_de_busqueda,Hpricot.parse(itinerario.html))
|
100
100
|
else
|
101
|
-
return
|
101
|
+
return Results::OldCluster.new(tipo_de_busqueda,Hpricot.parse(itinerario.html))
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -32,7 +32,7 @@ module Thanks
|
|
32
32
|
link(:ver_desglose_gracias,:class=>"ux-shared-checkout-thanks-more")
|
33
33
|
|
34
34
|
def datos_itinerario()
|
35
|
-
return
|
35
|
+
return OldCheckout::Cluster.new(tipo_de_busqueda,Hpricot.parse(popup_desglose_gracias_element.html))
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -11,80 +11,111 @@ Característica: results.filters
|
|
11
11
|
Entonces verifico que la pagina no rompa
|
12
12
|
Cuando espero que termine de cargar la pagina de resultados
|
13
13
|
Entonces verifico que traiga resultados
|
14
|
-
Cuando si el site es "CO|BR", defino cluster a utilizar
|
15
|
-
Cuando si el site es "MX", fuerzo el abztesting de "filters" al "88"
|
16
14
|
Cuando si el site es "MX", fuerzo el abztesting de "breakdown" al "88"
|
17
|
-
Y
|
18
|
-
Y
|
19
|
-
Cuando si el site es "CO|MX|BR", verifico que la pagina no rompa
|
20
|
-
Cuando si el site es "CO|MX|BR", espero que termine de cargar la pagina de resultados
|
21
|
-
Entonces si el site es "CO|MX|BR", verifico que traiga resultados
|
22
|
-
Cuando verifico que el cambio de moneda no muestre limpiar filtros
|
23
|
-
Entonces elijo moneda local
|
24
|
-
Cuando si el site es "PE", elijo moneda local como precio de filtrado
|
25
|
-
Cuando espero que termine de cargar la pagina de resultados
|
26
|
-
Entonces verifico que la pagina no rompa
|
27
|
-
Y cierro popups
|
28
|
-
Cuando Recupero los precios limites de la lista
|
29
|
-
Entonces filtro por precio mayor
|
30
|
-
Cuando espero que termine de cargar la pagina de resultados
|
15
|
+
Y ingreso una busqueda '<tipo>' del tipo '<cabotage>'
|
16
|
+
Y realizo la busqueda
|
31
17
|
Entonces verifico que la pagina no rompa
|
32
|
-
Y verifico que la primer pagina muestre correctamente los filtros de precio
|
33
|
-
Entonces filtro por precio menor
|
34
18
|
Cuando espero que termine de cargar la pagina de resultados
|
35
|
-
Entonces verifico que
|
36
|
-
|
37
|
-
Cuando limpio el filtro de precio
|
19
|
+
Entonces verifico que traiga resultados
|
20
|
+
Entonces elijo moneda local
|
38
21
|
Cuando espero que termine de cargar la pagina de resultados
|
39
22
|
Entonces verifico que la pagina no rompa
|
40
|
-
Cuando
|
23
|
+
Cuando abro los filtros de aerolineas
|
24
|
+
Cuando elijo una aerolinea a aplicar - filtros nuevo -
|
41
25
|
Entonces filtro por aerolinea
|
42
26
|
Cuando espero que termine de cargar la pagina de resultados
|
43
27
|
Entonces verifico que la pagina no rompa
|
28
|
+
Entonces verifico que traiga resultados
|
44
29
|
Y verifico que la primer pagina muestre correctamente los filtros de aerolineas
|
45
|
-
Cuando limpio el filtro de aerolineas
|
30
|
+
Cuando limpio el filtro de aerolineas - filtros nuevo -
|
46
31
|
Cuando espero que termine de cargar la pagina de resultados
|
47
|
-
|
48
|
-
Cuando elijo un aeropuerto
|
49
|
-
Entonces filtro por aeropuerto
|
32
|
+
Cuando abro los filtros de aeropuertos
|
33
|
+
Cuando elijo un aeropuerto de origen a aplicar - filtros nuevo -
|
34
|
+
Entonces filtro por aeropuerto
|
50
35
|
Cuando espero que termine de cargar la pagina de resultados
|
51
36
|
Entonces verifico que la pagina no rompa
|
37
|
+
Entonces verifico que traiga resultados
|
52
38
|
Y verifico que la primer pagina muestre correctamente los filtros de aeropuertos outbound
|
53
|
-
Cuando limpio el filtro de aeropuertos de
|
39
|
+
Cuando limpio el filtro de aeropuertos de origen - filtros nuevo -
|
54
40
|
Cuando espero que termine de cargar la pagina de resultados
|
55
41
|
Entonces verifico que la pagina no rompa
|
56
|
-
Cuando elijo
|
57
|
-
Entonces filtro por
|
42
|
+
Cuando si es ida y vuelta, elijo un aeropuerto de destino a aplicar - filtros nuevo -
|
43
|
+
Entonces si es ida y vuelta, filtro por aeropuerto
|
44
|
+
Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
|
45
|
+
Entonces si es ida y vuelta, verifico que la pagina no rompa
|
46
|
+
Entonces si es ida y vuelta, verifico que traiga resultados
|
47
|
+
Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de aeropuertos inbound
|
48
|
+
Cuando si es ida y vuelta, limpio el filtro de aeropuertos de destino - filtros nuevo -
|
49
|
+
Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
|
50
|
+
Entonces si es ida y vuelta, verifico que la pagina no rompa
|
51
|
+
Cuando abro los filtros de escalas
|
52
|
+
Cuando elijo una escala a aplicar - filtros nuevo -
|
53
|
+
Entonces filtro por escala
|
58
54
|
Cuando espero que termine de cargar la pagina de resultados
|
59
55
|
Entonces verifico que la pagina no rompa
|
56
|
+
Entonces verifico que traiga resultados
|
60
57
|
Y verifico que la primer pagina muestre correctamente los filtros de escalas
|
61
|
-
Cuando limpio el filtro de escalas
|
58
|
+
Cuando limpio el filtro de escalas - filtros nuevo -
|
62
59
|
Cuando espero que termine de cargar la pagina de resultados
|
63
|
-
|
64
|
-
|
60
|
+
Entonces verifico que la pagina no rompa
|
61
|
+
Cuando abro los filtros de horarios
|
62
|
+
Cuando elijo un horario a aplicar - filtros nuevo -
|
63
|
+
Entonces filtro por horario de ida - filtros nuevo -
|
65
64
|
Cuando espero que termine de cargar la pagina de resultados
|
66
65
|
Entonces verifico que la pagina no rompa
|
67
|
-
|
68
|
-
Y
|
66
|
+
Entonces verifico que traiga resultados
|
67
|
+
Y valido que la primer pagina muestre correctamente los filtros de horario de ida - filtros nuevo -
|
68
|
+
Cuando limpio el filtro de horario de ida - filtros nuevo -
|
69
69
|
Cuando espero que termine de cargar la pagina de resultados
|
70
70
|
Entonces verifico que la pagina no rompa
|
71
|
-
Cuando elijo
|
72
|
-
Entonces filtro por
|
71
|
+
Cuando si es ida y vuelta, elijo un horario a aplicar - filtros nuevo -
|
72
|
+
Entonces si es ida y vuelta, filtro por horario de vuelta - filtros nuevo -
|
73
|
+
Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
|
74
|
+
Entonces si es ida y vuelta, verifico que la pagina no rompa
|
75
|
+
Entonces verifico que traiga resultados
|
76
|
+
Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de horario de vuelta - filtros nuevo -
|
77
|
+
Cuando si es ida y vuelta, limpio el filtro de horario de vuelta - filtros nuevo -
|
78
|
+
Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
|
79
|
+
Entonces si es ida y vuelta, verifico que la pagina no rompa
|
80
|
+
Cuando elijo una duracion de salida a aplicar - filtros nuevo -
|
81
|
+
Entonces filtro por duracion de salida - filtros nuevo -
|
82
|
+
Cuando espero que termine de cargar la pagina de resultados
|
83
|
+
Entonces verifico que la pagina no rompa
|
84
|
+
Entonces verifico que traiga resultados
|
85
|
+
Y verifico que la primer pagina muestre correctamente los filtros de duracion de salida - filtros nuevo -
|
86
|
+
Y limpio el filtro de duracion de salida - filtros nuevo -
|
87
|
+
Cuando espero que termine de cargar la pagina de resultados
|
88
|
+
Entonces verifico que la pagina no rompa
|
89
|
+
Cuando si es ida y vuelta, elijo una duracion de llegada a aplicar - filtros nuevo -
|
90
|
+
Entonces si es ida y vuelta, filtro por duracion de llegada - filtros nuevo -
|
91
|
+
Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
|
92
|
+
Entonces si es ida y vuelta, verifico que la pagina no rompa
|
93
|
+
Entonces si es ida y vuelta, verifico que traiga resultados
|
94
|
+
Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de duracion de llegada - filtros nuevo -
|
95
|
+
Y si es ida y vuelta, limpio el filtro de duracion de llegada - filtros nuevo -
|
73
96
|
Cuando espero que termine de cargar la pagina de resultados
|
74
97
|
Entonces verifico que la pagina no rompa
|
75
|
-
|
76
|
-
|
98
|
+
Cuando recupero los precios limites de la lista - filtros nuevo -
|
99
|
+
Entonces filtro por precio mayor - filtros nuevo -
|
77
100
|
Cuando espero que termine de cargar la pagina de resultados
|
78
101
|
Entonces verifico que la pagina no rompa
|
79
|
-
|
80
|
-
Entonces filtro por
|
102
|
+
Entonces verifico que traiga resultados
|
103
|
+
Entonces filtro por precio menor - filtros nuevo -
|
81
104
|
Cuando espero que termine de cargar la pagina de resultados
|
82
105
|
Entonces verifico que la pagina no rompa
|
83
|
-
|
84
|
-
|
106
|
+
Entonces verifico que traiga resultados
|
107
|
+
Y verifico que la primer pagina muestre correctamente los filtros de precio - filtros nuevo -
|
108
|
+
Cuando limpio el filtro de precio - filtros nuevo -
|
85
109
|
Cuando espero que termine de cargar la pagina de resultados
|
86
110
|
Entonces verifico que la pagina no rompa
|
87
111
|
|
112
|
+
@mx
|
113
|
+
Ejemplos:
|
114
|
+
|pais|tipo|cabotage|
|
115
|
+
|MX |roundtrip|true|
|
116
|
+
|MX |oneway|true|
|
117
|
+
|MX |oneway|nil|
|
118
|
+
|MX |roundtrip|nil|
|
88
119
|
@ar
|
89
120
|
Ejemplos:
|
90
121
|
|pais|tipo|cabotage|
|
@@ -99,13 +130,6 @@ Característica: results.filters
|
|
99
130
|
|BR |roundtrip|true|
|
100
131
|
|BR |oneway|nil|
|
101
132
|
|BR |roundtrip|nil|
|
102
|
-
@co
|
103
|
-
Ejemplos:
|
104
|
-
|pais|tipo|cabotage|
|
105
|
-
|CO |roundtrip|nil|
|
106
|
-
|CO |oneway|nil|
|
107
|
-
|CO |roundtrip|true|
|
108
|
-
|CO |oneway|true|
|
109
133
|
@us
|
110
134
|
Ejemplos:
|
111
135
|
|pais|tipo|cabotage|
|
data/flights_gui_tests.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
|
15
15
|
gem.require_paths = ["lib"] # Usualmente es solo lib -> ["lib"]
|
16
16
|
|
17
|
-
gem.version = '1.0.
|
17
|
+
gem.version = '1.0.4' # La version se debe incrementar cada vez que se desea publicar una nueva version del test.
|
18
18
|
|
19
19
|
gem.add_dependency('henry-container', '>= 0.1.39')
|
20
20
|
gem.add_dependency('page-object')
|
data/henry-context.yml
CHANGED
@@ -2970,13 +2970,13 @@ tasks:
|
|
2970
2970
|
recipients:
|
2971
2971
|
- estebanldh@gmail.com
|
2972
2972
|
- nsimean@despegar.com
|
2973
|
-
- name: results.filters.
|
2973
|
+
- name: results.filters.mx
|
2974
2974
|
class_name: Henry::Task::CucumberTask
|
2975
2975
|
options:
|
2976
2976
|
tags:
|
2977
2977
|
- results
|
2978
2978
|
- filters
|
2979
|
-
-
|
2979
|
+
- mx
|
2980
2980
|
expand: true
|
2981
2981
|
no-source: true
|
2982
2982
|
reports:
|
@@ -2985,13 +2985,13 @@ tasks:
|
|
2985
2985
|
recipients:
|
2986
2986
|
- estebanldh@gmail.com
|
2987
2987
|
- nsimean@despegar.com
|
2988
|
-
- name: results.filters.
|
2988
|
+
- name: results.filters.ar
|
2989
2989
|
class_name: Henry::Task::CucumberTask
|
2990
2990
|
options:
|
2991
2991
|
tags:
|
2992
2992
|
- results
|
2993
2993
|
- filters
|
2994
|
-
-
|
2994
|
+
- ar
|
2995
2995
|
expand: true
|
2996
2996
|
no-source: true
|
2997
2997
|
reports:
|
@@ -3000,13 +3000,13 @@ tasks:
|
|
3000
3000
|
recipients:
|
3001
3001
|
- estebanldh@gmail.com
|
3002
3002
|
- nsimean@despegar.com
|
3003
|
-
- name: results.filters.
|
3003
|
+
- name: results.filters.br
|
3004
3004
|
class_name: Henry::Task::CucumberTask
|
3005
3005
|
options:
|
3006
3006
|
tags:
|
3007
3007
|
- results
|
3008
3008
|
- filters
|
3009
|
-
-
|
3009
|
+
- br
|
3010
3010
|
expand: true
|
3011
3011
|
no-source: true
|
3012
3012
|
reports:
|
@@ -3030,35 +3030,6 @@ tasks:
|
|
3030
3030
|
recipients:
|
3031
3031
|
- estebanldh@gmail.com
|
3032
3032
|
- nsimean@despegar.com
|
3033
|
-
- name: results.new_filters
|
3034
|
-
class_name: Henry::Task::CucumberTask
|
3035
|
-
options:
|
3036
|
-
tags:
|
3037
|
-
- results
|
3038
|
-
- new_filters
|
3039
|
-
expand: true
|
3040
|
-
no-source: true
|
3041
|
-
reports:
|
3042
|
-
- format: html
|
3043
|
-
name: ${DATE}_${TASK_NAME}.html
|
3044
|
-
recipients:
|
3045
|
-
- estebanldh@gmail.com
|
3046
|
-
- nsimean@despegar.com
|
3047
|
-
- name: results.new_filters.mx
|
3048
|
-
class_name: Henry::Task::CucumberTask
|
3049
|
-
options:
|
3050
|
-
tags:
|
3051
|
-
- results
|
3052
|
-
- new_filters
|
3053
|
-
- mx
|
3054
|
-
expand: true
|
3055
|
-
no-source: true
|
3056
|
-
reports:
|
3057
|
-
- format: html
|
3058
|
-
name: ${DATE}_${TASK_NAME}.html
|
3059
|
-
recipients:
|
3060
|
-
- estebanldh@gmail.com
|
3061
|
-
- nsimean@despegar.com
|
3062
3033
|
- name: results.pagination
|
3063
3034
|
class_name: Henry::Task::CucumberTask
|
3064
3035
|
options:
|
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: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lgonzalez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: henry-container
|
@@ -259,8 +259,8 @@ files:
|
|
259
259
|
- features/step_definitions/tags_steps.rb
|
260
260
|
- features/step_definitions/thanks/load_steps.rb
|
261
261
|
- features/step_definitions/thanks/thanks_steps.rb
|
262
|
-
- features/support/classes/checkout/cluster.rb
|
263
262
|
- features/support/classes/checkout/new_cluster.rb
|
263
|
+
- features/support/classes/checkout/old_cluster.rb
|
264
264
|
- features/support/classes/checkout/render_cluster.rb
|
265
265
|
- features/support/classes/clusters.rb
|
266
266
|
- features/support/classes/data/data.rb
|
@@ -270,10 +270,10 @@ files:
|
|
270
270
|
- features/support/classes/landing/cluster.rb
|
271
271
|
- features/support/classes/price.rb
|
272
272
|
- features/support/classes/process_manager.rb
|
273
|
-
- features/support/classes/results/cluster.rb
|
274
|
-
- features/support/classes/results/details_cluster.rb
|
275
273
|
- features/support/classes/results/new_cluster.rb
|
276
274
|
- features/support/classes/results/new_details_cluster.rb
|
275
|
+
- features/support/classes/results/old_cluster.rb
|
276
|
+
- features/support/classes/results/old_details_cluster.rb
|
277
277
|
- features/support/classes/string.rb
|
278
278
|
- features/support/env.rb
|
279
279
|
- features/support/hooks.rb
|
@@ -312,7 +312,6 @@ files:
|
|
312
312
|
- features/support/modules/results/matrix/matrix_airline.rb
|
313
313
|
- features/support/modules/results/matrix/matrix_fare_chart.rb
|
314
314
|
- features/support/modules/results/matrix/matrix_price.rb
|
315
|
-
- features/support/modules/results/new_filters.rb
|
316
315
|
- features/support/modules/results/recommendation.rb
|
317
316
|
- features/support/modules/results/search_params.rb
|
318
317
|
- features/support/modules/results/wish_list.rb
|
@@ -367,7 +366,6 @@ files:
|
|
367
366
|
- features/tests/results/matrix/matrix_airlines.feature
|
368
367
|
- features/tests/results/matrix/matrix_fare_chart.feature
|
369
368
|
- features/tests/results/matrix/matrix_price.feature
|
370
|
-
- features/tests/results/new_filters.feature
|
371
369
|
- features/tests/results/orders.feature
|
372
370
|
- features/tests/results/pagination.feature
|
373
371
|
- features/tests/results/recommendation.feature
|
@@ -1,170 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class ResultsCluster
|
3
|
-
|
4
|
-
attr_accessor :ida, :vuelta, :tarifas, :idas, :vueltas
|
5
|
-
|
6
|
-
def initialize(itinerario,html,page = 0)
|
7
|
-
eval "#{itinerario.downcase}(html)"
|
8
|
-
self.load_prices((html/"div.fare-container"))
|
9
|
-
end
|
10
|
-
|
11
|
-
def roundtrip(html)
|
12
|
-
self.load_data_from((html/"div.itineraries div[@class='sub-cluster outbound']"))
|
13
|
-
self.load_data_to((html/"div.itineraries div[@class='sub-cluster inbound']"))
|
14
|
-
end
|
15
|
-
def oneway(html)
|
16
|
-
self.load_data_from((html/"div.itineraries//div[@class='sub-cluster outbound']"))
|
17
|
-
@nro_vuelo_vuelta = -1
|
18
|
-
end
|
19
|
-
def multipledestinations(html)
|
20
|
-
self.load_data_from((html/"div.itineraries//div[@class='sub-cluster multiple']"))
|
21
|
-
self.load_data_to((html/"div.itineraries//div[@class='sub-cluster multiple']").last)
|
22
|
-
end
|
23
|
-
def load_data_from(div_datos)
|
24
|
-
@idas = Array.new
|
25
|
-
(div_datos/"li.itinerary").each do |div_datos_ida|
|
26
|
-
duracion = (div_datos_ida/"li.time").inner_text.strip
|
27
|
-
origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
|
28
|
-
destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
|
29
|
-
origen_iata = (div_datos/"a")[0].inner_text.strip
|
30
|
-
destino_iata = (div_datos/"a")[1].inner_text.strip
|
31
|
-
fecha = (div_datos/"span.date").first.empty? ? (div_datos_ida/"li.date").first.inner_text.strip.no_accents : (div_datos/"span.date").first.inner_text.strip.no_accents
|
32
|
-
escala = (div_datos_ida/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_ida/"li.stops/a").inner_text.to_i
|
33
|
-
aerolinea = Array.new
|
34
|
-
i = 0
|
35
|
-
(div_datos_ida/"li.airlinesShort//img").each do |aer|
|
36
|
-
aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
37
|
-
i = i + 1
|
38
|
-
end
|
39
|
-
(div_datos_ida/"li.airlines//img").each do |aer|
|
40
|
-
aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
41
|
-
i = i + 1
|
42
|
-
end
|
43
|
-
hou_sal_ida = Time.parse((div_datos_ida/"li.leave span.hour").inner_text.strip)
|
44
|
-
hou_lle_ida = Time.parse((div_datos_ida/"li.arrive span.hour").inner_text.strip)
|
45
|
-
@idas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
|
46
|
-
end
|
47
|
-
@nro_vuelo_ida = 0
|
48
|
-
@ida = @idas[@nro_vuelo_ida]
|
49
|
-
end
|
50
|
-
def load_data_to(div_datos)
|
51
|
-
@vueltas = Array.new
|
52
|
-
(div_datos/"li.itinerary").each do |div_datos_vuelta|
|
53
|
-
duracion = (div_datos_vuelta/"li.time").inner_text.strip
|
54
|
-
origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
|
55
|
-
destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
|
56
|
-
origen_iata = (div_datos/"a")[0].inner_text.strip
|
57
|
-
destino_iata = (div_datos/"a")[1].inner_text.strip
|
58
|
-
fecha = (div_datos/"span.date").last.empty? ? (div_datos_vuelta/"li.date").last.inner_text.strip.no_accents : (div_datos/"span.date").last.inner_text.strip.no_accents
|
59
|
-
escala = (div_datos_vuelta/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_vuelta/"li.stops/a").inner_text.to_i
|
60
|
-
aerolinea = Array.new
|
61
|
-
i = 0
|
62
|
-
(div_datos_vuelta/"li.airlinesShort//img").each do |aer|
|
63
|
-
aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
64
|
-
i = i + 1
|
65
|
-
end
|
66
|
-
(div_datos_vuelta/"li.airlines//img").each do |aer|
|
67
|
-
aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
|
68
|
-
i = i + 1
|
69
|
-
end
|
70
|
-
hou_sal_ida = Time.parse((div_datos_vuelta/"li.leave span.hour").inner_text.strip)
|
71
|
-
hou_lle_ida = Time.parse((div_datos_vuelta/"li.arrive span.hour").inner_text.strip)
|
72
|
-
@vueltas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
|
73
|
-
end
|
74
|
-
@nro_vuelo_vuelta = 0
|
75
|
-
@vuelta = @vueltas[@nro_vuelo_vuelta]
|
76
|
-
end
|
77
|
-
|
78
|
-
def load_prices(p_html)
|
79
|
-
|
80
|
-
@tarifas = Hash.new
|
81
|
-
@tarifas['tarifa_adulto_dolar'] = Price.new((p_html/"span.price-currency span.currency").first.inner_text.strip + " " + (p_html/"span.price-currency span.amount").first.inner_text.strip)
|
82
|
-
if (p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first
|
83
|
-
@tarifas['tarifa_adulto'] = Price.new((p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first.inner_text.strip + " " + (p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.amount").first.inner_text.strip)
|
84
|
-
else
|
85
|
-
@tarifas['tarifa_adulto'] = @tarifas['tarifa_adulto_dolar']
|
86
|
-
end
|
87
|
-
|
88
|
-
adt = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /adulto/}.first
|
89
|
-
@tarifas['adt'] = adt ? Price.new((adt/"span.currency").first.inner_text.strip + " " + (adt/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
90
|
-
|
91
|
-
cnn = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /nino/}.first
|
92
|
-
@tarifas['cnn'] = cnn ? Price.new((cnn/"span.currency").first.inner_text.strip + " " + (cnn/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
93
|
-
|
94
|
-
inf = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /bebe/}.first
|
95
|
-
@tarifas['inf'] = inf ? Price.new((inf/"span.currency").first.inner_text.strip + " " + (inf/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
96
|
-
|
97
|
-
tasas = (p_html/"li.taxes-price").empty? ? (p_html/"li[@class='taxDetail.OTHER-price']").first : (p_html/"li.taxes-price").first
|
98
|
-
@tarifas['tasas'] = tasas ? Price.new((tasas/"span.currency").first.inner_text.strip + " " + (tasas/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
99
|
-
|
100
|
-
cargos = (p_html/"li.charges-price").first
|
101
|
-
@tarifas['cargos'] = cargos ? Price.new((cargos/"span.currency").first.inner_text.strip + " " + (cargos/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
102
|
-
|
103
|
-
afip = (p_html/"li[@class='taxDetail.ZK-price']").first
|
104
|
-
@tarifas['afip'] = afip ? Price.new((afip/"span.currency").first.inner_text.strip + " " + (afip/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
105
|
-
|
106
|
-
@tarifas['encargos'] = Price.new("$ 0",true)
|
107
|
-
|
108
|
-
campo = (p_html/"li").empty? ? "total" : "fare"
|
109
|
-
@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)
|
110
|
-
end
|
111
|
-
|
112
|
-
def validarSumaDesgloce(linea = "total|tarifa_adulto")
|
113
|
-
|
114
|
-
sumaTarifas = 0
|
115
|
-
@tarifas.each_pair do |key,tarifa|
|
116
|
-
if key !~ /#{linea}/
|
117
|
-
sumaTarifas += tarifa.valor
|
118
|
-
end
|
119
|
-
if @tarifas['total'] and (tarifa.valor > @tarifas['total'].valor) and (linea !~ /tarifa_adulto/)
|
120
|
-
true.should be_true
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
if @tarifas['total'] and ((sumaTarifas.to_i - @tarifas['total'].valor.to_i) > 3)
|
125
|
-
true.should be_true
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
def validarEcuacionTarifasPorCantidadDePasajeros(cant)
|
130
|
-
unless @tarifas['adt'].valor.zero?
|
131
|
-
(@tarifas['adt'].valor == @tarifas['tarifa_adulto'].valor * cant).should be_true
|
132
|
-
end
|
133
|
-
end
|
134
|
-
def validarResolucionAFIP
|
135
|
-
(@tarifas['total'] * 20 / 100).truncate + 1 == @tarifas['afip']
|
136
|
-
end
|
137
|
-
def total_escalas()
|
138
|
-
vueltas = @vueltas ? @vueltas.collect{|vuelta| vuelta.escalas} : []
|
139
|
-
(vueltas + @idas.collect{|vuelta| vuelta.escalas}).sort
|
140
|
-
end
|
141
|
-
|
142
|
-
def duracion
|
143
|
-
menor_ida = menor_duracion(@idas.collect{|ida| ida.duracion})
|
144
|
-
menor_vuelta = @vueltas ? menor_duracion(@vueltas.collect{|ida| ida.duracion}) : 0
|
145
|
-
|
146
|
-
return menor_vuelta + menor_ida
|
147
|
-
end
|
148
|
-
|
149
|
-
def escala_to_i(escala)
|
150
|
-
return 0 if escala.to_s =~ /(solo vuelo directo)|(Sin escalas)|(Sem escalas)|(Soamente v.o directo)|(Vuelo Directo)/i
|
151
|
-
return escala.to_s.gsub(/\D/,'').to_i
|
152
|
-
end
|
153
|
-
|
154
|
-
def menor_duracion(rutas)
|
155
|
-
totales = []
|
156
|
-
rutas.each do |custom|
|
157
|
-
if custom.match("^(.*)h (.*)m$")
|
158
|
-
total = custom.match("^(.*)h (.*)m$")[1].to_i * 60
|
159
|
-
total += custom.match("^(.*)h (.*)m$")[2].to_i
|
160
|
-
elsif custom.match("^(.*)h$")
|
161
|
-
total = custom.match("^(.*)h$")[1].to_i * 60
|
162
|
-
else
|
163
|
-
total = custom.match("^(.*)m$")[1].to_i
|
164
|
-
end
|
165
|
-
totales << total
|
166
|
-
end
|
167
|
-
return totales.sort.first
|
168
|
-
end
|
169
|
-
|
170
|
-
end
|