実現したいこと
ターミナルでテストを実行
% bundle exec rspec spec/system/users_spec.rb
ユーザー新規登録
ユーザー新規登録ができるとき
正しい情報を入力すればユーザー新規登録ができてトップページに移動する (FAILED - 1)
ユーザー新規登録ができないとき
誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる
Failures:
-
ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する
Failure/Error: fill_in 'Password_confirmation', with: @user.password_confirmationCapybara::ElementNotFound:
Unable to find field "Password_confirmation" that is not disabled./spec/system/users_spec.rb:19:in `block (3 levels) in <top (required)>'
Finished in 13.57 seconds (files took 1.29 seconds to load)
2 examples, 1 failure
Failed examples:
rspec ./spec/system/users_spec.rb:8 # ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する
↑テストを実行した時に、
Capybara::ElementNotFound:
Unable to find field "Password_confirmation" that is not disabled
のエラーが出て、色々試しましたが原因がわかりません。
↓vsコード spec/system//users_spec.rb
require 'rails_helper'
RSpec.describe 'ユーザー新規登録', type: :system do
before do
@user = FactoryBot.build(:user)
end
context 'ユーザー新規登録ができるとき' do
it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
# トップページに移動する
visit root_path
# トップページにサインアップページへ遷移するボタンがあることを確認する
expect(page).to have_content('新規登録')
# 新規登録ページへ移動する
visit new_user_registration_path
# ユーザー情報を入力する
fill_in 'user_nickname', with: @user.nickname
fill_in 'Email', with: @user.email
fill_in 'Password', with: @user.password
text fill_in 'Password_confirmation', with: @user.password_confirmation
# サインアップボタンを押すとユーザーモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
sleep 1
}.to change { User.count }.by(1)
# トップページへ遷移することを確認する
expect(page).to have_current_path(root_path)
# カーソルを合わせるとログアウトボタンが表示されることを確認する
expect(
find('.user_nav').find('span').hover
ターミナルでテストを実行
% bundle exec rspec spec/system/users_spec.rb
ユーザー新規登録
ユーザー新規登録ができるとき
正しい情報を入力すればユーザー新規登録ができてトップページに移動する (FAILED - 1)
ユーザー新規登録ができないとき
誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる
Failures:
-
ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する
Failure/Error: fill_in 'Password_confirmation', with: @user.password_confirmationCapybara::ElementNotFound:
Unable to find field "Password_confirmation" that is not disabled./spec/system/users_spec.rb:19:in `block (3 levels) in <top (required)>'
Finished in 13.57 seconds (files took 1.29 seconds to load)
2 examples, 1 failure
Failed examples:
rspec ./spec/system/users_spec.rb:8 # ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する
↑テストを実行した時に、
Capybara::ElementNotFound:
Unable to find field "Password_confirmation" that is not disabled
のエラーが出て、色々試しましたが原因がわかりません。
↓vsコード spec/system//users_spec.rb
require 'rails_helper'
RSpec.describe 'ユーザー新規登録', type: :system do
before do
@user = FactoryBot.build(:user)
end
context 'ユーザー新規登録ができるとき' do
it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
# トップページに移動する
visit root_path
# トップページにサインアップページへ遷移するボタンがあることを確認する
expect(page).to have_content('新規登録')
# 新規登録ページへ移動する
visit new_user_registration_path
# ユーザー情報を入力する
fill_in 'user_nickname', with: @user.nickname
fill_in 'Email', with: @user.email
fill_in 'Password', with: @user.password
fill_in 'Password_confirmation', with: @user.password_confirmation
# サインアップボタンを押すとユーザーモデルのカウントが1上がることを確認する
expect{
find('input[name="commit"]').click
sleep 1
}.to change { User.count }.by(1)
# トップページへ遷移することを確認する
expect(page).to have_current_path(root_path)
# カーソルを合わせるとログアウトボタンが表示されることを確認する
expect(
find('.user_nav').find('span').hover
).to have_content('ログアウト')
# サインアップページへ遷移するボタンや、ログインページへ遷移するボタンが表示されていないことを 確認する
expect(page).to have_no_content('新規登録')
expect(page).to have_no_content('ログイン')
end
end
context 'ユーザー新規登録ができないとき' do
it '誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる' do
# トップページに移動する
# トップページにサインアップページへ遷移するボタンがあることを確認する
# 新規登録ページへ移動する
# ユーザー情報を入力する
# サインアップボタンを押してもユーザーモデルのカウントは上がらないことを確認する
# 新規登録ページへ戻されることを確認する
end
end
end
fill_inで、ローカルホストを立ち上げ、検証コードを使用しました。
https://gyazo.com/d2a3a7cc42a219ab53f0f4eb1b219908
Password_confirmationの_がなかったので追記してテストしたんですが、それでも同じエラーが出ます。
エラー解決できずに困っているんですが、どなたか解答またはアドバイスお願い致します。 ).to have_content('ログアウト')
# サインアップページへ遷移するボタンや、ログインページへ遷移するボタンが表示されていないことを確認す. る.
expect(page).to have_no_content('新規登録')
expect(page).to have_no_content('ログイン')
end
end
context 'ユーザー新規登録ができないとき' do
it '誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる' do
# トップページに移動する
# トップページにサインアップページへ遷移するボタンがあることを確認する
# 新規登録ページへ移動する
# ユーザー情報を入力する
# サインアップボタンを押してもユーザーモデルのカウントは上がらないことを確認する
# 新規登録ページへ戻されることを確認する
end
end
end
fill_inで、ローカルホストを立ち上げ、検証コードを使用しました。
https://gyazo.com/d2a3a7cc42a219ab53f0f4eb1b219908
Password_confirmationの_がなかったので追記してテストしたんですが、それでも同じエラーが出ます。
エラー解決できずに困っているんですが、どなたか解答またはアドバイスお願い致します。
発生している問題・分からないこと
Capybara::ElementNotFound:
Unable to find field "Password_confirmation" that is not disabled
エラーメッセージ
error
1ユーザー新規登録 2 ユーザー新規登録ができるとき 3 正しい情報を入力すればユーザー新規登録ができてトップページに移動する (FAILED - 1) 4 ユーザー新規登録ができないとき 5 誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる 6 7Failures: 8 9 1) ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する 10 Failure/Error: fill_in 'Password_confirmation', with: @user.password_confirmation 11 12 Capybara::ElementNotFound: 13 Unable to find field "Password_confirmation" that is not disabled 14 15 [Screenshot Image]: /Users/pazu/projects/pictweet/tmp/capybara/failures_r_spec_example_groups_nested_nested_正しい情報を入力すればユーザー新規登録ができてトップページに移動する_141.png 16 17 18 # ./spec/system/users_spec.rb:19:in `block (3 levels) in <top (required)>' 19 20Finished in 13.57 seconds (files took 1.29 seconds to load) 212 examples, 1 failure 22 23Failed examples: 24 25rspec ./spec/system/users_spec.rb:8 # ユーザー新規登録 ユーザー新規登録ができるとき 正しい情報を入力すればユーザー新規登録ができてトップページに移動する
該当のソースコード
Ruby
1require 'rails_helper' 2 3RSpec.describe 'ユーザー新規登録', type: :system do 4 before do 5 @user = FactoryBot.build(:user) 6 end 7 context 'ユーザー新規登録ができるとき' do 8 it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do 9 # トップページに移動する 10 visit root_path 11 # トップページにサインアップページへ遷移するボタンがあることを確認する 12 expect(page).to have_content('新規登録') 13 # 新規登録ページへ移動する 14 visit new_user_registration_path 15 # ユーザー情報を入力する 16 fill_in 'user_nickname', with: @user.nickname 17 fill_in 'Email', with: @user.email 18 fill_in 'Password', with: @user.password 19 fill_in 'Password_confirmation', with: @user.password_confirmation 20 # サインアップボタンを押すとユーザーモデルのカウントが1上がることを確認する 21 expect{ 22 find('input[name="commit"]').click 23 sleep 1 24 }.to change { User.count }.by(1) 25 # トップページへ遷移することを確認する 26 expect(page).to have_current_path(root_path) 27 # カーソルを合わせるとログアウトボタンが表示されることを確認する 28 expect( 29 find('.user_nav').find('span').hover 30 ).to have_content('ログアウト') 31 # サインアップページへ遷移するボタンや、ログインページへ遷移するボタンが表示されていないことを確認する 32 expect(page).to have_no_content('新規登録') 33 expect(page).to have_no_content('ログイン') 34 end 35 end 36 context 'ユーザー新規登録ができないとき' do 37 it '誤った情報ではユーザー新規登録ができずに新規登録ページへ戻ってくる' do 38 # トップページに移動する 39 # トップページにサインアップページへ遷移するボタンがあることを確認する 40 # 新規登録ページへ移動する 41 # ユーザー情報を入力する 42 # サインアップボタンを押してもユーザーモデルのカウントは上がらないことを確認する 43 # 新規登録ページへ戻されることを確認する 44 end 45 end 46end 47
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Password_confirmationの_がなかったので追記してテストしたんですが、それでも同じエラーが出ます。
エラー解決できずに困っているんですが、どなたか解答またはアドバイスお願い致します。
補足
macbook AppleM3
mac OS. 15.1.1(24B91)

あなたの回答
tips
プレビュー