bwobst
bwobst

Reputation: 351

Element not found in Capybara

I keep getting this error:

Capybara::ElementNotFound:
       cannot fill in, no text field, text area or password field with id, name, or label 'Morning' found.

I've reset spork, done a full db reset, tried assigning an ID to the form element, etc. What could possibly be the issue here?

days_controller_spec.rb

require 'spec_helper'

describe DaysController do

  describe "New" do

    describe "with valid information" do

      it "should create a new entry" do
        visit 'days#new'
        fill_in "Morning", with: "Test"
        click_button "Submit"
      end
    end
  end
end

days_controller.rb

<%= form_for @day do |f| %>

  <%= f.label :morning %>
  <%= f.text_field :morning %>

  <%= f.button :submit %>
<% end %>

Upvotes: 2

Views: 2261

Answers (2)

bwobst
bwobst

Reputation: 351

Turns out that syntax was all correct, but the issue was that the test was in the wrong RSpec spec file. When I swapped this test into an integration_test file, it worked perfectly.

Upvotes: 0

gylaz
gylaz

Reputation: 13581

Looks like you app is using JavaScript. With capybara you need to add :js => true option to the block that's dealing with JS pages.

Try:

it "should create a new entry", :js => true do

You may also need to way for the form to be rendered before trying to fill_in the field.

Also, I recommend you check out capybara's integration DSL. Read more about it here

Upvotes: 2

Related Questions