[正常系]
・ユーザーの新規作成+flashメッセージ、編集ができること
・ログインが成功すること+flashメッセージが表示されること
・ログインした状態でタスクの新規作成、編集、削除ができること+それぞれにflashメッセージが表示される
・マイページにユーザーが新規作成したタスクが表示されること
[異常系]
・メールアドレスが未入力時にユーザーの新規作成、編集が失敗すること+新規作成失敗時にflashメッセージ
・登録済メールアドレス使用時にユーザーの新規作成+flashメッセージ、編集が失敗すること+新規作成失敗時にflashメッセージ
・フォーム未入力時にログインが失敗すること+flashメッセージ
・ログインしていないユーザーでタスクの新規作成、編集、マイページへの遷移ができないこと+flashメッセージ
・他のユーザーのユーザー編集、タスク編集ページへの遷移ができないこと
・タスクの新規作成・編集が失敗した場合、更新しようとしたデータが画面上に表示されていないこと
[その他の要件]
・login処理はmoduleを作成して共通化して、specファイル間で呼び出せるようにしてください。
・--format documentation を設定したテスト結果の画像をPRに添付してください。
・spec実行時にブラウザの表示有無を切り替える設定を spec/support 以下に追加してください。
・実行するテストケースを限定できる設定を spec_helper.rb の50行目辺りを確認して有効化してください。
・テストデータの作成にはFactoryBotやletを利用してください。
・ブラウザの挙動は gem webdrivers で確認してください。
<https://everydayrails.com/2019/04/09/chromedriver-helper-webdrivers.html>
まず、webdriversを使用せよとのことだったので、URLから確認してgemを加えます。ついでにcapybaraも追加します
Gemfile
~
group :test do
gem 'capybara'
gem 'webdrivers'
end
できたらbudle install
を実行
「実行するテストケースを限定できる設定を spec_helper.rb の50行目辺りを確認して有効化してください。」より、50行目あたりを確認するとこんな記載がある
spec_helper.rb
=begin
# This allows you to limit a spec run to individual examples or groups
# you care about by tagging them with `:focus` metadata. When nothing
# is tagged with `:focus`, all examples get run. RSpec also provides
# aliases for `it`, `describe`, and `context` that include `:focus`
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
config.filter_run_when_matching :focus
直訳すると...
#これにより、スペックの実行を個々の例またはグループに制限できます。
#`:focus`メタデータでタグ付けすることで気になります。 何もないとき
#は `:focus`でタグ付けされ、すべての例が実行されます。 RSpecはまた提供します
#`:focus`を含む` it`、 `describe`、および`context`のエイリアス
#メタデータ:それぞれ `fit`、` fdescribe`、`fcontext`。
となっていることから、=beginを下げて、config.filter_run_when_matching :focus のコメントアウトを外す
テストの出力結果を見やすくするため、.rspecに--format documentation
を追記する
「login処理はmoduleを作成して共通化して、specファイル間で呼び出せるようにしてください」との指定があるので、ログイン機能をモジュール化する
・rails_helper.rbにおいてコメントアウトされている
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }
をコメントアウトを外してあげる
・rails_helper.rbの下方ににあるRSpec.configure do |config|
以下にconfig.include Macros
と記載する。(名前は何でも良い)