<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Random Hacks: Tag testing</title>
    <link>http://www.randomhacks.net/articles/tag/testing?tag=testing</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Technology and Other Fun Stuff</description>
    <item>
      <title>Selenium on Rails, Reloaded: Client-Side Tests in Ruby</title>
      <description>&lt;p&gt;Like most &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; developers, I write lots of test cases for
my models and controllers.  This lets me add new features quickly, without
worrying about breakage: My test cases act as a safety net, warning me
whenever existing code fails.&lt;/p&gt;

&lt;p&gt;Sadly, it&amp;#8217;s much harder to test client-side behavior.  Sure, you know your
controllers work, but what actually &lt;em&gt;happens&lt;/em&gt; if a user clicks the Submit
button?  We need a better way to test the system end-to-end, including the actual JavaScript and
web browsers.&lt;/p&gt;

&lt;p&gt;This article shows how to combine &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt;, &lt;a href="http://andthennothing.net/archives/2006/02/05/selenium-on-rails"&gt;Selenium on Rails&lt;/a&gt;, and a
&lt;a href="/files/rselenese.diff"&gt;custom patch&lt;/a&gt; to write client-side test cases in Ruby:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;setup&lt;/span&gt; &lt;span class="comment"&gt;# Load fixtures&lt;/span&gt;
&lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;open&lt;/span&gt; &lt;span class="symbol"&gt;:controller&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;customer&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt;
          &lt;span class="symbol"&gt;:action&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;list&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;assert_title&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Customers&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;click&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;myLink&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:wait&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt;
&lt;span class="ident"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;assert_title&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Customer: *&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;These test cases actually run in your browser, loading pages and clicking links just as a user would.  As the above example shows, you have full access to the Rails environment, including URL routing and configuration data.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.randomhacks.net/articles/2006/02/15/selenium-on-rails-reloaded"&gt;Read More&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 15 Feb 2006 08:06:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:55cb00a4-1da9-4bc4-9273-ca919579c458</guid>
      <author>Eric Kidd</author>
      <link>http://www.randomhacks.net/articles/2006/02/15/selenium-on-rails-reloaded</link>
      <category>Rails</category>
      <category>Hacks</category>
      <category>Selenium</category>
      <category>testing</category>
      <trackback:ping>http://www.randomhacks.net/articles/trackback/171</trackback:ping>
    </item>
  </channel>
</rss>
