質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Capybara

Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

901閲覧

[Rspec][Capybara]結合テストコードにてjavascriptで開いた印刷ウィンドウを閉じたい [rails]

guguasmon

総合スコア1

Capybara

Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/09/24 11:40

編集2020/09/24 11:44

前提・実現したいこと

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'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問