私は、バックエンドでレールを使用するIonicアプリでCapybaraとの統合テストを行っています。正常にサインインした後に問題があります。は何もせず、timeout while waiting for angular
があります。イオンアプリでCapybaraが失敗する
# test_helper.rb
Dir[Rails.root.join("test/helpers/**/*.rb")].each { |f| require f }
require 'capybara/rails'
require 'capybara/poltergeist'
if ENV['VIEW_IN_BROWSER'] == "true"
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :firefox)
end
else
Capybara.javascript_driver = :poltergeist
end
Capybara.server_port = 3000 # serveur rails en mode test
Capybara.always_include_port = true
Capybara.default_max_wait_time = 5
Capybara.raise_server_errors = false
class ActionDispatch::IntegrationTest
# Make the Capybara DSL available in all integration tests
include Capybara::DSL
include Capybara::Angular::DSL
def setup
super
end
def teardown
super
Capybara.reset_sessions!
Capybara.use_default_driver
end
end
マイヘルパー:
#test/helpers/ionic_helper.rb
module IonicHelper
include Warden::Test::Helpers
Warden.test_mode!
def on_ionic_app
Capybara.app_host = 'http://localhost:5000' # Serveur ionic
begin
yield
rescue => error
puts error
ensure
Capybara.app_host = 'http://localhost:4321' # serveur ionic en mode intégration continue
end
end
def user_log_in
user = FactoryGirl.create(:user)
visit(Capybara.app_host+"/#/app/signin")
fill_in "email", with: user.email
fill_in "password", with: user.password
click_on "Connexion"
end
end
最初の問題は、私は良好なイオンのポート(5000)をヒットするvisit
mehodにCapybara.app_host
を指定する必要があること、私は理由を理解することはできませんです。私はuser_log_in
テストが正常に動作取り除くが、このページはログインしているユーザーに見られることがあり、私はそれをテストするとき、それが失敗した場合
# reseau_test.rb
require "test_helper"
class ReseauTest < ActionDispatch::IntegrationTest
include IonicHelper
test "On s'assure que tous les elements en mode connecté soient présents" do
Capybara.current_driver = Capybara.javascript_driver
on_ionic_app do
user_log_in
visit(Capybara.app_host+"/#/app/network")
assert page.has_css?('span.count.following.text-center.ng-binding'), "Il doit y avoir un chiffre pour le nombre d'abonnements"
assert page.has_content?('Abonnements'), "Il doit y avoir le texte 'Abonnements'"
assert page.has_css?('span.count.follower.ng-binding'), "Il doit y avoir un chiffre pour le nombre d'abonnés"
assert page.has_content?('Abonnés'), "Il doit y avoir le texte 'Abonnés'"
end
end
end
:
マイ第二の問題であるが、この試験でありますtimeout while waiting for angular
。私は同じ方法で失敗するCapybara.default_max_wait_time
を30に置くことができます。
2番目の問題はセレンとポルターガイストの両方で発生しますか?もしそうなら、セレンでブラウザに何を表示しますか? –
はい、両方で問題が発生します。セレンを使用すると、ブラウザはリダイレクトされた良好なページを表示し(ログイン後)、2回目の訪問リンクには行かず、待機(default_max_wait_timeに依存)して終了します。 –
私の答えは2番目の部分で更新されました –