Railsで作成しているアプリにおいて、タイトル通りボタンを押した時のconfirmの表示を確認したいです
= form.button "ボタン", name: name, class: class, formtarget: "blank", data: {confirm: メッセージ内容}
のconfirmの中身をテストしています
テストコードとしては
RSpec.feature "テスト", type: :feature do feature "feature" do scenario "メッセージの内容テスト" do 該当ページへ遷移する処理 click_on 'ボタン' expect(page.driver.browser.switch_to.alert.text).to eq "メッセージ内容" page.driver.browser.switch_to.alert.dismiss end end end
となっています
発生している問題・エラーメッセージ
NoMethodError: undefined method `switch_to' for #<Capybara::RackTest::Driver:0x00007fba5814ef78>
該当のソースコード
上記に記載してあるものになります
試したこと
Rspec Capybaraで実際テストを書いて困ったシチュエーションの解消法や【Rails】Selenium/RSpecでconfirmダイアログのテストをする、capybara で確認ダイアログを含む js をテストするといったサイトを参考にしましたがswitch_toが無いと言われてしまい、その先に進めません
switch_toの定義自体は存在していて
vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb
のなかに
def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end
と書かれていました
ドキュメントを見てみると(見ている場所があっているか少し自信がない)Driverの中にもBrowserのなかにもswitch_toという記述が無いように思います
これ以上先には進めそうになく質問しました。
どのようにすれば確認できるか教えていただけると助かります。
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
各種バージョン
- Rails 5.2.1
- Ruby 2.5.1
- RSpec 3.8.0
- selenium-webdriver 3.14.0
補足
該当ファイルではrails_helperを呼び出しています
中身は
rails_helper.rb
1require 'spec_helper' 2require 'rspec/rails' 3require 'shoulda/matchers' 4require File.expand_path('../../config/environment', __FILE__) 5Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f } 6ActiveRecord::Migration.maintain_test_schema! 7 8abort("The Rails environment is running in production mode!") if Rails.env.production? 9ENV['RAILS_ENV'] ||= 'test' 10RSpec.configure do |config| 11 config.fixture_path = "#{::Rails.root}/spec/fixtures" 12 13 config.use_transactional_fixtures = false 14 config.infer_spec_type_from_file_location! 15 16 config.filter_rails_from_backtrace! 17 config.include FactoryBot::Syntax::Methods 18end
と書いてあり
spec_helperには
require 'database_cleaner' require 'support/capybara' ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara/rspec' require 'capybara/rails' RSpec.configure do |config| config.include FactoryBot::Syntax::Methods config.before(:suite) do DatabaseCleaner.clean_with :truncation load Rails.root.join('db', 'seeds.rb') end config.before(:suite) do DatabaseCleaner.strategy = :transaction end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end config.expect_with :rspec do |expectations| expectations.include_chain_clauses_in_custom_matcher_descriptions = true end config.mock_with :rspec do |mocks| mocks.verify_partial_doubles = true end config.shared_context_metadata_behavior = :apply_to_host_groups end
とあります。
capybaraの設定は
require 'capybara/rspec' require 'selenium-webdriver' Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome( chrome_options: { args: %w(headless disable-gpu window-size=1680,1050), }, ) ) end Capybara.javascript_driver = :selenium
となっています。
require 'capybara/rspec' require 'capybara/rails'
上記の2つの中身は触っていません。
引き続きよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 11:27