前提・実現したいこと
railsでアプリを作っていて、今はその結合テストコードを書いています。
javascriptを使い、ボタンを押すと印刷ウィンドウを表示させる機能を作ったのですが、結合テストコードでボタンを押して印刷ウィンドウを開いた後に、ウィンドウを閉じる方法が分からず詰まっています。
よければご教示いただけると幸いです。
発生している問題・エラーメッセージ
結合テストコード内にて、印刷ウィンドウを閉じる方法がわからない
該当のソースコード
rspec
1require 'rails_helper' 2RSpec.describe '印刷ダイアログの表示', type: :system do 3 before do 4 @guest1 = FactoryBot.create(:guest) 5 end 6 7 context '利用者一覧表の印刷ボタンが表示される時', js: true do 8 it 'ログインしたユーザーは利用者一覧表の印刷ボタンを押すことができる' do 9 # 利用者1を投稿したユーザーでログインする 10 user1_sign_in(@guest1) 11 # トップページに「印刷」ボタンがあることを確認する 12 expect(page).to have_button ("この表を印刷する") 13 # 印刷ボタンをクリックする 14 click_button 'この表を印刷する' 15 page.dismiss_confirm do 16 click_on "キャンセル" 17 end 18 end 19 end 20 21end
javascript
1$(document).on('turbolinks:load', function(){ 2 const list = $('.nav-link') 3 $('.printing').on('click', function(){ 4 list.addClass('print'); 5 window.print(); 6 list.removeClass('print'); 7 }); 8});
html
1<div class="mb-3 d-flex justify-content-end"> 2 <button type="button" class="btn btn-success print printing"><i class="fas fa-print" aria-hidden="true"></i>この表を印刷する</button> 3</div>
試したこと
【Rails】Selenium/RSpecでconfirmダイアログのテストをする
近いものでダイアログボックスがあるかと思い、こちらの記事を参考にして見ましたが閉じることはできませんでした
印刷ダイアログの表示 利用者一覧表の印刷ボタンが表示される時 ログインしたユーザーは利用者一覧表の印刷ボタンを押すことができる (FAILED - 1) Failures: 1) 印刷ダイアログの表示 利用者一覧表の印刷ボタンが表示される時 ログインしたユーザーは利用者一覧表の印刷ボタンを押すことができる Failure/Error: click_on "キャンセル" Capybara::ElementNotFound: Unable to find link or button "キャンセル" [Screenshot]: /Users/oguratakashi/projects/heiseien29232/tmp/screenshots/failures_r_spec_example_groups_nested_nested_ログインしたユーザーは利用者一覧表の印刷ボタンを押すことができる_76.png # ./spec/system/guests_spec.rb:26:in `block (4 levels) in <top (required)>' # ./spec/system/guests_spec.rb:25:in `block (3 levels) in <top (required)>' Finished in 26.82 seconds (files took 3.06 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/system/guests_spec.rb:18 # 印刷ダイアログの表示 利用者一覧表の印刷ボタンが表示される時 ログインしたユーザーは利用者一覧表の印刷ボタンを押すことができる
補足情報(FW/ツールのバージョンなど)
環境
・ Rails 6.0.0
・ Ruby 2.6.5
gem 'capybara', '>= 2.15'
gem 'rspec-rails', '~> 4.0.0'
gem 'factory_bot_rails'
gem 'faker'
あなたの回答
tips
プレビュー