user318722
user318722

Reputation: 215

Integration Testing a Backbone.js application with Cucumber and Capybara

I am trying to test a Backbone application running on top of a Rails 3.2.8 one using Cucumber, capybara, capybara-webkit, selenium-webdriver, rspec and jasmine. I am using eco as template engine for the backbone template.

My problem is when I run the scenario using the @javascript tag, wether with capybara-webkit or selenium, the page displayed doesn't contain all the model attribute datas.

Here is the scenario :

@javascript
Scenario : first scenario
     Given There is Model with "name" as name and "What is it about ?" as associated questions
     When I want to fill the questionnaire
     Then I should be on the SPA form
     And I should see "name"
     And I should see "What is it about?"

The scenario fails on the "And I should see 'what is it about?'" step, the page doesn't show the question, but it shows the "name" I put several debug statement in my backbone code with console.log and I can see that the model is correct with all its attributes. Moreover it is working in live without issue

The template looks like this : 'show.jst.eco'

<p class="text-info"><%= @model.name %></p>

<form id="quidget-form" class="form-vertical">
  <% for question in @model.questions: %>
    <div class="issue_field">
      <label class="string optional control-label"><%= question.question.question_text %></label>
      <div class="control-group text">
        <textarea class="text answer" name="question-<%= question.question.id %>" id="question_<%= question.question.id %>" data-question="<%= question.question.question_text %>" rows="3">
        </textarea>
      </div>
    </div>
  <% end %>

  <div class="controls">
    <input type="submit" value="Additional Informations" id="quidget-step-one" class="btn btn-success">


The textarea is displayed but not the label above with the question text

Any idea ? I would like to see this pass so i can test more complicated logic with more steps.

Thanks

Upvotes: 4

Views: 943

Answers (1)

Tyler Morgan
Tyler Morgan

Reputation: 319

I've been doing some research into this sort of things as well. Most of it has been focused around Ember.js instead of Backbone but Pamela Fox just wrote a blog post about testing the Backbone.js frontend for Coursera, it could be helpful http://blog.pamelafox.org/2013/06/testing-backbone-frontends.html Also, have you tried testing with capybara in same manner you would a generic rails application with :js => true? Might be worth trying.

Upvotes: 0

Related Questions