flights_gui_henry_tests 1.8.7
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 +15 -0
- data/Gemfile +3 -0
- data/features/data/home-offers-config.csv +883 -0
- data/features/data/host.yml +72 -0
- data/features/data/miles.yml +216 -0
- data/features/data/search.yml +27 -0
- data/features/data/sites.yml +39 -0
- data/features/data/tag_microsoft.yml +68 -0
- data/features/step_definitions/checkout/agencia_steps.rb +6 -0
- data/features/step_definitions/checkout/chat_steps.rb +43 -0
- data/features/step_definitions/checkout/checkout_steps.rb +144 -0
- data/features/step_definitions/checkout/cupones_steps.rb +26 -0
- data/features/step_definitions/checkout/error_messages.rb +251 -0
- data/features/step_definitions/checkout/seguros_steps.rb +78 -0
- data/features/step_definitions/checkout/thanks_steps.rb +75 -0
- data/features/step_definitions/content/contents_steps.rb +140 -0
- data/features/step_definitions/desambiguation/disambiguation_airports_steps.rb +73 -0
- data/features/step_definitions/desambiguation/disambiguation_city_steps.rb +43 -0
- data/features/step_definitions/filter/filters_airlines.rb +38 -0
- data/features/step_definitions/filter/filters_airports_steps.rb +31 -0
- data/features/step_definitions/filter/filters_price_steps.rb +87 -0
- data/features/step_definitions/filter/filters_stops_steps.rb +44 -0
- data/features/step_definitions/filter/filters_time_steps.rb +143 -0
- data/features/step_definitions/filter/matrix_steps.rb +249 -0
- data/features/step_definitions/landing/landing_checkout_steps.rb +45 -0
- data/features/step_definitions/landing/landing_filters_steps.rb +17 -0
- data/features/step_definitions/landing/landing_home_alerts_steps.rb +21 -0
- data/features/step_definitions/landing/landing_home_steps.rb +82 -0
- data/features/step_definitions/landing/landing_long_tail.rb +58 -0
- data/features/step_definitions/landing/landing_negative_steps.rb +127 -0
- data/features/step_definitions/landing/landing_passenger_review_steps.rb +8 -0
- data/features/step_definitions/landing/landing_steps.rb +325 -0
- data/features/step_definitions/orders/orders.rb +67 -0
- data/features/step_definitions/others/advancedgui_steps.rb +28 -0
- data/features/step_definitions/others/advancednogui_steps.rb +34 -0
- data/features/step_definitions/others/anticipatedsearch_steps.rb +13 -0
- data/features/step_definitions/others/flights_tracker_steps.rb +73 -0
- data/features/step_definitions/others/generic_steps.rb +35 -0
- data/features/step_definitions/others/newsletter_steps.rb +50 -0
- data/features/step_definitions/others/one_day_search.rb +58 -0
- data/features/step_definitions/others/print_steps.rb +26 -0
- data/features/step_definitions/others/querystringparameters_steps.rb +6 -0
- data/features/step_definitions/others/recommendation_steps.rb +80 -0
- data/features/step_definitions/others/render_steps.rb +70 -0
- data/features/step_definitions/others/tag_steps.rb +157 -0
- data/features/step_definitions/others/upgrade_bussines_steps.rb +27 -0
- data/features/step_definitions/results/load_steps.rb +69 -0
- data/features/step_definitions/results/results_steps.rb +21 -0
- data/features/step_definitions/results/search_steps.rb +82 -0
- data/features/step_definitions/search/alerts_steps.rb +132 -0
- data/features/step_definitions/search/basefare_steps.rb +64 -0
- data/features/step_definitions/search/bestprices_steps.rb +70 -0
- data/features/step_definitions/search/cross_sell_row_hoteles.rb +78 -0
- data/features/step_definitions/search/cross_sell_steps.rb +15 -0
- data/features/step_definitions/search/delays_steps.rb +67 -0
- data/features/step_definitions/search/details_steps.rb +9 -0
- data/features/step_definitions/search/ecoflights_steps.rb +9 -0
- data/features/step_definitions/search/fenix_steps.rb +119 -0
- data/features/step_definitions/search/flight_gui_steps.rb +312 -0
- data/features/step_definitions/search/miles_step.rb +13 -0
- data/features/step_definitions/search/pagination_steps.rb +41 -0
- data/features/step_definitions/search/reviews_step.rb +56 -0
- data/features/step_definitions/search/search_no_gui_steps.rb +185 -0
- data/features/step_definitions/search/wish_list_steps.rb +123 -0
- data/features/support/env.rb +61 -0
- data/features/support/lib/clusters/data/datos_new.rb +33 -0
- data/features/support/lib/clusters/details/details_cluster.rb +30 -0
- data/features/support/lib/clusters/results/landing_cluster.rb +29 -0
- data/features/support/lib/clusters/results/render_cluster.rb +43 -0
- data/features/support/lib/clusters/results_cluster.rb +140 -0
- data/features/support/lib/clusters.rb +5 -0
- data/features/support/lib/helpers/browser.rb +212 -0
- data/features/support/lib/helpers/checkout.rb +31 -0
- data/features/support/lib/helpers/clusters.rb +234 -0
- data/features/support/lib/helpers/landing.rb +117 -0
- data/features/support/lib/helpers/render.rb +135 -0
- data/features/support/lib/helpers.rb +5 -0
- data/features/support/lib/price.rb +66 -0
- data/features/support/lib/services/fenix.rb +14 -0
- data/features/support/lib/services/landing.rb +18 -0
- data/features/support/lib/services/results.rb +62 -0
- data/features/support/lib/services.rb +4 -0
- data/features/support/matchers.rb +120 -0
- data/features/support/redefinitions.rb +42 -0
- data/features/tests/checkout/agency.feature +33 -0
- data/features/tests/checkout/button_cac.feature +52 -0
- data/features/tests/checkout/chat.feature +20 -0
- data/features/tests/checkout/cupones.feature +54 -0
- data/features/tests/checkout/error_messages.feature +64 -0
- data/features/tests/checkout/integration.feature +215 -0
- data/features/tests/checkout/low_cost.feature +55 -0
- data/features/tests/checkout/seguros.feature +37 -0
- data/features/tests/contents/costs.feature +29 -0
- data/features/tests/contents/rules.feature +58 -0
- data/features/tests/contents/webcheckin.feature +26 -0
- data/features/tests/desambiguation/airports.feature +89 -0
- data/features/tests/desambiguation/city.feature +86 -0
- data/features/tests/filters/filters.feature +160 -0
- data/features/tests/fixes/advancedgui.feature +171 -0
- data/features/tests/fixes/advancednogui.feature +60 -0
- data/features/tests/fixes/book_no_gui.feature +21 -0
- data/features/tests/fixes/cross_sell_row_hoteles.feature +70 -0
- data/features/tests/fixes/facebook.feature +31 -0
- data/features/tests/fixes/landing_home_alerts.feature +82 -0
- data/features/tests/fixes/matrix_stops.feature +104 -0
- data/features/tests/fixes/one_day_search.feature +63 -0
- data/features/tests/fixes/print.feature +87 -0
- data/features/tests/fixes/searches_no_gui.feature +85 -0
- data/features/tests/landing/landing_alerts.feature +93 -0
- data/features/tests/landing/landing_checkout.feature +286 -0
- data/features/tests/landing/landing_filters.feature +176 -0
- data/features/tests/landing/landing_home.feature +68 -0
- data/features/tests/landing/landing_integration.feature +153 -0
- data/features/tests/landing/landing_long_tail.feature +162 -0
- data/features/tests/landing/landing_matrix.feature +156 -0
- data/features/tests/landing/landing_negative.feature +157 -0
- data/features/tests/landing/landing_orders.feature +107 -0
- data/features/tests/landing/landing_pagination.feature +142 -0
- data/features/tests/landing/landing_passenger_review.feature +139 -0
- data/features/tests/landing/landing_positive.feature +155 -0
- data/features/tests/landing/landing_reviews.feature +139 -0
- data/features/tests/landing/landing_tags.feature +148 -0
- data/features/tests/matrix/matrix_airlines.feature +104 -0
- data/features/tests/matrix/matrix_fare_chart.feature +24 -0
- data/features/tests/matrix/matrix_price.feature +35 -0
- data/features/tests/others/alerts.feature +89 -0
- data/features/tests/others/anticipatedsearch.feature +82 -0
- data/features/tests/others/flights_tracker.feature +94 -0
- data/features/tests/others/newsletter.feature +131 -0
- data/features/tests/others/querystringparameters.feature +82 -0
- data/features/tests/others/recommendation.feature +170 -0
- data/features/tests/others/semaphore.feature +206 -0
- data/features/tests/others/upgrade_bussines.feature +100 -0
- data/features/tests/search/basefare.feature +88 -0
- data/features/tests/search/itineraries.feature +85 -0
- data/features/tests/search/orders.feature +100 -0
- data/features/tests/search/pagination.feature +70 -0
- data/features/tests/search/reviews.feature +84 -0
- data/features/tests/search/searches.feature +197 -0
- data/features/tests/search/wish_list.feature +102 -0
- data/flights_gui_henry_tests.gemspec +32 -0
- data/henry-context.yml +14733 -0
- metadata +324 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
And /^Seteo AbzTesting redirect al "(.*)"$/ do |perc|
|
|
3
|
+
value = BROWSER.cookies.to_a.select{|cookie| cookie[:name]=="abzTestingId"}.first
|
|
4
|
+
revalue = value[:value].gsub(/#{get_abtesting('currency')}/,perc).gsub(/currency/,"redirect")
|
|
5
|
+
delete_cookie("abzTestingId")
|
|
6
|
+
add_cookie("abzTestingId",revalue,{:expires => value[:expires],:domain=>value[:domain]})
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
And /^recargo la pagina$/ do
|
|
10
|
+
BROWSER.goto(BROWSER.url)
|
|
11
|
+
puts BROWSER.cookies.to_a
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
And /^Verifico que se cree la cookie landingTestPrice con menos "(.*)" por ciento$/ do |perc|
|
|
15
|
+
value = @clusters.first.tarifas['tarifa_adulto'].value.round - ((@clusters.first.tarifas['tarifa_adulto'].value.round*perc.to_i)/100).round
|
|
16
|
+
add_cookie("landingTestPrice",value.to_s)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
And /^Verifico que se cree la cookie landingTestPrice con mas "(.*)" por ciento$/ do |perc|
|
|
20
|
+
value = @clusters.first.tarifas['tarifa_adulto'].value.round + ((@clusters.first.tarifas['tarifa_adulto'].value.round*perc.to_i)/100).round
|
|
21
|
+
add_cookie("landingTestPrice",value.to_s)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
And /^Verifico la pagina donde ingresa$/ do
|
|
25
|
+
begin
|
|
26
|
+
puts " URL: #{BROWSER.url} "
|
|
27
|
+
Watir::Wait.until(timeout = 120){(!BROWSER.div(:id,'results-loader').present? and !BROWSER.div(:id,'results-update').present? and !BROWSER.div(:class,'results-update').present? and !BROWSER.div(:class,'update-message').present?) or (BROWSER.fieldset(:id,'passengers').div(:class,'passenger background').present? or BROWSER.div(:class,'notification-box warn-box').present?)}
|
|
28
|
+
rescue Timeout::Error, Watir::Wait::TimeoutError
|
|
29
|
+
puts "Timeout de resultados"
|
|
30
|
+
end
|
|
31
|
+
if BROWSER.fieldset(:id,'passengers').div(:class,'passenger background').present? or BROWSER.div(:class,'notification-box warn-box').present?
|
|
32
|
+
@page = "checkout"
|
|
33
|
+
else
|
|
34
|
+
@page = "results"
|
|
35
|
+
end
|
|
36
|
+
sleep(1)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
And /^ingreso checkout$/ do
|
|
40
|
+
@page.should equal("checkout")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
And /^ingreso resultados$/ do
|
|
44
|
+
@page.should equal("results")
|
|
45
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
And /^Verifico los filtros de estadia$/ do
|
|
3
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
4
|
+
index = 0
|
|
5
|
+
(doc/"div.ux-flights-filter-departures").each do |div|
|
|
6
|
+
BROWSER.span(:class=>'ux-common-filter-toggle',:index => index).click unless BROWSER.ul(:class=>'ux-common-filter-options items accordion-content',:index=>index).present?
|
|
7
|
+
value = apply_filter((div/"li.item").first)
|
|
8
|
+
begin
|
|
9
|
+
BROWSER.checkbox(:value,value).click
|
|
10
|
+
rescue Selenium::WebDriver::Error::ElementNotVisibleError
|
|
11
|
+
end
|
|
12
|
+
Watir::Wait.until(timeout = 120){!BROWSER.div(:id,'results-loader').present? and !BROWSER.div(:id,'results-update').present? and !BROWSER.div(:class,'results-update').present? and !BROWSER.div(:class,'update-message').present?}
|
|
13
|
+
index += 1
|
|
14
|
+
puts index
|
|
15
|
+
break if index > 1
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
|
|
3
|
+
Then /^Verifico que exista el panel de alertas de home de vuelos$/ do
|
|
4
|
+
Watir::Wait.until(timeout=30){BROWSER.div(:class,'alerts-home').present?}
|
|
5
|
+
BROWSER.div(:class,'alerts-home').should visible
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
When /^Abro el popup de alertas de home de vuelos$/ do
|
|
9
|
+
BROWSER.div(:id,'alert-home-subscribe').click
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Then /^Comparo el campo origen en alertas de home de vuelos$/ do
|
|
13
|
+
BROWSER.text_field(:class,"alerts-destination").text == (@search.city_to_1.name + " (" + @search.city_to_1.code + ")")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
When /^Completo el campo destino con "(.*)"$/ do |city|
|
|
17
|
+
sleep(0.5)
|
|
18
|
+
BROWSER.text_field(:class,"alerts-destination").set("#{city}")
|
|
19
|
+
sleep(0.5)
|
|
20
|
+
BROWSER.text_field(:class,"alerts-destination").send_keys :enter
|
|
21
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
When /^Verifico que se muestre la caja de busqueda$/ do
|
|
2
|
+
BROWSER.form(:class,'searchbox flights').should visible
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
When /^que se muestre la caja de ofertas$/ do
|
|
6
|
+
BROWSER.div(:class,'alerts-home').should visible
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
When /^que se muestren los links de pasajes aereos internacionales$/ do
|
|
10
|
+
@img_110 = []
|
|
11
|
+
@img_259 = []
|
|
12
|
+
BROWSER.div(:class,'destiny-offers').should visible
|
|
13
|
+
doc = Hpricot.parse(BROWSER.div(:class,'destiny-offers').html)
|
|
14
|
+
(doc/"li").each do |li|
|
|
15
|
+
img = (li/"img").first
|
|
16
|
+
puts img.attributes['src']
|
|
17
|
+
@img_110 << img.attributes['alt'] if img.attributes['src'].match(/no\-disponible/)
|
|
18
|
+
#respond_img = HTTParty.get(img.attributes['src'])
|
|
19
|
+
#respond_img.code.should equal(200)
|
|
20
|
+
(!(li/"a").empty?).should be_true
|
|
21
|
+
(!(li/"div.first-col").inner_text.empty?).should be_true
|
|
22
|
+
(!(li/"div.sec-col").inner_text.empty?).should be_true
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
When /^que se muestren correctamente los destinos mas buscados$/ do
|
|
27
|
+
BROWSER.div(:class,'most-searched').should visible
|
|
28
|
+
doc = Hpricot.parse(BROWSER.div(:class,'most-searched').html)
|
|
29
|
+
(doc/"ul li").each do |li|
|
|
30
|
+
img = (li/"img").first
|
|
31
|
+
puts img.attributes['src']
|
|
32
|
+
@img_259 << img.attributes['alt'] if img.attributes['src'].match(/no\-disponible/)
|
|
33
|
+
#respond_img = HTTParty.get(img.attributes['src'])
|
|
34
|
+
#respond_img.code.should equal(200)
|
|
35
|
+
(!(li/"a").empty?).should be_true
|
|
36
|
+
(!(li/"div.info-city").inner_text.empty?).should be_true
|
|
37
|
+
(!(li/"div.product-info").inner_text.empty?).should be_true
|
|
38
|
+
(!(li/"div.price-container").inner_text.empty?).should be_true
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
And /^verifico si alguna imagen no esta disponible$/ do
|
|
43
|
+
puts "Ciudades sin imagenes 110X110: #{@img_110.join(', ')}"
|
|
44
|
+
puts "Ciudades sin imagenes 259X90: #{@img_259.join(', ')}"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
When /^que se muestre las descripciones de beneficios despegar$/ do
|
|
48
|
+
BROWSER.div(:class,'benefits').should visible
|
|
49
|
+
doc = Hpricot.parse(BROWSER.div(:class,'benefits').html)
|
|
50
|
+
(doc/"div.benefit").each do |li|
|
|
51
|
+
li.inner_text.no_accents.should match("More than 20,000 verified reviews|Take advantage of the comments from other travelers in Despegar.com|Online booking management|Easily manage your bookings from My Despegar, for free!|Pay in installments|Finance your purchase in installments|Safe shopping|We use secure connections to protect your information|Attention 24 hours a day|Our agents are always at your disposal|Best Price Guaranteed|Best Price Guaranteed or we'll refund the difference|Mejor precio garantizado|Aproveche nuestra amplia disponibilidad de vuelos para los mejores destinos|Ofertas importantes en Despegar.com|Melhor preco garantido|El mejor precio garantizado o le devolvemos la diferencia|O melhor preco ou lhe devolvemos a diferenca|Garantia de mejor precio|Melhor preco garantido|Atencion las 24 hs|Atendimento 24 hs|Nuestros agentes se encuentran siempre a su disposicion|Nossos atendentes estao sempre a sua disposicao|Compra protegida|Compra protegida|Utilizamos conexiones seguras para proteger su informacion|Utilizamos conexoes seguras para proteger a sua informacao|Pague en cuotas|Pague em parcelas|Financie su compra en varios pagos|Financie sua compra em varias parcelas|Gestion de reservas online|Gestao de reservas on-line|Administre facilmente sus reservas desde Mi Despegar, .{1,2}gratis.{1,2}|Administre facilmente suas reservas desde Meu Decolar, gratis.{1,2}|Mas de (\d+) opiniones verificadas|Mais de (\d+) opinioes verificadas.|Aproveche los comentarios de otros viajeros de Despegar.com|Veja os comentarios de outros viajantes do Decolar.com")
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
When /^que se muestre la descripcion de vuelos mas baratos$/ do
|
|
56
|
+
BROWSER.div(:class,'cheapest-flights').should visible
|
|
57
|
+
BROWSER.div(:class,'cheapest-flights').h3(:class,'main-title').text.no_accents.downcase.should match("vuelos mas baratos en despegar.com|cheapest flights in despegar.com|vuelos economicos en despegar.com|garanta suas passagens aereas no decolar.com")
|
|
58
|
+
BROWSER.div(:class,'cheapest-flights').text.no_accents.should match("Welcome to Despegar.com|Seja bem-vindo ao Decolar.com|Bienvenidos a Despegar.com")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
When /^que se muestren las opiniones de pasajeros$/ do
|
|
62
|
+
BROWSER.div(:class,'reviews').should visible
|
|
63
|
+
BROWSER.div(:class,'reviews').div(:class,'main-title').text.downcase.no_accents.should match("traveler reviews|opinioes de viajantes|opiniones de viajeros")
|
|
64
|
+
doc = Hpricot.parse(BROWSER.div(:class,'reviews').html)
|
|
65
|
+
(!(doc/"div.ux-common-comment").empty?).should be_true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
When /^Seteo las ciudades de la busqueda de resultados de landing$/ do
|
|
69
|
+
@search = MockSearchRoundtrip.new($SITE,$ENV,true)
|
|
70
|
+
@search.set_from_city(BROWSER.url.match(/\/(...)\//)[1].upcase)
|
|
71
|
+
@search.set_to_city(BROWSER.url.match(/\/(...)\/(...)\//)[2].upcase)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
When /^que se muestre los links vuelo a destino SEO$/ do
|
|
75
|
+
BROWSER.div(:id,'seo-links').should visible("links vuelo a destino SEO")
|
|
76
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list destination').should visible("links vuelo a destino SEO destinos")
|
|
77
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list destination').links.length.should equal(5)
|
|
78
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list airlines').should visible("links vuelo a destino SEO aerolineas")
|
|
79
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list airlines').links.length.should equal(5)
|
|
80
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list continent').should visible("links vuelo a destino SEO continentes")
|
|
81
|
+
BROWSER.div(:id,'seo-links').ul(:class,'list continent').links.length.should equal(4)
|
|
82
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
And /^Verifico las nuevas urls de vuelos a destino por aerolinea$/ do
|
|
3
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
4
|
+
options = (doc/"div.ux-flights-filter-airlines")[0]
|
|
5
|
+
options = (options/"ul.items label").reject{|option| option.attributes["class"].match(/selected|disabled/)}
|
|
6
|
+
@airline = options[rand(options.length)]
|
|
7
|
+
code = (@airline/"img").first.attributes['src'].match(/\/(..)\.png/)[1].strip
|
|
8
|
+
@arrival = BROWSER.url.match(/#{@search.host()}\/(vuelos|passagens-aereas|flights)\/(\D{3})\/(\D{3})\/(vuelos|passagens-aereas)-(a|para)-(.+)-(desde|saindo-de)-(.+)/)[3]
|
|
9
|
+
BROWSER.goto(@search.generate_url_landing_airline(code,@arrival))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
And /^Verifico que aparezcan los links propuestos de vuelos a destino por aerolinea$/ do
|
|
13
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
14
|
+
if (doc/"div#seo-links div.category h4.category-title").inner_text.match(/Vuelos a destino por aerolinea|Passagens para destino com Cia A.{1,2}rea|Flights to destination on airline/)
|
|
15
|
+
links = (doc/"div#seo-links ul.list li.item a").select{|a| a.attributes['href'].match(/#{@search.host()}\/(vuelos|passagens-aereas|fligths)\/(aerolinea|companhiasaerea)\/(\D{3})\/(..)\/(vuelos|passagens-aereas)-(a|da)-(.+)-(por|para)-(.+)/)}
|
|
16
|
+
links.should_not is_empty
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
And /^Verifico las nuevas urls de vuelos a destino por aeropuerto de llegada$/ do
|
|
21
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
22
|
+
options = (doc/"div.ux-flights-filter-destinyairports label").reject{|option| option.attributes["class"].match(/selected|disabled/)}
|
|
23
|
+
@airport = options[rand(options.length)]
|
|
24
|
+
BROWSER.goto(@search.generate_url_landing_arrival_airport((@airport/"input").first.attributes['value']))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
And /^Verifico que aparezcan los links propuestos de vuelos a destino por aeropuerto de llegada$/ do
|
|
28
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
29
|
+
if (doc/"div#seo-links div.category h4.category-title").inner_text.match(/Vuelos a aeropuertos|Passagens para o Aeroporto|Flights to airport/)
|
|
30
|
+
(doc/"div#seo-links ul.list li.item a").each do |a|
|
|
31
|
+
puts a.attributes['href']
|
|
32
|
+
end
|
|
33
|
+
links = (doc/"div#seo-links ul.list li.item a").select{|a| a.attributes['href'].match(/#{@search.host()}\/(vuelos|passagens-aereas|fligths)\/(aeropuerto|aeroporto|airport)\/(\D{3})\/(voos-para-aeroporto|vuelos-a)(.+)/)}
|
|
34
|
+
links.should_not is_empty
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
And /^Verifico las nuevas urls de vuelos a destino por aeropuerto de salida$/ do
|
|
39
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
40
|
+
options = (doc/"div.ux-flights-filter-originairports label").reject{|option| option.attributes["class"].match(/selected|disabled/)}
|
|
41
|
+
@airport = options[rand(options.length)]
|
|
42
|
+
BROWSER.goto(@search.generate_url_landing_origin_airport((@airport/"input").first.attributes['value'],@arrival))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
And /^Verifico que aparezcan los links propuestos de vuelos a destino por aeropuerto de salida$/ do
|
|
46
|
+
doc = Hpricot.parse(BROWSER.html)
|
|
47
|
+
if (doc/"div#seo-links div.category h4.category-title").inner_text.match(/Vuelos a destino desde aeropuerto origen|Passagens para destino saindo do Aeroporto de Origem|Flights to destination from departure airport/)
|
|
48
|
+
(doc/"div#seo-links ul.list li.item a").each do |a|
|
|
49
|
+
puts a.attributes['href']
|
|
50
|
+
end
|
|
51
|
+
links = (doc/"div#seo-links ul.list li.item a").select{|a| a.attributes['href'].match(/#{@search.host()}\/(vuelos|passagens-aereas|fligths)\/(aeropuerto|aeroporto|airport)\/(\D{3})\/(\D{3})\/(passagens-aereas-para|vuelos-a|flights-to)-(.+)-(desde|from|saindo-de)-(.+)/)}
|
|
52
|
+
links.should_not is_empty
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
And /^es ida y vuelta$/ do
|
|
57
|
+
@search.description.downcase.match("roundtrip")
|
|
58
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
And /^Verifico que ciudades iguales de error$/ do
|
|
3
|
+
@path_landing = BROWSER.url.match(/(.+)(vuelos-a|passagens\-aereas\-para)(.+)/)
|
|
4
|
+
BROWSER.goto(@path_landing[1].gsub(/\/...\/...\//,"/bue/bue/"))
|
|
5
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
6
|
+
BROWSER.div(:class,'messages').text.should match("The destination city is the same as the city of origin|La ciudad de destino es la misma que la ciudad de origen|A cidade de destino .{1,2} a mesma que a cidade de origem")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
And /^Verifico que fechas iguales no de error$/ do
|
|
10
|
+
BROWSER.goto(@path_landing[1] + "1/2014-03-05/2014-03-05/" + @path_landing[2] + @path_landing[3])
|
|
11
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
12
|
+
BROWSER.div(:class,'messages').text.should match("No flights were found for your search|No encontramos vuelos para su b.{1,2}squeda|N.{1,2}o foi possivel encontrar assentos disponiveis nos v.{1,2}os buscados")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
And /^Verifico que paginado negativo de error$/ do
|
|
16
|
+
BROWSER.goto(@path_landing[1] + "-1/" + @path_landing[2] + @path_landing[3])
|
|
17
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
18
|
+
BROWSER.div(:class,'messages').text.should match("The page you requested is not valid|La pagina solicitada no es valida|A p.{1,2}gina que voc.{1,2} solicitou n.{1,2}o .{1,2} v.{1,2}lido")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
And /^Verifico que la ciudad "(.*)" de error$/ do |text|
|
|
22
|
+
BROWSER.goto(@path_landing[1].gsub(/\/...\/...\//,"/bue/xxx/"))
|
|
23
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
24
|
+
BROWSER.div(:class,'messages').text.should match("We could not understand the city you want to fly|No hemos podido interpretar la ciudad a la que quiere volar|N.{1,2}o encontramos a cidade solicitada")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
And /^Verifico que dias de permanencia negativo de error$/ do
|
|
28
|
+
BROWSER.goto(@path_landing[1] + "1/-1/" + @path_landing[2] + @path_landing[3])
|
|
29
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
30
|
+
BROWSER.div(:class,'messages').text.should match("Los dias de permanencia no son validos|Os dias de estadia n.{1,2}o s.{1,2}o v.{1,2}lidos")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
And /^Verifico que si la fecha de ida ingresada es posterior a la fecha de vuelta de error$/ do
|
|
34
|
+
BROWSER.goto(@path_landing[1] + "1/2014-03-05/2014-03-04/" + @path_landing[2] + @path_landing[3])
|
|
35
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
36
|
+
BROWSER.div(:class,'messages').text.should match("The departure date entered is later than the return date|La fecha de ida ingresada es posterior a la fecha de vuelta|A data de partida digitada .{1,2} posterior a data de retorno")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
And /^Verifico que si la url no tiene el seoPath, se redirige a la pagina que si lo tiene$/ do
|
|
40
|
+
BROWSER.goto(@path_landing[1])
|
|
41
|
+
|
|
42
|
+
sleep(0.5)
|
|
43
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.gsub(/\?(.+)/,'').strip)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
And /^Verifico que si el seoPath esta mal escrito, se redirige a la pagina con el seoPath correcto$/ do
|
|
47
|
+
BROWSER.goto(@path_landing[1]+"qwerty")
|
|
48
|
+
sleep(0.5)
|
|
49
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.strip.to_s.gsub(/\?(.+)/,'').strip)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
And /^Verifico que si se pone un codigo de aeropuerto en vez de uno de cuidad, se redirige a la ciudad del aeropuerto$/ do
|
|
53
|
+
BROWSER.goto(@path_landing[1].gsub(/\/...\/...\//,"/ccs/eze/"))
|
|
54
|
+
sleep(0.5)
|
|
55
|
+
if $SITE=="BR"
|
|
56
|
+
BROWSER.url.strip.should equal(@path_landing[1].to_s.gsub(/\/...\/...\//,"/ccs/bue/")+@path_landing[2]+"-buenos+aires-saindo-de-caracas")
|
|
57
|
+
else
|
|
58
|
+
BROWSER.url.strip.should equal(@path_landing[1].to_s.gsub(/\/...\/...\//,"/ccs/bue/")+@path_landing[2]+"-buenos+aires-desde-caracas")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
And /^Verifico que si se pone algun caracter en mayuscula, se redirige a todo minuscula$/ do
|
|
63
|
+
BROWSER.goto(@path_landing[1] + @path_landing[2].upcase + @path_landing[3])
|
|
64
|
+
sleep(0.5)
|
|
65
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.strip)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
And /^Verifico que si la url tiene parametros, se deben conservar en la redireccion$/ do
|
|
69
|
+
BROWSER.goto(@path_landing[1] + "qwerty?param=value")
|
|
70
|
+
sleep(0.5)
|
|
71
|
+
BROWSER.url.strip.should equal("#{@path_landing.to_s.strip.to_s.gsub(/\?(.+)/,'').strip}?param=value")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
And /^Verifico que la url para sem funcione correctamente con un ciudad con resultados$/ do
|
|
76
|
+
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas)\/(...)\/(...)\//)
|
|
77
|
+
BROWSER.goto("#{match[1]}#{match[2]}/handler/#{match[3]}/#{match[4]}/#{@path_landing[2]}#{@path_landing[3]}")
|
|
78
|
+
sleep(0.5)
|
|
79
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.strip)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
And /^Verifico que la url para sem funcione correctamente con un ciudad sin resultados$/ do
|
|
83
|
+
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas)\/(...)\/(...)\//)
|
|
84
|
+
BROWSER.goto("#{match[1]}#{match[2]}/handler/#{match[3]}/KLP/#{@path_landing[2]}#{@path_landing[3]}")
|
|
85
|
+
sleep(0.5)
|
|
86
|
+
BROWSER.url.strip.should equal("#{match[1]}#{match[2]}/")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
And /^Verifico que la url para sem funcione correctamente con un ciudad con resultados sin seoPath$/ do
|
|
90
|
+
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas)\/(...)\/(...)\//)
|
|
91
|
+
BROWSER.goto("#{match[1]}#{match[2]}/handler/#{match[3]}/#{match[4]}")
|
|
92
|
+
sleep(0.5)
|
|
93
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.strip.gsub(/\?(.+)/,''))
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
And /^Verifico que la url para sem funcione correctamente con un ciudad sin resultados sin seoPath$/ do
|
|
97
|
+
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas)\/(...)\/(...)\//)
|
|
98
|
+
BROWSER.goto("#{match[1]}#{match[2]}/handler/#{match[3]}/KLP")
|
|
99
|
+
sleep(0.5)
|
|
100
|
+
BROWSER.url.strip.should equal("#{match[1]}#{match[2].to_s.gsub(/\?(.+)/,'').strip}/")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
And /^Verifico que el paginado con "(.+)" paginas redireccione a la primer pagina$/ do |limit_pages|
|
|
104
|
+
BROWSER.goto(@path_landing[1] + "#{limit_pages.to_i + 1}/" + @path_landing[2] + @path_landing[3])
|
|
105
|
+
sleep(0.5)
|
|
106
|
+
BROWSER.url.strip.should equal(@path_landing.to_s.strip)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
And /^Verifico que la url de landing para el destino "(.*)" no rompa$/ do |to_city|
|
|
110
|
+
match = @path_landing[1].match(/(.+)(vuelos|passagens-aereas)\/(...)\/(...)\//)
|
|
111
|
+
puts "#{match[1]}#{match[2]}/css/#{to_city}"
|
|
112
|
+
respond = HTTParty.get("#{match[1]}#{match[2]}/css/#{to_city}")
|
|
113
|
+
respond.code.to_s.should match("200|404")
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
And /^Verifico que redirija a la home de vuelos si no hay oficinas en la ciudad de origen$/ do
|
|
117
|
+
BROWSER.goto(@search.generate_url_landing_home + "/tyo")
|
|
118
|
+
BROWSER.url.should equal(@search.generate_url_landing_home + "/")
|
|
119
|
+
BROWSER.goto(@search.generate_url_landing_home + "/#{@search.city_from_1.code}")
|
|
120
|
+
BROWSER.url.should equal(@search.generate_url_landing_home + "/#{@search.city_from_1.code.downcase}")
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
And /^Verifico que si paso tres ciudades en la url de error$/ do
|
|
124
|
+
BROWSER.goto(@path_landing[1] + "#{@search.city_to_1.code.downcase}/" + @path_landing[2] + @path_landing[3])
|
|
125
|
+
Watir::Wait.until(timeout = 10){BROWSER.div(:class,'messages').span(:class,'commonSprite warningSymbol').present?}
|
|
126
|
+
BROWSER.div(:class,'messages').text.no_accents.should match("La pagina solicitada no es valida|A pagina que voce solicitou nao e valido|The page you requested is not valid")
|
|
127
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Then /^Verifico que se muestre correctamente la review de pasajero$/ do
|
|
2
|
+
pending("No se muestra la review de pasajeros") unless BROWSER.div(:class,'flights-comments').present?
|
|
3
|
+
BROWSER.div(:class,'flights-comments').should visible
|
|
4
|
+
BROWSER.div(:class,'flights-comments').h3(:class,'ux-common-results-title').text.no_accents.should match("Puntuacion general de vuelos a #{@ciudad_elegida}|Pontuacao geral de voos #{@ciudad_elegida}|Overall rating for flights to #{@ciudad_elegida}")
|
|
5
|
+
if $SITE != "US"
|
|
6
|
+
BROWSER.div(:class,'flights-comments').h2(:class,'ux-common-results-title').text.no_accents.should match("Ya compraron vuelos a #{@ciudad_elegida}|Ja compraram voos a #{@ciudad_elegida}|")
|
|
7
|
+
end
|
|
8
|
+
end
|