/ / Tests automatisés avec Cucumber sur BrowserStack du site derrière VPN - ruby, concombre, vpn, tests automatiques, browserstack

Tests automatisés avec concombre sur BrowserStack de site derrière VPN - ruby, concombre, vpn, tests automatisés, browserstack

J'essaie de faire fonctionner mes tests de concombreBrowserStack. Le problème est que nos environnements de test sont tous derrière un VPN. La documentation de BrowserStack indique qu’il suffit de configurer des tests locaux et que cela fonctionnera! Les tests démarrent, mais ils ne sont pas redirigés via ma machine locale pour récupérer mes informations d'identification vpn. J'ai téléchargé le binaire comme indiqué par BrowserStack. Je l'ai démarré avec la commande

~ ./BrowserStackLocal <my BS key> -forcelocal

Ensuite, je lance mon test avec (dans une fenêtre de terminal différente):

bundle exec cucumber CURRENT_BROWSER=browserstack features/01_login.feature

mon env.rb ressemble à ceci:

require "cucumber/rails"

Capybara.default_selector = :css

cb = ENV["CURRENT_BROWSER"]
testbrowser = cb ? cb.downcase.to_sym : :firefox
puts "-------------- current browser: #{testbrowser}........."
Capybara.register_driver :selenium do |app|
if RbConfig::CONFIG["host_os"][/linux/] && testbrowser.to_s.eql?("CHROME".downcase)
Capybara::Selenium::Driver.new(app, {:browser => :remote, :url => "http://127.0.0.1:9515"})
else
if testbrowser.eql?(:chrome)
prefs = {
:download => {
:prompt_for_download => false,
:default_directory => DownloadHelpers::PATH.to_s
}
}
Capybara::Selenium::Driver.new(app, :browser => :chrome, :prefs => prefs, :switches => %w[--test-type])
elsif testbrowser.eql?(:browserstack)
stackToUse = ENV["BS_STACK"] || "ie_9"
json = JSON.load(open(File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "browsers.json"))))
config = json[stackToUse]
unless config
puts "invalid BS_STACK specified. Was "#{stackToUse}""
return
end

# Add default config
config["name"] = "#{config["os"]} #{config["os_version"]} - #{Time.now.strftime "%Y-%m-%d %H:%M"}"
config["acceptSslCert"] = true
config["browserstack.debug"] = true
Capybara::Selenium::Driver.new(app, :browser => :remote, :desired_capabilities => config, :url => "http://<BS_USERNAME>:<BS_PASSKEY>@hub.browserstack.com/wd/hub")
elsif testbrowser.eql?(:internetexplorer)
Capybara::Selenium::Driver.new(app, :browser => :internetexplorer, :switches => %w[--test-type])
else
profile = Selenium::WebDriver::Firefox::Profile.new
profile
profile["browser.download.dir"] = DownloadHelpers::PATH.to_s
profile["browser.download.folderList"] = 2 # 2 - save to user defined location
profile["browser.download.manager.alertOnEXEOpen"] = false
profile["browser.helperApps.neverAsk.saveToDisk"] = "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream, data:application/csv"
profile["browser.helperApps.alwaysAsk.force"] = false
profile["browser.download.manager.showWhenStarting"] = false
profile["browser.download.manager.focusWhenStarting"] = false
profile["browser.download.useDownloadDir"] = true
profile["browser.download.manager.alertOnEXEOpen"] = false
profile["browser.download.manager.closeWhenDone"] = true
profile["browser.download.manager.showAlertOnComplete"] = false
profile["browser.download.manager.useWindow"] = false

profile["services.sync.prefs.sync.browser.download.manager.showWhenStarting"] = false
profile["pdfjs.disabled"] = true
Capybara::Selenium::Driver.new(app, :browser => testbrowser, :profile => profile)
end
end
end

ActionController::Base.allow_rescue = false

# Remove/comment out the lines below if your app doesn"t have a database.
# For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

# You may also want to configure DatabaseCleaner to use different strategies for certain features and scenarios.
# See the DatabaseCleaner documentation for details. Example:
#
#   Before("@no-txn,@selenium,@culerity,@celerity,@javascript") do
#     # { :except => [:widgets] } may not do what you expect here
#     # as tCucumber::Rails::Database.javascript_strategy overrides
#     # this setting.
#     DatabaseCleaner.strategy = :truncation
#   end
#
#   Before("~@no-txn", "~@selenium", "~@culerity", "~@celerity", "~@javascript") do
#     DatabaseCleaner.strategy = :transaction
#   end
#

# Possible values are :truncation and :transaction
# The :transaction strategy is faster, but might give you threading problems.
# See https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature
Cucumber::Rails::Database.javascript_strategy = :truncation

D'autres personnes utilisent ces mêmes tests et nous avonsIl est donc primordial de pouvoir exécuter ces tests localement pour des dizaines de fois. Lorsque je lance les tests, il commence à fonctionner sur browserstack, mais il ne peut atteindre aucun des sites que j’ai essayé de lui dire. http://localhost:3000/login J'ai contacté le support de BrowserStack et ilsdemandé si j'avais mis en place des tests locaux. La seule erreur que je reçois est que le test "ne trouve pas l’élément CSS auquel se connecter. Lorsque j’ai regardé le test automatisé via browserstack, je me suis rendu compte que la page n’était pas atteinte." Il dit simplement "Oups! Ce lien semble être brisé." Toute suggestion sera très appréciée.

Réponses:

2 pour la réponse № 1

Le support de BrowserStack est revenu à moi. Je devais avoir une autre propriété de configuration comme celle de l'env.rb:

config["browserstack.local"] = true

Maintenant, mon seul problème est qu’aucune des fonctionnalités que nous avons écrites ne semble fonctionner avec IE. Je peux donc tester chrome ou firefox sur browserstack, mais j'avais déjà cette fonctionnalité configurée.