Forum: Ruby on Rails Howto test RJS templates?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Christian M. (Guest)
on 2007-04-06 01:19
(Received via mailing list)

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 %>
| </div>

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
|       # ???
|   end
| end

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

TIA and regards,
Tyler MacDonald (Guest)
on 2007-04-06 01:22
(Received via mailing list)
Christian M. <removed_email_address@domain.invalid> wrote:
> How can I test, that the "#create" element is hidden?

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

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

Jason R. (Guest)
on 2007-04-06 16:55
(Received via mailing list)
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
run it.

Check out:


There's also #assert_select_rjs if you're on Rails 1.2+, but I'm not
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,
need a browser testing solution like Selenium, or lighter-weight Systir
Watir (

This topic is locked and can not be replied to.