Howto test RJS templates?


The following code works, but I don't know how to test ist properly:

In the view there is a simple link_to_remote:

<div id="create">
    <%= link_to_remote "Create New", :url => new_category_url %>

Essentially, when I click on this link the "div" box gets hidden with a

page.hide "create"

How do I test this? I have so far the following test:

class CreateCategoriesTest < ActionController::IntegrationTest
  def test_create_category
      get 'categories'
      assert_select "#create", "Create New"
      xml_http_request new_category_path
      assert_response :success
      # ???

How can I test, that the "#create" element is hidden?

TIA and regards,

Using standard ruby functional tests, you can only check tht the correct
signal was sent to the server to hide the "#create" element.

  If you want to test, in the browser, that the element is really hidden,
then you'll need to use a browser-oriented testing framework like Selenium.


Well, there are steps available to help test RJS, but there is no be-all end-all testing solution, because in the end it is javascript and you can’t run it.

Check out:


There’s also #assert_select_rjs if you’re on Rails 1.2+, but I’m not sure how to really use this:

As an example. your simple one-line RJS is testable in ARTS:

assert_rjs :hide, ‘create’

In the end, if you want to fully test your javascript interactions, you’ll need a browser testing solution like Selenium, or lighter-weight Systir + Watir (