<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>WatirMelon &#187; Watir</title>
	<atom:link href="http://watirmelon.com/category/Watir/feed/" rel="self" type="application/rss+xml" />
	<link>http://watirmelon.com</link>
	<description>A 93% Watir Based Blog by Alister Scott</description>
	<lastBuildDate>Sat, 17 Oct 2009 08:58:44 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='watirmelon.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/c9de640b304257bb2361e16d95fec265?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>WatirMelon &#187; Watir</title>
		<link>http://watirmelon.com</link>
	</image>
			<item>
		<title>Dynamically calling ruby methods in modules</title>
		<link>http://watirmelon.com/2009/09/17/dynamically-calling-ruby-methods-in-modules/</link>
		<comments>http://watirmelon.com/2009/09/17/dynamically-calling-ruby-methods-in-modules/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 12:50:21 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Watir]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[dynamically calling]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[methods]]></category>
		<category><![CDATA[modules]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=324</guid>
		<description><![CDATA[When I am creating Watir tests, I write ruby methods to define user tasks, for example, adding a book to a cart becomes def add_book. I then group these ruby methods into ruby modules divided logically by the area of the application I am writing tests for. For example, I would have a &#8216;Customer&#8217; module [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=324&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>When I am creating Watir tests, I write ruby methods to define user tasks, for example, adding a book to a cart becomes <code>def add_book</code>. I then group these ruby methods into ruby modules divided logically by the area of the application I am writing tests for. For example, I would have a &#8216;Customer&#8217; module and an &#8216;Admin&#8217; module for the Depot app. The benefit of using modules is you can avoid namespace conflicts as essentially each method is defined by its module&#8217;s prefix. This means that you can happily have <code>def Customer.log_on</code> and <code>def Admin.log_on</code> without any conflict or confusion.</p>
<p>As I have mentioned before, I like defining tests outside my code. These tests ultimately need to execute an associatted ruby method (stored in a module) by passing some data in (and getting an outcome and some output back). One way of calling these tests defined external to our code is to have a massive case statement that determines what calls what. This isn&#8217;t ideal as it is a maintenance burden, and really it isn&#8217;t needed.</p>
<p>In ruby it&#8217;s straightforward to dynamically load ruby modules, and then dynamically call individual methods.</p>
<pre class="brush: ruby;">
require 'temp'

module_name = &quot;Temp&quot;
method_name = &quot;hello_world&quot;

required_module = Kernel.const_get(module_name)
required_method = required_module.method(method_name)
required_method.call('Alister')
</pre>
<p>This is all well and good if Temp.helloworld() exists, but if it doesn&#8217;t, our code throws exceptions:</p>
<p><code><br />
`const_get': uninitialized constant Kernel::Temp (NameError)<br />
</code><br />
or<br />
<code><br />
`method': undefined method `hello_world' for class `Module' (NameError)<br />
</code></p>
<p>One way to avoid these exceptions is to wrap the code with a rescue clause, but I realised there are some easy ways to check if both modules and methods exist before loading them.</p>
<pre class="brush: ruby;">
require 'temp'

module_name = &quot;Temp&quot;
method_name = &quot;hello_world&quot;

if Object.const_defined?(module_name)
  required_module = Kernel.const_get(module_name)
  if required_module.respond_to?(method_name) then
    required_method = required_module.method(method_name)
    required_method.call('Alister')
  else
    puts &quot;Invalid method '#{method_name}' for module '#{module_name}'&quot;
  end
else
 puts &quot;Invalid module '#{module_name}'&quot;
end
</pre>
<p>This ensures that the code continues to execute if the module or method name is specified incorrectly, which is sometimes the case if its specified in a spreadsheet, and especially if someone else has designed the spreadsheet.</p>
<p>Once we are happy about dynamically finding methods in modules, the next step is to make sure that each method is called with the correct number of parameters. This property of a method is called the <strong>arity</strong>.</p>
<p>The great thing about ruby and arity is that you simply determine the number of parameters and then pass in a correct sized array, using a *, and the receiving method will automatically unpack the array into the parameters specified.</p>
<pre class="brush: ruby;">
puts required_method.arity()
required_method.call(*parameters)
</pre>
<p>The flexibility that ruby offers is amazing. I have tried to accomplish this same concept in VBScript but I couldn&#8217;t work out how. That&#8217;s why I am glad Watir uses ruby, it ultimately means my automated test framework is more efficient and maintainable.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=324&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/09/17/dynamically-calling-ruby-methods-in-modules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating a Watir framework using Test::Unit &amp; Roo</title>
		<link>http://watirmelon.com/2009/09/08/creating-a-watir-framework-using-test-unit-and-roo/</link>
		<comments>http://watirmelon.com/2009/09/08/creating-a-watir-framework-using-test-unit-and-roo/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 11:08:29 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Business Driven]]></category>
		<category><![CDATA[FireWatir]]></category>
		<category><![CDATA[Roo]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[test unit]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=316</guid>
		<description><![CDATA[One common challenge I see over and over again is people figuring out how to design a logical and maintainable automated testing framework. I have designed quite a few frameworks for various projects, but one thing that has consistently been a win for me is purposely separating  test case and test execution design.
It&#8217;s therefore [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=316&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One common challenge I see over and over again is people figuring out how to design a logical and maintainable automated testing framework. I have designed quite a few frameworks for various projects, but one thing that has consistently been a win for me is purposely separating  test <strong>case</strong> and test <strong>execution</strong> design.</p>
<p>It&#8217;s therefore logical that the design of my Watir framework deliberately separates test case design and test execution design so that:</p>
<ul>
<li>test case design is done visually in spreadsheets; and</li>
<li>test execution design is done in ruby methods, because code is the most efficient and maintainable way.</li>
</ul>
<p>Since I last published details about my framework on this blog, I have started doing assertions using the <a href="http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html">Test::Unit</a> ruby library. The reasons I chose Test::Unit are:</p>
<ul>
<li>it is easy to &#8216;mix-in&#8217; Test::Unit assertions into modules of ruby code using <code>include Test::Unit::Assertions</code>;</li>
<li>it is included with ruby;</li>
<li>ruby scripts with <code>Test::Unit::TestCase</code> are instantly executable, in my case, from SciTE;</li>
<li>its assertions are easy to understand and use.</li>
</ul>
<p>I have also made some other improvements to my framework code, including:</p>
<ul>
<li>the ability to specify browser types, and spreadsheet sources, as command line arguments (with defaults);</li>
<li>logging test output to a file;</li>
<li>no longer attaching to an open browser, the same browser instance is used completely for all tests (and elegantly closed at the end).</li>
</ul>
<p>The main design has been kept the same, in that a spreadsheet (either excel, openoffice or Google Docs) contains tests grouped by functional area, which call a method in a particular module.</p>
<p>The great thing about my framework is that adding a new test is a matter of designing the test case, and then writing the ruby method: as <em>the methods are called dynamically from the spreadsheet</em>,  no extra glue is needed!</p>
<p>Enough talk, here&#8217;s the code. The Google spreadsheet is <a href="http://spreadsheets.google.com/ccc?key=0AtL3mPY2rEqmdEY3XzRqUlZKSmM5Z3EtM21UdFdqb1E&amp;hl=en">here</a>. You can find a .zip file of <em>all</em> the required files to run it <a href="http://www.box.net/shared/jkcjqldcth">here</a>. It runs on the <em>depot</em> app, which you get <a href="http://github.com/bret/framework-examples/tree/39b11be54a841282029b7b8a4cc132fbc288d6ff/depot">here</a>. You will need two gems: Watir (oh duh), and <a href="http://roo.rubyforge.org/">Roo</a>.</p>
<p><strong>Test Driver tc_main.rb</strong></p>
<pre class="brush: ruby;">

$:.unshift File.join(File.dirname(__FILE__), &quot;.&quot;, &quot;lib&quot;)
require 'watir'
require 'roo'
require 'test/unit'
require 'customer'
require 'admin'
$stdout = File.new('log.txt',File::WRONLY|File::APPEND|File::CREAT)
$stderr = File.new('log.txt',File::WRONLY|File::APPEND|File::CREAT)

class TC_WatirMelon &lt; Test::Unit::TestCase
  @@colmap = {:module_name=&gt;0, :method_name=&gt;1, :comments=&gt;2, :exp_outcome=&gt;3, :exp_error=&gt;4, :first_param=&gt;5}
  @@ss_format = ARGV[0]
  @@specified_browser = ARGV[1]

  def setup
    puts &quot;[Starting at #{Time.now}]\n&quot;
    case @@ss_format
      when &quot;excel&quot;
        @ss = Excel.new(&quot;watirmelon.xls&quot;)
      when &quot;wiki&quot;
        @ss = Excel.new(&quot;http://localhost:8080/download/attachments/2097153/watirmelon.xls&quot;)
      when &quot;gdocs&quot;
        @ss = Google.new(&quot;0AtL3mPY2rEqmdEY3XzRqUlZKSmM5Z3EtM21UdFdqb1E&quot;)
      else
        @ss = Openoffice.new(&quot;watirmelon.ods&quot;)
      end
    @ss.default_sheet = @ss.sheets.first
    case @@specified_browser
      when &quot;firefox&quot;
        Watir::Browser.default = 'firefox'
        @browser = Watir::Browser.new
      else
        Watir::Browser.default = 'ie'
        @browser = Watir::Browser.new
        @browser.speed = :zippy
        @browser.visible = true
      end
  end

  def test_run_sheet()
    @ss.first_row.upto(@ss.last_row) do |row|
      #Read row into array
      line = Array.new
      @ss.first_column.upto(@ss.last_column) do |column|
        line &lt;&lt; @ss.cell(row, column).to_s.strip
      end

      module_name = line[@@colmap[:module_name]]
      if module_name != &quot;Function&quot; then #if not a header
        method_name = line[@@colmap[:method_name]].downcase.gsub(' ','_') #automatically determine ruby method name based upon data sheet
        exp_outcome = line[@@colmap[:exp_outcome]]
        exp_error = line[@@colmap[:exp_error]]
        first_param = @@colmap[:first_param]
        required_module = Kernel.const_get(module_name)
        required_method = required_module.method(method_name)
        arity = required_method.arity() # this is how many arguments the method requires, it is negative if a 'catch all' is supplied.
        arity = ((arity * -1) - 1) if arity &lt; 0 # arity is negative when there is a 'catch all'
        arity = arity-1 # Ignore the first browser parameter
        unless arity == 0
          parameters = line[first_param..first_param+(arity-1)]
        else
          parameters = []
        end
        begin
          act_outcome, act_output = required_method.call(@browser, *parameters)
        rescue Test::Unit::AssertionFailedError =&gt; e
          self.send(:add_failure, e.message, e.backtrace)
          act_outcome = false
          act_output = e.message
        end
        if (exp_outcome == 'Success') and act_outcome then
          assert(true, &quot;Expected outcome and actual outcome are the same&quot;)
          result = 'PASS'
        elsif (exp_outcome == 'Error') and (not act_outcome) and (exp_error.strip! == act_output.strip!)
          assert(true, &quot;Expected outcome and actual outcome are the same, and error messages match&quot;)
          result = 'PASS'
        else
          result = 'FAIL'
          begin
            assert(false,&quot;Row: #{row}: Expected outcome and actual outcome for #{method_name} for #{module_name} do not match, or error messages do not match.&quot;)
          rescue Test::Unit::AssertionFailedError =&gt; e
            self.send(:add_failure, e.message, e.backtrace)
          end
        end
        puts &quot;###########################################&quot;
        puts &quot;[Running: #{module_name}.#{method_name}]&quot;
        puts &quot;[Expected Outcome: #{exp_outcome}]&quot;
        puts &quot;[Expected Error: #{exp_error}]&quot;
        puts &quot;[Actual Outcome: Success]&quot; if act_outcome
        puts &quot;[Actual Outcome: Error]&quot; if not act_outcome
        puts &quot;[Actual Output: #{act_output}]&quot;
        puts &quot;[RESULT: #{result}]&quot;
        puts &quot;###########################################&quot;
        end
      end
  end

  def teardown
    @browser.close
    puts &quot;[Finishing at #{Time.now}]\n\n&quot;
  end

end
</pre>
<p><strong>Customer Module customer.rb</strong></p>
<pre class="brush: ruby;">
require 'test/unit'
include Test::Unit::Assertions

module Customer

  TITLE = 'Pragprog Books Online Store'
  URL = 'http://localhost:3000/store/'

  # Description:: Adds a book named 'book_title' to cart
  def Customer.add_book(browser, book_title)
    browser.goto(URL)
    # Check if title is already in cart - so we can check it was added correctly
    browser.link(:text,'Show my cart').click
    prev_cart_count = 0
    prev_cart_total = 0.00
    if not browser.div(:text,'Your cart is currently empty').exist? then
     # We have a non-empty cart
      for row in browser.table(:index,1)
        if row[2].text == book_title then
          prev_cart_count = row[1].text.to_i
          break
        end
      end
      prev_cart_total = browser.cell(:id, 'totalcell').text[1..-1].to_f #remove $ sign
      browser.link(:text, 'Continue shopping').click
    end

    found = false
    book_price = 0.00
    1.upto(browser.divs.length) do |index|
      if (browser.div(:index,index).attribute_value('className') == 'catalogentry') and (browser.div(:index,index).h3(:text,book_title).exists?) then
        book_price = browser.div(:index,index).span(:class, 'catalogprice').text[1..-1].to_f #remove $ sign
        browser.div(:index,index).link(:class,'addtocart').click
        found = true
        break
      end
    end
    if not found then
      return false,'Could not locate title in store'
    end

    new_cart_count = 0
    for row in browser.table(:index,1)
      if row[2].text == book_title then
        new_cart_count = row[1].text.to_i
        break
      end
    end
    new_cart_total = browser.cell(:id, 'totalcell').text[1..-1].to_f # remove $ sign
    assert_equal(new_cart_count,(prev_cart_count+1), &quot;Ensure that new quantity is now one greater than previously&quot;)
    assert_equal(new_cart_total,(prev_cart_total + book_price), &quot;Ensure that new cart total is old cart total plus book price&quot;)
    browser.link(:text, 'Continue shopping').click
    return true,new_cart_total
  end

  def Customer.check_out(browser, customerName, customerEmail, customerAddress, customerPaymentMethod)
    browser.goto(URL)
    browser.link(:text,'Show my cart').click
    if browser.div(:text,'Your cart is currently empty').exist? then
      return false,'Your cart is currently empty'
    end
    browser.link(:text,&quot;Checkout&quot;).click
    browser.text_field(:id, 'order_name').set(customerName)
    browser.text_field(:id, 'order_email').set(customerEmail)
    browser.text_field(:id, 'order_address').set(customerAddress)
    begin
      browser.select_list(:id, 'order_pay_type').select(customerPaymentMethod)
    rescue Watir::Exception::NoValueFoundException
      flunk('Could not locate customer payment method in drop down list: '+customerPaymentMethod)
    end
    browser.button(:name, 'commit').click
    if browser.div(:id,'errorExplanation').exist? then
      error = ''
      1.upto(browser.div(:id,'errorExplanation').lis.length) do |index|
        error &lt;&lt; (browser.div(:id,'errorExplanation').li(:index,index).text + &quot;,&quot;)
      end
      browser.link(:text,'Continue shopping').click
      return false, error
    end
    assert_equal(browser.div(:id,'notice').text, 'Thank you for your order.',&quot;Thank you for your order should appear.&quot;)
    return true,''
  end

  def Customer.empty_cart(browser)
    browser.goto(URL)
    browser.link(:text,&quot;Show my cart&quot;).click
    if browser.div(:text,&quot;Your cart is currently empty&quot;).exist? then
      assert('Cart was never empty')
    else
      browser.link(:text,'Empty cart').click
      assert_equal(browser.div(:id, 'notice').text,'Your cart is now empty')
    end
    return true,''
  end

  def Customer.check_cart_total(browser, exp_total)
    browser.goto(URL)
    browser.link(:text,'Show my cart').click
    if browser.div(:text,'Your cart is currently empty').exist? then
      return false,'Your cart is currently empty'
    end
    act_total = browser.cell(:id, 'totalcell').text[1..-1].to_f
    assert_equal(act_total,exp_total.to_f,&quot;Check that cart total is as expected.&quot;)
    return true,act_total
  end
end
</pre>
<p><strong>Admin Module admin.rb</strong></p>
<pre class="brush: ruby;">

require 'test/unit'
include Test::Unit::Assertions

module Admin
  TITLE = 'ADMINISTER Pragprog Books Online Store'
  URL = 'http://localhost:3000/admin/'

  def Admin.log_on(browser, username, password)
    browser.goto(URL)
    if browser.link(:text,'Log out').exist? then #if already logged in
      browser.link(:text,'Log out').click
    end
    browser.text_field(:id, 'user_name').set username
    browser.text_field(:id, 'user_password').set password
    browser.button(:value, ' LOGIN ').click
    if browser.div(:id, 'notice').exist? then
      return false,browser.div(:id, 'notice').text
    else
      return true,''
    end
  end

  def Admin.ship_items(browser, name)
    browser.goto(URL)
    browser.link(:text, 'Shipping').click
    num_orders = 0
    index = 0
    browser.form(:action,'/admin/ship').divs.each do |div|
      if div.class_name == &quot;olname&quot;
        index+=1
        if div.text == name then
          browser.form(:action,'/admin/ship').checkbox(:index, index).set
          num_orders+=1
        end
      end
    end

    browser.button(:value, ' SHIP CHECKED ITEMS ').click

    if num_orders == 1 then
      assert_equal(browser.div(:id,&quot;notice&quot;).text, &quot;One order marked as shipped&quot;,&quot;Correct notice&quot;)
    elsif num_orders &gt; 1 then
      assert_equal(browser.div(:id,&quot;notice&quot;).text, &quot;#{num_orders} orders marked as shipped&quot;,&quot;Correct notice&quot;)
    end
    return true, num_orders.to_s
  end

end
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=316&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/09/08/creating-a-watir-framework-using-test-unit-and-roo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>
	</item>
		<item>
		<title>Celerity: first impressions</title>
		<link>http://watirmelon.com/2009/08/31/celerity-first-impressions/</link>
		<comments>http://watirmelon.com/2009/08/31/celerity-first-impressions/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 11:17:09 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Roo]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[celerity]]></category>
		<category><![CDATA[headless]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[load testing]]></category>
		<category><![CDATA[performance testing]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=310</guid>
		<description><![CDATA[Last week at the Test Automation Workshop (TAW) here in Australia, the topic of being able to run automated tests &#8216;headless&#8217; came up, and I mentioned the Celerity project: a headless Watir port. I decided to have a play with Celerity tonight to see how easy it is to get up and running, and also [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=310&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last week at the Test Automation Workshop (<a href="http://watirmelon.com/2009/08/28/australian-test-automation-workshop-slides/">TAW</a>) here in Australia, the topic of being able to run automated tests &#8216;headless&#8217; came up, and I mentioned the <a href="http://celerity.rubyforge.org/">Celerity</a> project: a headless Watir port. I decided to have a play with Celerity tonight to see how easy it is to get up and running, and also look at it as a way to <em>quickly</em> run Watir scripts.</p>
<p><strong>Installation</strong></p>
<p>The installation was fairly straightforward. You need a Java 6 JDK, as well as the JRuby binaries. You&#8217;ll need to update two environment variables, namely add JRuby to your path, and update your JAVA_HOME variable. Installing Celerity involves a JRuby gem: <code>"jruby -S gem install celerity"</code>. You can also install it from github, but I don&#8217;t know the difference between the two.</p>
<p><strong>Availability of Gems</strong></p>
<p>Ruby gems are supported in JRuby, but only if they don&#8217;t use C libraries. This means that Watir won&#8217;t work, nor will <a href="http://roo.rubyforge.org/">Roo</a>. I use Roo to define test cases in spreadsheets, so it means I can&#8217;t do a comparison of execution times at the moment, at least until I get these test cases out of spreadsheets.</p>
<p><strong>Using Celerity as a simple load testing tool instead<br />
</strong></p>
<p>At TAW, <a href="http://kelvinross.blogspot.com/">Kelvin Ross</a> thought Celerity sounded promising as a load testing tool, considering it was headless and lightweight. I thought I would give a simple google search script a try, running in both Celerity, and Watir, with 30 concurrent users.</p>
<p><strong>Running under Watir</strong></p>
<p>CPU peaked at 100% for the entire run, and each page varied considerable but took on average 10 seconds to load.</p>
<p><strong>Running under Celerity</strong></p>
<p>CPU use was normal, and each page took just over 1 second to load (minimal variance).</p>
<p><strong>Conclusion</strong></p>
<p>Celerity seems a promising way to execute basic load tests using a headless browser. The benefit of Celerity is support for javascript execution in the browser, the downside at the moment is lack of support for some ruby gems. If you could run Watir under JRuby, I could have used a single script.</p>
<p><strong>Scripts Used</strong><br />
<strong>Celerity Script</strong></p>
<pre class="brush: ruby;">
require 'thread'
require &quot;rubygems&quot;
require &quot;celerity&quot;

def test_google
  browser = Celerity::Browser.new
  browser.goto('http://www.google.com')
  browser.text_field(:name, 'q').value = 'Celerity'
  start_time = Time.now
  browser.button(:name, 'btnG').click
  end_time = Time.now
  puts end_time - start_time
  browser.close
end

threads = []
30.times do
  threads &lt;&lt; Thread.new {test_google}
end
threads.each {|x| x.join}
</pre>
<p><strong>Watir Script</strong></p>
<pre class="brush: ruby;">
require 'thread'
require 'watir'
require 'watir/ie'

def test_google
  browser = Watir::IE.start('http://www.google.com')
  browser.text_field(:name, 'q').value = 'Celerity'
  start_time = Time.now
  browser.button(:name, 'btnG').click
  end_time = Time.now
  puts end_time - start_time
  browser.close
end

threads = []
30.times do
  threads &lt;&lt; Thread.new {test_google}
end
threads.each {|x| x.join}
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/310/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=310&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/08/31/celerity-first-impressions/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>
	</item>
		<item>
		<title>What IDE do you use for Watir?</title>
		<link>http://watirmelon.com/2009/08/20/what-ide-do-you-use-for-watir/</link>
		<comments>http://watirmelon.com/2009/08/20/what-ide-do-you-use-for-watir/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 07:46:33 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Watir]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=297</guid>
		<description><![CDATA[Curiosity got the better of me yesterday when writing about using SciTE, so I did a quick twitter survey to see what other people actually use. I got 13 responses within hours, and they show that there really is no common IDE for Watir.
The complete list of 13 responses:

Aptana:	1
Arachno:	1
eclipse-galileo:	1
NetBeans:	1
notepad++:	2
SCiTE:	4
TextMate:	1
vim: 	2

      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=297&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Curiosity got the better of me yesterday when writing about <a href="http://watirmelon.com/2009/08/19/restoring-check-syntax-for-ruby-files-in-scite/">using SciTE</a>, so I did a quick <a href="http://twitter.com/alisterscott/status/3401245550">twitter survey</a> to see what other people actually use. I got 13 responses within hours, and they show that there really is no common IDE for Watir.</p>
<p><a href="http://watirmelon.files.wordpress.com/2009/08/watir-ides.png"><img class="aligncenter size-full wp-image-298" title="watir ides" src="http://watirmelon.files.wordpress.com/2009/08/watir-ides.png?w=450&#038;h=363" alt="watir ides" width="450" height="363" /></a>The complete list of 13 responses:</p>
<ul>
<li>Aptana:	1</li>
<li>Arachno:	1</li>
<li>eclipse-galileo:	1</li>
<li>NetBeans:	1</li>
<li>notepad++:	2</li>
<li>SCiTE:	4</li>
<li>TextMate:	1</li>
<li>vim: 	2</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/297/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=297&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/08/20/what-ide-do-you-use-for-watir/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/watir-ides.png" medium="image">
			<media:title type="html">watir ides</media:title>
		</media:content>
	</item>
		<item>
		<title>Restoring &#8216;check syntax&#8217; for ruby files in SciTE</title>
		<link>http://watirmelon.com/2009/08/19/restoring-check-syntax-for-ruby-files-in-scite/</link>
		<comments>http://watirmelon.com/2009/08/19/restoring-check-syntax-for-ruby-files-in-scite/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 07:31:23 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Watir]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=291</guid>
		<description><![CDATA[I am somewhat embarrassed to admit that I still use SciTE to edit my ruby files for Watir, considering there are a lot more sophisticated IDEs out there that you can use (Netbeans is one).
When I am using a new version of SciTE I notice it seems to get rid of the options to check [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=291&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I am somewhat embarrassed to admit that I still use SciTE to edit my ruby files for Watir, considering there are a lot more sophisticated IDEs out there that you can use (<a href="http://www.netbeans.org/kb/60/ruby/getting-started.html">Netbeans</a> is one).</p>
<p>When I am using a new version of SciTE I notice it seems to get rid of the options to check ruby syntax (often triggered by Control-1). This can be quickly fixed in the ruby.properties file (under &#8216;Options&#8217;) by ensuring the following properties appear after &#8216;if PLAT_WIN&#8217;:</p>
<pre class="brush: bash;">
if PLAT_WIN
command.go.*.rb=ruby $(FileNameExt)
command.go.subsystem.*.rb=1
command.go.*.rbw=rubyw $(FileNameExt)
command.go.subsystem.*.rbw=1
command.help.*.rb=$(CurrentWord)!c:\ruby\doc\ProgrammingRuby.chm
command.help.subsystem.*.rb=4
command.help.*.rbw=$(CurrentWord)!c:\ruby\doc\ProgrammingRuby.chm
command.help.subsystem.*.rbw=4

command.name.1.*.rb=Check Syntax
command.1.*.rb=ruby -cw $(FileNameExt)
command.name.1.*.rbw=Check Syntax
command.1.*.rbw=rubyw -cw $(FileNameExt)

command.name.2.*.rb=Code Profiler
command.2.*.rb=ruby -r profile $(FileNameExt)
command.name.2.*.rbw=Code Profiler
command.2.*.rbw=rubyw -r profile $(FileNameExt)

command.name.3.*.rb=Run irb
command.3.*.rb=irb.bat
command.subsystem.3.*.rb=2
command.name.3.*.rbw=Run irb
command.3.*.rbw=irb.bat
command.subsystem.3.*.rbw=2

command.name.4.*.rb=Debug
command.4.*.rb=ruby -d -r debug $(FileNameExt)
command.subsystem.4.*.rb=2
command.name.4.*.rbw=Debug
command.4.*.rbw= ruby -d -r debug $(FileNameExt)
command.subsystem.4.*.rbw=2
</pre>
<p>Make sure the help command points to your ruby install. That way you also get nice F1 help on any highlighted ruby syntax.</p>
<p>Important update: 22 August 2009:</p>
<p>Make sure the line 3 above reads</p>
<pre class="brush: bash;">
command.go.subsystem.*.rb=1
</pre>
<p>not <strong>&#8216;=2&#8242;</strong>, otherwise <em>stdout</em> won&#8217;t be shown back in SciTE.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/291/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=291&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/08/19/restoring-check-syntax-for-ruby-files-in-scite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>
	</item>
		<item>
		<title>Version control your automated tests, quickly, easily, today for free</title>
		<link>http://watirmelon.com/2009/08/06/version-control-your-automated-tests-quickly-easily-today-for-free/</link>
		<comments>http://watirmelon.com/2009/08/06/version-control-your-automated-tests-quickly-easily-today-for-free/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 10:55:57 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[tortoiseSVN]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=276</guid>
		<description><![CDATA[Why don&#8217;t testers version control their tests?

I am still surprised at how many organizations don&#8217;t version control their automated test scripts. I put it down to the following reasons:

Developers may use expensive version control tools, but sometimes there aren&#8217;t enough licenses for testers;
People don&#8217;t realize there are free version control tools available;
Setting up version control [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=276&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>Why don&#8217;t testers version control their tests?<br />
</strong></p>
<p>I am still surprised at how many organizations don&#8217;t version control their automated test scripts. I put it down to the following reasons:</p>
<ul>
<li>Developers may use expensive version control tools, but sometimes there aren&#8217;t enough licenses for testers;</li>
<li>People don&#8217;t realize there are free version control tools available;</li>
<li>Setting up version control might be considered too difficult for the test team;</li>
<li>Some people believe you need to own a version control server to version your test scripts; or</li>
<li>Any combination of the above.</li>
</ul>
<p>In reality:</p>
<ul>
<li>If the software developers&#8217; version control system is available for testers great, but if not, test scripts can be versioned separately;</li>
<li>There are many different free version control tools available. <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>, which uses the Subversion (SVN) protocol, is very popular and very easy to use;</li>
<li>Setting up a new SVN repository using TortoiseSVN only takes a few minutes; and</li>
<li>You can set up a SVN repository on a shared network drive, so you don&#8217;t need a server (but a server is cool).</li>
</ul>
<p><strong>How to quickly set up a new SVN respository on a shared network drive (using Windows)</strong></p>
<p>If you haven&#8217;t version controlled your test scripts yet, here&#8217;s how to do so.</p>
<ol>
<li>Download and install TortoiseSVN from <a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a> (it&#8217;s about 19MB, and requires a reboot: bummer <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  )</li>
<li>Find a location on a shared network drive where you can store your SVN repository. For example, it could be <code> Q:\SVN  Repositories </code>, create a new directory for your repository (eg. <code>Q:\SVN  Repositories\WatirMelon\</code> and right click within this new directory in Windows Explorer, and choose TortoiseSVN, and then &#8216;create repository here&#8217;. The path to your new directory will be your SVN repository path. <a href="http://watirmelon.files.wordpress.com/2009/08/create-svn-repository-here1.jpg"><img class="aligncenter size-full wp-image-281" title="Create SVN Repository Here" src="http://watirmelon.files.wordpress.com/2009/08/create-svn-repository-here1.jpg?w=360&#038;h=256" alt="Create SVN Repository Here" width="360" height="256" /></a></li>
<li>The repository should be created in a matter of seconds, and filled with some directories and files. These files/directories should<strong> never be touched, under any circumstances</strong>. <a href="http://watirmelon.files.wordpress.com/2009/08/repository-created-successfully.png"><img class="aligncenter size-full wp-image-279" title="Repository created successfully" src="http://watirmelon.files.wordpress.com/2009/08/repository-created-successfully.png?w=294&#038;h=104" alt="Repository created successfully" width="294" height="104" /></a></li>
<li>Now you need to create a local repository and check out the new repository (which will be blank initially). Create a directory on your local drive for your repository, for example <code>C:\watirmelon</code>, and right click within this directory and choose &#8216;SVN Checkout&#8217;. <a href="http://watirmelon.files.wordpress.com/2009/08/svn-checkout.png"><img class="aligncenter size-full wp-image-280" title="SVN Checkout" src="http://watirmelon.files.wordpress.com/2009/08/svn-checkout.png?w=360&#038;h=310" alt="SVN Checkout" width="360" height="310" /></a></li>
<li>You will need to specify the location of your repository you created in Step 2, but importantly <strong>you will need to add file:/// to the front, and change the backslashes into forward slashes. </strong><a href="http://watirmelon.files.wordpress.com/2009/08/checkout-dialog.jpg"><img class="aligncenter size-full wp-image-282" title="Checkout Dialog" src="http://watirmelon.files.wordpress.com/2009/08/checkout-dialog.jpg?w=360&#038;h=278" alt="Checkout Dialog" width="360" height="278" /></a></li>
<li>Once you click OK you have a repository (albeit blank) checked out. You would then simply add all your automated test scripts, then do an &#8216;SVN Add&#8217;, and &#8216;SVN commit&#8217;. If you want to use your automated tests on another machine, you simply checkout the repository following steps 4 &amp; 5 above.</li>
</ol>
<p><strong>Conclusion</strong></p>
<p>So there it is. Now there&#8217;s really no excuse not to version control your automated tests, considering it&#8217;s free, quick, easy and doesn&#8217;t require a server. So go and do it now (if you haven&#8217;t already).</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=276&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/08/06/version-control-your-automated-tests-quickly-easily-today-for-free/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/create-svn-repository-here1.jpg" medium="image">
			<media:title type="html">Create SVN Repository Here</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/repository-created-successfully.png" medium="image">
			<media:title type="html">Repository created successfully</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/svn-checkout.png" medium="image">
			<media:title type="html">SVN Checkout</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/checkout-dialog.jpg" medium="image">
			<media:title type="html">Checkout Dialog</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir Logo Refresh Competition</title>
		<link>http://watirmelon.com/2009/08/04/watir-logo-refresh-competition/</link>
		<comments>http://watirmelon.com/2009/08/04/watir-logo-refresh-competition/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 23:01:15 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Watir]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=270</guid>
		<description><![CDATA[With the launch of the new watir.com site, I thought it would be an  appropriate time to refresh the Watir logo to be included on the site  and all other Watir branded information.
The current logo (above) was designed some time ago by Jacinda Scott, and has  served Watir well, but it would [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=270&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>With the launch of the new <a href="http://watir.com">watir.com</a> site, I thought it would be an  appropriate time to refresh the Watir logo to be included on the site  and all other Watir branded information.</p>
<div id="attachment_271" class="wp-caption aligncenter" style="width: 120px"><a href="http://watirmelon.files.wordpress.com/2009/08/watir.gif"><img class="size-full wp-image-271" title="watir" src="http://watirmelon.files.wordpress.com/2009/08/watir.gif?w=110&#038;h=103" alt="Current Watir Logo by Jacinda Scott" width="110" height="103" /></a><p class="wp-caption-text">Current Watir Logo by Jacinda Scott</p></div>
<p>The current logo (above) was designed some time ago by Jacinda Scott, and has  served Watir well, but it would be great if someone in the Watir  community could propose a refresh of sorts.</p>
<p>One of the issues with the current logo is that we don&#8217;t have a high- resolution (or .svg) version, so it is hard to use the logo to full  effect.</p>
<p>There has been positive feedback about the current logo, it is round  (like the web browser icons, firefox, ie, opera, etc.) and it is blue  and &#8216;water&#8217; like.</p>
<p>I am proposing a logo redesign/refresh competition where you can take  the current logo, and propose something fresh. It would be great if it  keeps the browser-ish style with some sort of water/blue theme.</p>
<p>Once some designs have been submitted (over the next week &#8211; up until  say Sunday 9th August), I will compile these and have the Watir  community vote on what they think is the best one. The winner shall  receive all the praise and glory of having their logo redesign on the  <a href="http://watir.com">watir.com</a> site (with credits of course).</p>
<p>Please email your designs (preferably in .png and/or .svg) to alister  dot scott at gmail by 9th August.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=270&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/08/04/watir-logo-refresh-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/08/watir.gif" medium="image">
			<media:title type="html">watir</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir.com</title>
		<link>http://watirmelon.com/2009/06/25/watir-com/</link>
		<comments>http://watirmelon.com/2009/06/25/watir-com/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 03:56:30 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[FireWatir]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[watir.com]]></category>

		<guid isPermaLink="false">http://watirmelon.wordpress.com/?p=238</guid>
		<description><![CDATA[I have spent a bit of time over the last few days setting up Watir.com, hosted here on WordPress.
We were originally aiming to host our own version of Confluence and JIRA and use Confluence to serve the Watir.com homepage, but this ended up being a lot more complicated and expensive than originally planned.
The great thing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=238&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have spent a bit of time over the last few days setting up <a href="http://watir.com/">Watir.com</a>, hosted here on WordPress.</p>
<p>We were originally aiming to host our own version of Confluence and JIRA and use Confluence to serve the Watir.com homepage, but this ended up being a lot more complicated and expensive than originally planned.</p>
<p>The great thing about WordPress is, although it was originally a blogging platform, its functionality also works as a very neat CMS. Whilst wordpress.com has some limitations over wordpress.org, we can live with these limitations for now as we have a free (as in beer) hosted site that the world can see.</p>
<p>Check it out.</p>
<p><a href="http://watir.com"><img class="size-full wp-image-239 alignleft" title="watir.com" src="http://watirmelon.files.wordpress.com/2009/06/watir-com.jpg?w=450&#038;h=717" alt="watir.com" width="450" height="717" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=238&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/06/25/watir-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/06/watir-com.jpg" medium="image">
			<media:title type="html">watir.com</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir presentation @ SIGIST Brisbane on May 26</title>
		<link>http://watirmelon.com/2009/04/06/watir-presentation-sigist-brisbane-on-may-26/</link>
		<comments>http://watirmelon.com/2009/04/06/watir-presentation-sigist-brisbane-on-may-26/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 06:57:42 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Brisbane]]></category>
		<category><![CDATA[Business Driven]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[ANZTB]]></category>
		<category><![CDATA[Hilton]]></category>
		<category><![CDATA[ISTQB]]></category>
		<category><![CDATA[SIGIST]]></category>

		<guid isPermaLink="false">http://watirmelon.wordpress.com/?p=215</guid>
		<description><![CDATA[I will be presenting at a SIGIST (Special Interest Group in Software Testing) on Watir on May 26 @ the Hilton in Brisbane. Everyone is welcome to attend.

More details here.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=215&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I will be presenting at a SIGIST (Special Interest Group in Software Testing) on Watir on May 26 @ the Hilton in Brisbane. Everyone is welcome to attend.</p>
<p><a href="http://watirmelon.files.wordpress.com/2009/04/brisbane-sigist.jpg"><img class="aligncenter size-full wp-image-216" title="brisbane-sigist" src="http://watirmelon.files.wordpress.com/2009/04/brisbane-sigist.jpg?w=450&#038;h=313" alt="brisbane-sigist" width="450" height="313" /></a><br />
More details <a href="http://watirmelon.files.wordpress.com/2009/04/brisbane-sigist-invite-26-may-09.pdf">here</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=215&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/04/06/watir-presentation-sigist-brisbane-on-may-26/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/brisbane-sigist.jpg" medium="image">
			<media:title type="html">brisbane-sigist</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing Watif</title>
		<link>http://watirmelon.com/2009/04/01/introducing-watif/</link>
		<comments>http://watirmelon.com/2009/04/01/introducing-watif/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 00:35:24 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Watif]]></category>

		<guid isPermaLink="false">http://watirmelon.wordpress.com/?p=205</guid>
		<description><![CDATA[
Watif if you don&#8217;t want to learn a new language just so you can test your web app?
Watif you want to kick it old-skool with punch cards?
Watif you want a fully supported automated test solution running SAS and with in built notifications of results?

Introducing Watif
Web Application Testing in FORTRAN:
web application testing that punches!
Watif is simple
Tests [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=205&subd=watirmelon&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul>
<li><strong>Watif</strong> if you don&#8217;t want to learn a new language just so you can test your web app?</li>
<li><strong>Watif</strong> you want to kick it old-skool with punch cards?</li>
<li><strong>Watif</strong> you want a fully supported automated test solution running SAS and with in built notifications of results?</li>
</ul>
<h2 style="text-align:center;">Introducing <strong>Watif</strong></h2>
<h2 style="text-align:center;">Web Application Testing in FORTRAN:<br />
web application testing that punches!</h2>
<p><strong>Watif is simple</strong></p>
<p>Tests are created using simple, easy to use coding forms, easily followed by business analysts and end users. No more expensive test automation engineers!</p>
<div id="attachment_206" class="wp-caption aligncenter" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:FortranCodingForm.png"><img class="size-medium wp-image-206" title="watifcodingform" src="http://watirmelon.files.wordpress.com/2009/04/watifcodingform.jpg?w=300&#038;h=190" alt="Watif Coding Form" width="300" height="190" /></a><p class="wp-caption-text">Watif Coding Form</p></div>
<p><strong>Watif is automated</strong></p>
<p>Code is created automatically on punch cards using state of the art FORTRAN compilers, saving you valuable compilation time.</p>
<div id="attachment_207" class="wp-caption aligncenter" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:FortranCardPROJ039.agr.jpg"><img class="size-medium wp-image-207" title="watifcode" src="http://watirmelon.files.wordpress.com/2009/04/watifcode.jpg?w=300&#038;h=144" alt="Sample Watif code (automatically generated)" width="300" height="144" /></a><p class="wp-caption-text">Sample Watif code (automatically generated)</p></div>
<p><strong>Watif is fully supported</strong></p>
<p>Watirfort is a new company of 1,000 monkeys, available 24/7 worldwide to commercially support Watif and make it a success in your organization.</p>
<div id="attachment_208" class="wp-caption aligncenter" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:Monkey-typing.jpg"><img class="size-medium wp-image-208" title="watirfort" src="http://watirmelon.files.wordpress.com/2009/04/watirfort.jpg?w=300&#038;h=214" alt="Fully supported by Watirfort" width="300" height="214" /></a><p class="wp-caption-text">Fully supported by Watirfort</p></div>
<p><strong>Watif is SAS</strong></p>
<p>All your tests are run by Watirfort using state of the art punch card processing systems, just like salesforce.com.</p>
<div id="attachment_209" class="wp-caption aligncenter" style="width: 310px"><a href="http://watirmelon.files.wordpress.com/2009/04/watirfort-lab.jpg"><img class="size-medium wp-image-209" title="watirfort-lab" src="http://watirmelon.files.wordpress.com/2009/04/watirfort-lab.jpg?w=300&#038;h=195" alt="State of the art Watirfort labs" width="300" height="195" /></a><p class="wp-caption-text">State of the art Watirfort labs</p></div>
<p><strong>In built notification systems</strong></p>
<p>When you purchase Watif services from Watirfort, you can specifiy how many homing pigeons you would like to lease. These homing pigeons are dedicated to delivering your printed Watif output directly to you! Rapid feedback!</p>
<div id="attachment_210" class="wp-caption aligncenter" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:Bus_pigeon_loft.jpg"><img class="size-medium wp-image-210" title="watirfort-notifications" src="http://watirmelon.files.wordpress.com/2009/04/watirfort-notifications.jpg?w=300&#038;h=210" alt="Watirfort Homing Pigeons" width="300" height="210" /></a><p class="wp-caption-text">Watirfort Homing Pigeons</p></div>
<p><strong>Planned Additional Browser Support</strong></p>
<p>While Watif 1.0 only initially supports the <a href="http://en.wikipedia.org/wiki/WorldWideWeb">WorldWideWeb</a> browser, alternative browsers including Netscape Navigator 1.0 are planned for Watif 2.0.</p>
<div id="attachment_211" class="wp-caption aligncenter" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:WorldWideWeb_screenshot.gif"><img class="size-medium wp-image-211" title="worldwideweb_screenshot" src="http://watirmelon.files.wordpress.com/2009/04/worldwideweb_screenshot.jpg?w=300&#038;h=222" alt="WorldWideWeb fully supported!" width="300" height="222" /></a><p class="wp-caption-text">WorldWideWeb fully supported!</p></div>
<p style="text-align:left;"><strong>Quotes</strong></p>
<blockquote>
<p style="text-align:left;">&#8220;I wanted to run around my office <strong>punching</strong> my hands in the air.&#8221;   -   Bec Ferguson</p>
</blockquote>
<h2 style="text-align:center;"><strong>Watif is available for immediate release.</strong></h2>
<p style="text-align:center;">Order now and get a bonus FORTRAN book.</p>
<p style="text-align:center;"><a href="http://en.wikipedia.org/wiki/File:Fortran_acs_cover.jpeg"><img class="aligncenter size-medium wp-image-212" title="469px-fortran_acs_cover" src="http://watirmelon.files.wordpress.com/2009/04/469px-fortran_acs_cover.jpeg?w=234&#038;h=300" alt="469px-fortran_acs_cover" width="234" height="300" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&blog=2177915&post=205&subd=watirmelon&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2009/04/01/introducing-watif/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344eed26ff913de38b45620d18eed695?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">eclectic</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/watifcodingform.jpg?w=300" medium="image">
			<media:title type="html">watifcodingform</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/watifcode.jpg?w=300" medium="image">
			<media:title type="html">watifcode</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/watirfort.jpg?w=300" medium="image">
			<media:title type="html">watirfort</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/watirfort-lab.jpg?w=300" medium="image">
			<media:title type="html">watirfort-lab</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/watirfort-notifications.jpg?w=300" medium="image">
			<media:title type="html">watirfort-notifications</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/worldwideweb_screenshot.jpg?w=300" medium="image">
			<media:title type="html">worldwideweb_screenshot</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2009/04/469px-fortran_acs_cover.jpeg?w=234" medium="image">
			<media:title type="html">469px-fortran_acs_cover</media:title>
		</media:content>
	</item>
	</channel>
</rss>