<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>WatirMelon</title>
	<atom:link href="http://watirmelon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://watirmelon.com</link>
	<description>A 93% Watir Based Blog by Alister Scott</description>
	<lastBuildDate>Fri, 25 May 2012 15:18:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='watirmelon.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/c9de640b304257bb2361e16d95fec265?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>WatirMelon</title>
		<link>http://watirmelon.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://watirmelon.com/osd.xml" title="WatirMelon" />
	<atom:link rel='hub' href='http://watirmelon.com/?pushpress=hub'/>
		<item>
		<title>Web element extensions in C# that I find useful</title>
		<link>http://watirmelon.com/2012/05/15/web-element-extensions-in-c-that-i-find-useful/</link>
		<comments>http://watirmelon.com/2012/05/15/web-element-extensions-in-c-that-i-find-useful/#comments</comments>
		<pubDate>Tue, 15 May 2012 11:57:16 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[WebDriver]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1289</guid>
		<description><![CDATA[I really miss the Watir API when working with WebDriver in C#. Whilst the C# WebDriver bindings are fantastic (thanks Se team!), simple things I like to do with the Watir API aren&#8217;t present, so I find myself writing web &#8230; <a href="http://watirmelon.com/2012/05/15/web-element-extensions-in-c-that-i-find-useful/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1289&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I really miss the Watir API when working with WebDriver in C#. Whilst the C# WebDriver bindings are fantastic (thanks Se team!), simple things I like to do with the Watir API aren&#8217;t present, so I find myself writing web element extension methods to make my life easier (and code cleaner). Here&#8217;s some of my favourites: (wouldn&#8217;t it be neat to see them in WebDriver one day. I can dream&#8230;)</p>
<p><strong>IWebElement.Set(text)</strong></p>
<p>I have always found <em>.SendKeys</em> to be an unusual method, as I haven&#8217;t come across an instance where I want to fire keys at a field instead of just setting it to a value. So <em>.Set(text)</em> is usually one of the first web element extensions that I write:</p>
<p><pre class="brush: csharp; collapse: true; highlight: [9,29]; light: false; toolbar: true;">
namespace WebDriverExtensions
{
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using OpenQA.Selenium;
  using OpenQA.Selenium.Firefox;
  
  public static class WebElementExtensions
  {
    public static void Set(this IWebElement e, string text)
    {
      e.Clear();
      e.SendKeys(text);
    }
  }
  
  [TestClass]
  public class ExtensionUnitTests
  {
    [TestMethod]
    public void SetTextField()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,&lt;input type=\&quot;text\&quot; id=\&quot;t\&quot; /&gt;&quot;);
      var textField = driver.FindElement(By.Id(&quot;t&quot;));
      textField.SendKeys(&quot;a&quot;);
      Assert.AreEqual(&quot;a&quot;, textField.GetAttribute(&quot;value&quot;));
      textField.SendKeys(&quot;b&quot;);
      Assert.AreEqual(&quot;ab&quot;, textField.GetAttribute(&quot;value&quot;));
      textField.Set(&quot;b&quot;);
      Assert.AreEqual(&quot;b&quot;, textField.GetAttribute(&quot;value&quot;));
      driver.Quit();
    }
  }
}
</pre></p>
<p><strong>SelectElement.SelectBySubText(subText)</strong></p>
<p>The Selenium Support library provides some useful select element specific methods, but unfortunately the .SelectByText(partial) method <a href="http://stackoverflow.com/questions/10133790/using-selectbytext-partial-with-c-sharp-selenium-webdriver-bindings-doesnt-se">doesn&#8217;t select by subtext</a> (as advertised), so I wrote a .SelectBySubText(subText) method to actually do this.</p>
<p><pre class="brush: csharp; collapse: true; highlight: [11,34]; light: false; toolbar: true;">
namespace WebDriverExtensions
{
  using System.Linq;
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using OpenQA.Selenium;
  using OpenQA.Selenium.Firefox;
  using OpenQA.Selenium.Support.UI;
  
  public static class WebElementExtensions
  {
    public static string SelectBySubText(this SelectElement me, string subText)
    {
      foreach (var option in me.Options.Where(option =&amp;gt; option.Text.Contains(subText)))
      {
        var optionText = option.Text;
        option.Click();
        return optionText;
      }
      me.SelectByText(subText);
      return subText;
    }
  }
  
  public class ExtensionUnitTests
  {
    [TestMethod]
    public void SelectBySubTextTest()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,VolvoSaab&quot;);
      var selectList = new SelectElement(driver.FindElement(By.Id(&quot;cars&quot;)));
      selectList.SelectByText(&quot;Volvo&quot;);
      Assert.AreEqual(selectList.SelectedOption.Text, &quot;Volvo&quot;);
      selectList.SelectBySubText(&quot;Saa&quot;);
      Assert.AreEqual(selectList.SelectedOption.Text, &quot;Saab&quot;);
      driver.Quit();
    }
  }
}
</pre></p>
<p><strong>IWebElement.FindVisibleElement(by) and IWebElement.VisibleElementExists(by)</strong></p>
<p>Web Apps I test often hide elements that are available to use, but unfortunately WebDriver still locates these (even though it won&#8217;t allow you to interact with them). So, I wrote two extensions: one to only find an element matching a selector that is visible, and another to check if a visible element exists matching a selector.</p>
<p><pre class="brush: csharp; collapse: true; highlight: [11,21,40,51,60]; light: false; toolbar: true;">
namespace WebDriverExtensions
{
  using System;
  using System.Linq;
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using OpenQA.Selenium;
  using OpenQA.Selenium.Firefox;
  
  public static class WebElementExtensions
  {
    public static IWebElement FindVisibleElement(this IWebDriver driver, By by)
    {
      var elements = driver.FindElements(by);
      foreach (var element in elements.Where(e =&gt; e.Displayed))
      {
        return element;
      }
      throw new NoSuchElementException(&quot;Unable to find visible element with &quot; + @by);
    }

    public static bool VisibleElementExists(this IWebDriver driver, By by, Int32 implicitWait=10)
    {
      driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 0));
      var elements = driver.FindElements(by);
      var visibleElements = elements.Count(e =&gt; e.Displayed);
      driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, implicitWait));
      return visibleElements != 0;
    }
  }

  public class ExtensionUnitTests
  {
    [TestMethod]
    public void FindVisibleElements()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,&lt;input  type=\&quot;hidden\&quot; class=\&quot;myfield\&quot; name=\&quot;date-submitted\&quot; value=\&quot;Hidden\&quot;&gt;&lt;input class=\&quot;myfield\&quot; name=\&quot;date-submitted\&quot; value=\&quot;Visible\&quot;&gt;&quot;);
      var textField = driver.FindElement(By.ClassName(&quot;myfield&quot;));
      Assert.IsFalse(textField.Displayed);
      var visibleTextField = driver.FindVisibleElement(By.ClassName(&quot;myfield&quot;));
      Assert.IsTrue(visibleTextField.Displayed);
      Assert.AreEqual(&quot;Visible&quot;, visibleTextField.GetAttribute(&quot;value&quot;));
      driver.Quit();
    }
    
    [TestMethod]
    public void VisibleElementExists()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,&lt;input  type=\&quot;hidden\&quot; class=\&quot;myfield\&quot; name=\&quot;date-submitted\&quot; value=\&quot;Hidden\&quot;&gt;&lt;input class=\&quot;myfield\&quot; name=\&quot;date-submitted\&quot; value=\&quot;Visible\&quot;&gt;&quot;);
      Assert.IsTrue(driver.VisibleElementExists(By.ClassName(&quot;myfield&quot;)));
      driver.Quit();
    }
    
    [TestMethod]
    public void VisibleElementDoesNotExist()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,&lt;input  type=\&quot;hidden\&quot; class=\&quot;myfield\&quot; name=\&quot;date-submitted\&quot; value=\&quot;Hidden\&quot;&gt;&quot;);
      Assert.IsFalse(driver.VisibleElementExists(By.ClassName(&quot;myfield&quot;)));
      driver.Quit();
    }
  }
}
</pre></p>
<p><strong>Summary</strong></p>
<p>These are some web element extensions that I find useful. Do you have any? What would you like to see built into WebDriver?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1289/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1289&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/05/15/web-element-extensions-in-c-that-i-find-useful/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">alisterscott</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing your own WebDriver selectors in C#</title>
		<link>http://watirmelon.com/2012/05/15/writing-your-own-webdriver-selectors-in-c/</link>
		<comments>http://watirmelon.com/2012/05/15/writing-your-own-webdriver-selectors-in-c/#comments</comments>
		<pubDate>Tue, 15 May 2012 03:27:00 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Watir-WebDriver]]></category>
		<category><![CDATA[WebDriver]]></category>
		<category><![CDATA[by]]></category>
		<category><![CDATA[selectors]]></category>
		<category><![CDATA[selenium2]]></category>
		<category><![CDATA[webdriver]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1286</guid>
		<description><![CDATA[I am working on a C# project at the moment, writing tests using WebDriver, and one of the things I miss most about Watir-WebDriver is its variety of selectors, for example, being able to specify a value for value. Since &#8230; <a href="http://watirmelon.com/2012/05/15/writing-your-own-webdriver-selectors-in-c/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1286&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am working on a C# project at the moment, writing tests using WebDriver, and one of the things I miss most about Watir-WebDriver is its variety of selectors, for example, being able to specify a value for <em>value</em>. Since the application I am testing uses <em>value</em> a huge amount, I started using a css selector for each element I was interacting with:</p>
<p><pre class="brush: csharp; light: true;">
var driver = new FirefoxDriver();
driver.Navigate().GoToUrl(&quot;data:text/html,&lt;div value=\&quot;Home\&quot;&gt;Home&lt;/div&gt;&quot;);
var divByCss = driver.FindElement(By.CssSelector(&quot;[value=\&quot;Home\&quot;]&quot;));
</pre></p>
<p>But I got sick of typing out this fairly unattractive CSS selector each time I came across a new element.</p>
<p>I wanted to write an extension method so that I can use something like <em>By.Value(&#8220;Home&#8221;)</em> instead of <em>By.CssSelector(&#8230;)</em> but soon realized that you can&#8217;t write extension methods for static classes in C#, as <a href="http://stackoverflow.com/questions/1188224/how-do-i-extend-a-class-with-c-sharp-extension-methods">you need an instance of the class to extend</a>.</p>
<p>So, instead of extending the original <em>By</em> class, I wrote my own custom <em>MyBy</em> class that I can use in addition to the original.</p>
<p><pre class="brush: csharp;">
namespace WebDriverExtensions
{
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using OpenQA.Selenium;
  using OpenQA.Selenium.Firefox;

  public static class MyBy
  {
    public static By Value(string text)
    {
      return By.CssSelector(&quot;[value=\&quot;&quot; + text + &quot;\&quot;]&quot;);
    }
  }

  [TestClass]
  public class WebElementExtensionTests
  {
    [TestMethod]
    public void ByValue()
    {
      var driver = new FirefoxDriver();
      driver.Navigate().GoToUrl(&quot;data:text/html,&lt;div value=\&quot;Home\&quot;&gt;Home&lt;/div&gt;&quot;);
      var divByValue = driver.FindElement(MyBy.Value(&quot;Home&quot;));
      var divByCss = driver.FindElement(By.CssSelector(&quot;[value=\&quot;Home\&quot;]&quot;));
      Assert.AreEqual(divByCss, divByValue);
      Assert.AreEqual(&quot;Home&quot;, divByValue.Text);
      Assert.AreEqual(&quot;Home&quot;, divByValue.GetAttribute(&quot;value&quot;));
      driver.Quit();
    }
  }
}
</pre></p>
<p>I think this solves the problem fairly nicely. Do you do something similar? Is there a better way?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1286&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/05/15/writing-your-own-webdriver-selectors-in-c/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">alisterscott</media:title>
		</media:content>
	</item>
		<item>
		<title>Worst security questions&#8230; ever.</title>
		<link>http://watirmelon.com/2012/04/20/worst-security-questions-ever/</link>
		<comments>http://watirmelon.com/2012/04/20/worst-security-questions-ever/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 11:51:17 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1276</guid>
		<description><![CDATA[I went to buy an old TZU album on iTunes tonight and was asked to enter my iTunes password twice, followed by this weird &#8216;Security Info&#8217; screen I had never seen before. This is the full list of questions and &#8230; <a href="http://watirmelon.com/2012/04/20/worst-security-questions-ever/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1276&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I went to buy an old <a href="http://en.wikipedia.org/wiki/TZU">TZU</a> album on iTunes tonight and was asked to enter my iTunes password twice, followed by this weird &#8216;Security Info&#8217; screen I had never seen before.</p>
<p><a href="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-16-36-pm.png"><img class="alignnone size-full wp-image-1278" title="Screen Shot 2012-04-20 at 9.16.36 PM" src="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-16-36-pm.png?w=584&h=304" alt="" width="584" height="304" /></a></p>
<p>This is the full list of questions and my responses</p>
<p><strong>Question 1 requires you to select an answer from one of the following questions:</strong></p>
<ul>
<li><strong>What was the first car you owned?</strong> The first car I owned was a 1996 White Ford Falcon Panelvan I called &#8216;Panno&#8217;. So, should I enter &#8216;Ford Falcon&#8217;, or &#8216;Ford Falcon Panelvan&#8217; or even &#8216;Ford Falcon Panel Van&#8217;, or maybe for fun &#8216;Panno the White Ford Falcon&#8217;? What&#8217;s the chance that at some point I&#8217;ll correctly recall what I specifically entered?</li>
<li><strong>Who was your first teacher?</strong> I seriously can&#8217;t remember who my first teacher was. Was it my kindergarten teacher?  Or is it my first school teacher? Unless you&#8217;re under 18, I doubt you&#8217;d remember your first teacher either.</li>
<li><strong>What was the first album you owned? </strong>Surely if anyone Apple would know you don&#8217;t actually <em>own</em> an album, you only own a <em>license to listen to it</em>.</li>
<li><strong>Where was your first job?</strong> Was this when I helping my parents out in their Cafe when I was 12? Or was it when I was at Uni? Or my first &#8216;real job&#8217;?</li>
<li><strong>In which city were you first kissed?</strong> By my parents when I was a baby? On the cheek by the girl in Year 2? Or was it my first pash in high school?</li>
</ul>
<p><strong>Question 2 requires you to select an answer from one of the following questions:</strong></p>
<ul>
<li><strong>Which of the cars you’ve owned has been your favourite?</strong> I would say my Ford Falcon Panelvan but Apple won&#8217;t let me! My first car can&#8217;t be my favourite! Ahhhhhhh! The horror!<a href="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-21-26-pm.png"><img class="alignnone size-full wp-image-1280" title="Screen Shot 2012-04-20 at 9.21.26 PM" src="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-21-26-pm.png?w=584&h=109" alt="" width="584" height="109" /></a></li>
<li><strong>Who was your favourite teacher?</strong> Again, Apple won&#8217;t let me say my first teacher was my favourite teacher, and even though I might remember the name of my favourite teacher, I don&#8217;t remember exactly: was it &#8216;Ms Dwyer&#8217;, or was that &#8216;Mrs Dwyer&#8217;, or &#8216;Sherry Dwyer&#8217; I think her name was.</li>
<li><strong>What was the first concert you attended? </strong>I think my parents took me to a Play School Concert when I was 5. Does that count?</li>
<li><strong>Where was your favourite job? </strong>The recollection of my favourite job today will probably not be my recollection of my favorite job when I need to reset my password in 5 years time.</li>
<li><strong>Who was your best childhood friend?</strong> Again, do I write &#8216;Tim&#8217; or &#8216;Tim Rose&#8217; or I think his actual name was &#8216;Timothy Rose&#8217;</li>
</ul>
<p><strong>Question 3 requires you to select an answer from one of the following questions:</strong></p>
<ul>
<li><strong>Which of the cars you’ve owned has been your least favourite?</strong> Well, it was actually my Ford Falcon Panelvan, because whilst it was a fantastically practical and fun car, it was expensive to run and maintain. But Apple <a href="http://en.wikipedia.org/wiki/Carol_Beer">says no</a>, my first car can&#8217;t be my favourite car, and my favourite car can&#8217;t be my least favourite car.</li>
<li><strong>Who was your least favourite teacher?</strong> I can&#8217;t remember the bastard&#8217;s name.</li>
<li><strong>Where was your least favourite job? </strong>Because every job I take from now can&#8217;t be my least favourite.</li>
<li><strong>In which city did your mother and father meet? </strong>FFS, seriously? Was it Sydney? Or Glebe <em>in</em> Sydney? Or it might have been Tamworth. But that&#8217;s not really a city, it&#8217;s more of a <em>town</em>.</li>
<li><strong>Where were you on January 1, 2000? </strong>I am sorry but I have no idea, I could have spent the weekend in Sydney, but again, I wouldn&#8217;t know.</li>
</ul>
<p>What a ridiculous set of questions. I thought Apple were notorious for sweating the small stuff, but from this set of questions it&#8217;s obvious they have no clue what they&#8217;re doing.</p>
<p>I can&#8217;t answer those questions so instead I&#8217;ll click &#8216;cancel&#8217; and maybe go and buy that record in a record store tomorrow. That, or fire up bit-torrent, it&#8217;s just less painful.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1276&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/04/20/worst-security-questions-ever/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">alisterscott</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-16-36-pm.png" medium="image">
			<media:title type="html">Screen Shot 2012-04-20 at 9.16.36 PM</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-20-at-9-21-26-pm.png" medium="image">
			<media:title type="html">Screen Shot 2012-04-20 at 9.21.26 PM</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Watir-WebDriver with Safari (at last!)</title>
		<link>http://watirmelon.com/2012/04/17/using-watir-webdriver-with-safari-at-last/</link>
		<comments>http://watirmelon.com/2012/04/17/using-watir-webdriver-with-safari-at-last/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 12:00:38 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Watir-WebDriver]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1270</guid>
		<description><![CDATA[Well, it&#8217;s official: Watir-WebDriver now supports Safari thanks to the release of SafariDriver. The downside is the set up is quite lengthy at the moment as it requires a Safari extension (version 5+) and until someone publishes the extension to &#8230; <a href="http://watirmelon.com/2012/04/17/using-watir-webdriver-with-safari-at-last/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1270&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s official: Watir-WebDriver <a href="http://watirwebdriver.com/safari/">now supports</a> Safari thanks to the release of <a href="http://code.google.com/p/selenium/wiki/SafariDriver">SafariDriver</a>.</p>
<p>The downside is the set up is quite lengthy at the moment as it requires a Safari extension (version 5+) and until someone publishes the extension to the online gallery, you&#8217;ll have to build it yourself.</p>
<p><strong>Steps to build the extension</strong></p>
<ol>
<li>First, <a href="https://developer.apple.com/certificates/index.action">create and install a Safari extension</a> certificate at Apple. You&#8217;ll need to sign up for a (free) Safari developer account, and download your certificate locally.<img class="alignnone size-full wp-image-1271" title="Safari Extension Cert" src="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-17-at-9-43-06-pm.png?w=584&h=184" alt="" width="584" height="184" /></li>
<li>Now, you&#8217;ll need to build the extension. First, you&#8217;ll need to check out the selenium source code to do so:
<pre>svn co http://selenium.googlecode.com/svn/trunk selenium</pre>
</li>
<li>Then change into this directory and build the extension
<pre>cd selenium
./go safari</pre>
</li>
<li>Finally, install your extension:
<ol>
<li>Launch Safari</li>
<li>Ensure develop menu is shown by setting it in Advanced Preferences <img class="alignnone size-medium wp-image-1272" title="Develop" src="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-17-at-9-52-49-pm.png?w=300&h=169" alt="" width="300" height="169" /></li>
<li>Open the Extension Builder (Develop &gt; Show Extension Builder)</li>
<li>Add your new extension from: <code>$SELENIUM_CHECKOUT_LOCATION/build/javascript/safari-driver/SafariDriver.safariextension</code></li>
</ol>
</li>
</ol>
<p><strong>Using Safari with Watir-WebDriver</strong></p>
<p>It&#8217;s exactly the same as any other browser:</p>
<p><pre class="brush: ruby; light: true;">
require 'watir-webdriver'
b = Watir::Browser.new :safari
</pre></p>
<p><strong>Caveat Emptor</strong></p>
<ul>
<li>browser.execute_script is a little flakey</li>
<li>Can&#8217;t use local html files as extensions don&#8217;t load</li>
<li>Not sure how to configure browser options programatically like user agent strings</li>
</ul>
<p>Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1270&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/04/17/using-watir-webdriver-with-safari-at-last/feed/</wfw:commentRss>
		<slash:comments>11</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">alisterscott</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-17-at-9-43-06-pm.png" medium="image">
			<media:title type="html">Safari Extension Cert</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/04/screen-shot-2012-04-17-at-9-52-49-pm.png?w=300" medium="image">
			<media:title type="html">Develop</media:title>
		</media:content>
	</item>
		<item>
		<title>Five page object anti-patterns</title>
		<link>http://watirmelon.com/2012/04/01/five-page-object-anti-patterns/</link>
		<comments>http://watirmelon.com/2012/04/01/five-page-object-anti-patterns/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 10:49:49 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Page Objects]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[anti-patterns]]></category>
		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1253</guid>
		<description><![CDATA[I&#8217;ve observed some page object anti-patterns which commonly arise when starting out designing end-to-end automated tests. Chris McMahon recently asked for some feedback on his initial test spike for Wikipedia, and some of these anti-patterns were present. Anti-pattern one: frequently &#8230; <a href="http://watirmelon.com/2012/04/01/five-page-object-anti-patterns/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1253&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve observed some page object anti-patterns which commonly arise when starting out designing end-to-end automated tests. Chris McMahon recently asked for some feedback on his initial <a href="https://github.com/chrismcmahon/Page-Object-WMF-spike">test spike for Wikipedia</a>, and some of these anti-patterns were present.</p>
<p><strong>Anti-pattern one: frequently opening and closing browsers</strong></p>
<p>I often see both RSpec and Cucumber tests frequently opening and closing browsers. This slows down test execution times, and should be avoided unless absolutely necessary.</p>
<p>You can clear cookies between tests if you&#8217;re worried about state.</p>
<p>To open and close the browser only once in <strong>Cucumber</strong>, specify this in your <em>env.rb</em> file:</p>
<p><pre class="brush: ruby; light: true;">
browser = Watir::Browser.new

Before do
  @browser = browser
end

at_exit do
  browser.close
end
</pre></p>
<p>To open and close the browser only once in <strong>RSpec:<br />
</strong></p>
<p><pre class="brush: ruby; light: true;">
browser = Watir::Browser.new

RSpec.configure do |config|
  config.before(:each) { @browser = browser }
  config.after(:suite) { browser.close }
end
</pre></p>
<p><strong>Anti-pattern two: hard coding URLs on page classes</strong></p>
<p><strong></strong>Chances are you&#8217;ll at some point run your automated tests in different environments, even if it&#8217;s just to verify that production has been updated correctly. If you&#8217;ve hard coded URLs in page classes, this can be problematic.</p>
<p>Fortunately it&#8217;s easy to avoid, by creating a module that contains base URLs which can be accessed by page classes. These base URLs can be stored in YAML files which can be switched for different environments.</p>
<p><pre class="brush: ruby; light: true;">
module Wikipedia
  BASE_URL = 'https://en.wikipedia.org'
end

class BogusPage
  include PageObject
  page_url &quot;#{Wikipedia::BASE_URL}/wiki/Bogus_page&quot;
end
</pre></p>
<p><strong>Anti-pattern three: pages stored as instance variables in steps or rspec specs</strong></p>
<p>I don&#8217;t like seeing pages stored as instance variables (those starting with an @) in Cucumber steps or RSpec specs, as it introduces state and thus more room for error.</p>
<p>If you&#8217;re using the page-object gem, there are two methods available to access pages directly without using instance variables: <strong>visit_page</strong> and <strong>on_page</strong> (also <strong>visit</strong> or <strong>on</strong> from 0.6.4+). Both of these can be used as blocks, so you can perform multiple actions within these methods.</p>
<p><pre class="brush: ruby; light: true;">
visit LoginPage do |page|
  page.login_with('foo', 'badpass')
  page.text.should include &quot;Login error&quot;
  page.text.should include &quot;Secure your account&quot;
end
</pre></p>
<p><strong>Anti-pattern four: checking the entire page contains some text somewhere</strong></p>
<p>I often see people checking that the entire web page contains some expected text. Even if the text was at the very bottom of the page hidden in the footer the test would probably pass.</p>
<p>You should check the text is where it should be, using a container that it should belong to. Ideally a span or a div may exist that contains the exact text, but even if it&#8217;s in a slightly larger container it is still better than asserting it exists <em>somewhere</em> on the page.</p>
<p><pre class="brush: ruby; light: true;">
class BogusPage
  include PageObject
  cell :main_text, :class =&gt; 'mbox-text'
end

visit_page BogusPage do |page|
  page.main_text.should include 'Wikipedia does not have an article with this exact name'
  page.main_text.should include 'Other reasons this message may be displayed'
end
</pre></p>
<p><strong>Anti-pattern five: using RSpec for end-to-end tests</strong></p>
<p>This one is contentious, and I am sure I&#8217;ll get lots of opinions to the contrary, but I believe that RSpec is best suited to unit/integration tests, and Cucumber is suited to end-to-end tests.</p>
<p>I find I create duplication when trying to do end-to-end tests in RSpec, which is where Cucumber step definitions come in. Trying to do unit tests in Cucumber seems like too much overhead, and in my opinion is more suited to RSpec.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1253/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1253&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/04/01/five-page-object-anti-patterns/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">alisterscott</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir-page-helper has been end-of-lifed</title>
		<link>http://watirmelon.com/2012/03/29/watir-page-helper-has-been-end-of-lifed/</link>
		<comments>http://watirmelon.com/2012/03/29/watir-page-helper-has-been-end-of-lifed/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 03:15:07 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Page Objects]]></category>
		<category><![CDATA[page objects]]></category>
		<category><![CDATA[page-object]]></category>
		<category><![CDATA[watir-page-helper]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1240</guid>
		<description><![CDATA[Intro I am happy to announce that the watir-page-helper gem has been end-of-lifed: meaning no further development will happen on it and it will remain as it stands. I am thoroughly supportive of Cheezy&#8217;s page-object gem and recommend you move &#8230; <a href="http://watirmelon.com/2012/03/29/watir-page-helper-has-been-end-of-lifed/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1240&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Intro</strong></p>
<p>I am happy to announce that the <a href="http://rubygems.org/gems/watir-page-helper">watir-page-helper</a> gem has been <a href="http://en.wikipedia.org/wiki/End-of-life_%28product%29">end-of-lifed</a>: meaning no further development will happen on it and it will remain as it stands. I am thoroughly supportive of <a href="http://www.cheezyworld.com/">Cheezy&#8217;s</a> <a href="http://rubygems.org/gems/page-object">page-object</a> gem and recommend you move onto this when you have the first opportunity to do so.</p>
<p><strong>Background</strong></p>
<p>When I initially released this gem, Cheezy had yet to release his page-object gem. I borrowed a lot of his concepts and packaged them into a gem specifically for watir-webdriver. A few weeks later, Cheezy released his page-object gem that not only supports watir-webdriver, but also selenium-webdriver. He has iterated faster than I have and his gem has come along way to support additional features such as defining page-routes and default data. I have supplied a couple of tiny pull requests to him and there is nothing now that watir-page-helper can offer that page-object can&#8217;t, so I am EOL&#8217;ing watir-page-helper.</p>
<p><strong>So how do I change to use page-object instead of watir-page-helper?</strong></p>
<p>I converted an existing suite of tests that use watir-page-helper to run against Etsy to use the page-object gem (<a href="https://github.com/alisterscott/etsy-page-object-demo">link to tests</a>). It was a fairly straightforward task, and here are the fundamental differences:</p>
<ul>
<li>Accessing an actual element object is done via an _element suffix: for example, defining a link :home, provides a home_element method. Watir-page-helper provided a home_link method, and I prefer Cheezy&#8217;s approach (the home_link method is actually supported by page-object but you should move away from it).</li>
<li>Watir-page-helper supported p,li,ol as methods, but these are defined as paragraph, list_item, and ordered_list in page-object.</li>
</ul>
<p><strong>Using Cheezy&#8217;s Page Factory</strong></p>
<p>One of the neat features of the page-object gem is the <a href="https://github.com/cheezy/page-object/wiki/Creating-and-using-page-objects">page factory</a>. This is a way to conveniently access pages from Cucumber steps and the like.</p>
<p>There are a couple of things you need to do:</p>
<p>In env.rb, you should mix in the PageObject::PageFactory module</p>
<p><pre class="brush: ruby; light: true;">
require 'page-object/page_factory'
World(PageObject::PageFactory)
</pre></p>
<p>You then have access to helper methods to visit and set the page you want to use (originally there were just <em>visit_page</em>, and <em>on_page</em>, but I added <em>on</em> and <em>visit</em> &#8211; I think they read nicer):</p>
<p><pre class="brush: ruby; light: true;">
visit_page RegistrationPage
on_page HomePage
visit HomePage
on HomePage
</pre></p>
<p><strong>Summary</strong></p>
<p>Good things come to an end and get replaced by even better things. Here&#8217;s to your future success using the page-object gem.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1240&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/03/29/watir-page-helper-has-been-end-of-lifed/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">alisterscott</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing Einstien: the minesweeper robot</title>
		<link>http://watirmelon.com/2012/03/27/introducing-einstien-the-minesweeper-robot/</link>
		<comments>http://watirmelon.com/2012/03/27/introducing-einstien-the-minesweeper-robot/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 23:49:32 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[minesweeper]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1230</guid>
		<description><![CDATA[As part of the Test Automation Bazaar, I thought it would be fun to have a minesweeper robot contest. Scott Sims was the &#8216;default&#8217; winner as he had the only entry, an early interation of his own minesweeper robot that &#8230; <a href="http://watirmelon.com/2012/03/27/introducing-einstien-the-minesweeper-robot/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1230&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As part of the Test Automation Bazaar, I thought it would be fun to have a minesweeper robot contest.</p>
<p><a href="http://scottcsims.com/wordpress/">Scott Sims</a> was the &#8216;default&#8217; winner as he had the only entry, an early interation of his own minesweeper robot that can win beginner level, but not much more.</p>
<p>A colleague of mine, Mark Ryall, and myself developed our own robot &#8216;Einstein&#8217; and here are some <a href="https://docs.google.com/presentation/pub?id=1zdqZfXU-mUmfrPMn0Z8M0mvgh0PJVAuJXfrp3TQCLqU&amp;start=false&amp;loop=false&amp;delayms=3000">slides</a> and a video* about him. You can check him out on <a href="https://github.com/minesweeper/minesweeper-robot">github</a>.</p>
<p><strong>Video</strong></p>
<span style="text-align:center; display: block;"><a href="http://watirmelon.com/2012/03/27/introducing-einstien-the-minesweeper-robot/"><img src="http://img.youtube.com/vi/_XWJlfKwrEs/2.jpg" alt="" /></a></span>
<p>* Soundtrack courtesy of <a href="http://soundcloud.com/blaketothefuture/nyan-cat-the-movie">blakerobinson</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1230/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1230&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/03/27/introducing-einstien-the-minesweeper-robot/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">alisterscott</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing webdriver-user-agent gem: a quick way to run ruby webdriver tests emulating mobile devices</title>
		<link>http://watirmelon.com/2012/03/27/introducing-webdriver-user-agent-gem-a-quick-way-to-run-ruby-webdriver-tests-emulating-mobile-devices/</link>
		<comments>http://watirmelon.com/2012/03/27/introducing-webdriver-user-agent-gem-a-quick-way-to-run-ruby-webdriver-tests-emulating-mobile-devices/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 22:28:01 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Watir-WebDriver]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1223</guid>
		<description><![CDATA[Update: As @David points out below, Chrome window resizing does not seem to work at all on Windows. I am not sure why but I will update this blog if I fix this issue. After chatting to Jari Bakken at &#8230; <a href="http://watirmelon.com/2012/03/27/introducing-webdriver-user-agent-gem-a-quick-way-to-run-ruby-webdriver-tests-emulating-mobile-devices/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1223&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> As @David points out below, Chrome window resizing does not seem to work at all on Windows. I am not sure why but I will update this blog if I fix this issue.</p>
<p>After chatting to Jari Bakken at the Test Automation Bazaar in Austin, I wrote and released the <a href="https://github.com/alisterscott/webdriver-user-agent">webdriver-user-agent</a> <a href="http://rubygems.org/gems/webdriver-user-agent">gem</a>.</p>
<p>I&#8217;m not convinced that running your automated functional tests on real or emulated mobile devices will yeild the appropriate defects for effort involved, so this gem makes it simple to run yourwatir-webdriver or selenium-webdriver tests on real browsers (:firefox and :chrome) but using mobile device user agents and resolutions, so your app thinks they&#8217;re a mobile device.</p>
<p><strong>Installation</strong></p>
<p>Add this line to your application&#8217;s Gemfile:</p>
<pre>gem 'webdriver-user-agent'</pre>
<p>And then execute:</p>
<pre>$ bundle</pre>
<p>Or install it yourself as:</p>
<pre>$ gem install webdriver-user-agent</pre>
<p><strong>Examples</strong></p>
<p>An example script in selenium-webdriver:</p>
<p><pre class="brush: ruby; light: true;">
require 'selenium-webdriver'
require 'webdriver-user-agent'
driver = UserAgent.driver(:browser =&gt; :chrome, :agent =&gt; :iphone, :orientation =&gt; :landscape)
driver.get 'http://tiffany.com'
driver.current_url.should == 'http://m.tiffany.com/International.aspx'
</pre></p>
<p>and another example script in watir-webdriver:</p>
<p><pre class="brush: ruby; light: true;">
require 'watir-webdriver'
require 'webdriver-user-agent'
driver = UserAgent.driver(:browser =&gt; :chrome, :agent =&gt; :iphone, :orientation =&gt; :landscape)
browser = Watir::Browser.new driver
browser.goto 'tiffany.com'
browser.url.should == 'http://m.tiffany.com/International.aspx' 
</pre></p>
<p>The available options are:</p>
<ul>
<li>:browser
<ul>
<li>:firefox (default)</li>
<li>:chrome</li>
</ul>
</li>
<li>:agent
<ul>
<li>:iphone (default)</li>
<li>:ipad</li>
<li>:android_phone</li>
<li>:android_tablet</li>
</ul>
</li>
<li>:orientation
<ul>
<li>:portrait (default)</li>
<li>:landscape</li>
</ul>
</li>
</ul>
<p>This is what the screenshots look like:</p>
<p><strong>Tiffany.com in iPhone portrait</strong></p>
<p><a href="http://watirmelon.files.wordpress.com/2012/03/iphone.png"><img class="alignnone size-full wp-image-1225" title="iphone" src="http://watirmelon.files.wordpress.com/2012/03/iphone.png?w=584" alt=""   /></a></p>
<p><strong>Tiffany.com in iPad landscape</strong></p>
<p><a href="http://watirmelon.files.wordpress.com/2012/03/ipad.png"><img class="alignnone size-full wp-image-1226" title="ipad" src="http://watirmelon.files.wordpress.com/2012/03/ipad.png?w=584&h=389" alt="" width="584" height="389" /></a><br />
<strong><br />
Summary</strong></p>
<p>I think this will be a useful gem for those wanting to test mobile device functionality without having to set up complex infrastructure.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1223&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/03/27/introducing-webdriver-user-agent-gem-a-quick-way-to-run-ruby-webdriver-tests-emulating-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>14</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">alisterscott</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/03/iphone.png" medium="image">
			<media:title type="html">iphone</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/03/ipad.png" medium="image">
			<media:title type="html">ipad</media:title>
		</media:content>
	</item>
		<item>
		<title>Visualising software quality: using ink</title>
		<link>http://watirmelon.com/2012/02/22/visualising-software-quality-using-ink/</link>
		<comments>http://watirmelon.com/2012/02/22/visualising-software-quality-using-ink/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 12:00:54 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Exploratory Testing]]></category>
		<category><![CDATA[Session Based Testing]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[visualizing quality]]></category>
		<category><![CDATA[vizualisation]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1216</guid>
		<description><![CDATA[Not so recently, Gojko Atzic wrote a blog post asking for reader&#8217;s suggestions on techniques to visualise software quality of a system in development. I&#8217;ve recently been giving this some thought and came up with the following idea. A story &#8230; <a href="http://watirmelon.com/2012/02/22/visualising-software-quality-using-ink/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1216&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Not so recently, Gojko Atzic wrote a <a href="http://gojko.net/2011/04/22/a-new-problem-for-the-agile-testing-community/">blog post</a> asking for reader&#8217;s suggestions on techniques to visualise software quality of a system in development. I&#8217;ve recently been giving this some thought and came up with the following idea.</p>
<p><strong>A story</strong></p>
<p>Early last year at a client site, I met a genuinely lovely person working as a tester. She did traditional manual testing of a large complex system being developed in a non-iterative (big bang) manner.</p>
<p>I noticed her clear red pen had a small label on it: a piece of paper with a date sticky taped on, so I asked her about what it meant. She told me how she hates waste and loves to use a pen in its entirety, and the date is a way to keep track of how long she&#8217;s been using the particular pen for.</p>
<p>We went on talking to understand what she used the red pen for. What she&#8217;d do was create lots of manual test cases in a template on her computer, and then print them all to create a large pile of paper when it came time to execute the tests. As she excuted these tests, her red pen would be used to mark failures on these test case printouts, and write notes about what the defects were for the failures. As the pen was clear, and you could see how much red ink remained, she then joked about how the pen was an indicator of how good the system she worked on was. She&#8217;d used lots of red ink from her red pen since the start of the year, so the system wasn&#8217;t good! <a href="http://en.wikipedia.org/wiki/Aha!_effect">Aha!</a></p>
<p><strong>An Idea</strong></p>
<p>I started reading some <a href="http://gojko.net/2011/04/27/visualising-quality-initial-ideas/">suggestions</a> for visualising software quality. I see two problems with most of them: firstly, most are far too <a href="http://qconsf2011.blogspot.com.au/2011/11/visualizing-software-quality.html">complex</a>, and secondly, most rely on capturing detailed metrics which creates overhead onto itself.</p>
<p>What if you could have a lo-fidelity way to visualise software quality without creating any overhead? Perfect. Enter red and green ink.</p>
<p><strong>A proposal for visualising software quality using red and green ink<br />
</strong></p>
<p>Let me start by saying that this idea is freshly baked, possibly half cooked: I haven&#8217;t even tried it and I don&#8217;t know if it&#8217;ll work at all. But I think it&#8217;s cool and that&#8217;s why I am sharing it.</p>
<p>Imagine you&#8217;re working in a small cross-functional team developing a piece of software. You work as the tester on the team and have varied responsibilities: work with the business analyst and <a href="http://en.wikipedia.org/wiki/Subject-matter_expert">SME</a> to define acceptance criteria, work with a developer to automate these acceptance criteria, and conduct exploratory (<a href="http://en.wikipedia.org/wiki/Session-based_testing">session-based</a>) testing on individual user stories as they are completed.</p>
<p>At the start of the project, you&#8217;ll need three additional things:</p>
<ul>
<li>Two brand new matching red and green pens with clear barrels (so you can see the ink)</li>
<li>A ream of blank white paper: roughly A4 or A3 sized (or whatever you can get your hands on)</li>
</ul>
<p><strong>Now you&#8217;re ready to visualise software quality</strong></p>
<p>Each story has a set amount of time allocated to it for exploratory (session-based) testing. When you are about the start an exploratory testing session, you need to grab the two the pens and a couple of blank white sheets of paper. As you test, write your thoughts on the paper in either ink: good thoughts (<a href="http://www.urbandictionary.com/define.php?term=me%20likey">me likey</a>) are in <span style="color:#66cc00;">green</span>, bad thoughts (bugs, crashes, poor design etc.) are in <span style="color:#ff0000;">red</span>.</p>
<p><strong>Instant feedback on software quality</strong></p>
<p>As soon as the session is  complete, stick these sheets of paper on your <a href="http://www.thoughtworks-studios.com/docs/mingle/3.2/help/explore_mingle_topic_story_wall.html">wall</a>, and talk to the team about them, explaining each red and green thought. The paper will instantly show what you think of the quality of the system: a predominantly green sheet is good, a predominantly red one is bad.</p>
<p><a href="http://watirmelon.files.wordpress.com/2012/02/visualising-quality-using-red-and-green-ink.jpg"><img class="alignnone size-full wp-image-1217" title="Visualising quality using red and green ink" src="http://watirmelon.files.wordpress.com/2012/02/visualising-quality-using-red-and-green-ink.jpg?w=584&h=438" alt="" width="584" height="438" /></a></p>
<p><strong>Longer term feedback on software quality</strong></p>
<p>Over time, the ink remaining in each pen will paint a picture (excuse the pun) about the quality of your system. Are you using loads of red ink and not much green?</p>
<p><a href="http://watirmelon.files.wordpress.com/2012/02/red-and-green-ink-pens.jpg"><img class="alignnone size-medium wp-image-1218" title="Red and Green Ink Pens" src="http://watirmelon.files.wordpress.com/2012/02/red-and-green-ink-pens.jpg?w=93&h=300" alt="" width="93" height="300" /></a></p>
<p><strong>Thoughts?</strong></p>
<p>As I mentioned, this is just an idea I recently had and I have no idea whether it&#8217;d be successful in visualising software quality. But I reckon it&#8217;d be fun.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1216&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/02/22/visualising-software-quality-using-ink/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">alisterscott</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/02/visualising-quality-using-red-and-green-ink.jpg" medium="image">
			<media:title type="html">Visualising quality using red and green ink</media:title>
		</media:content>

		<media:content url="http://watirmelon.files.wordpress.com/2012/02/red-and-green-ink-pens.jpg?w=93" medium="image">
			<media:title type="html">Red and Green Ink Pens</media:title>
		</media:content>
	</item>
		<item>
		<title>♥ Travis CI</title>
		<link>http://watirmelon.com/2012/02/09/%e2%99%a5-travis-ci/</link>
		<comments>http://watirmelon.com/2012/02/09/%e2%99%a5-travis-ci/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 00:32:21 +0000</pubDate>
		<dc:creator>Alister Scott</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[travis]]></category>
		<category><![CDATA[travis-ci]]></category>

		<guid isPermaLink="false">http://watirmelon.com/?p=1213</guid>
		<description><![CDATA[I&#8217;ve talked previously about how cool Travis CI is, and they&#8217;re now taking donations to implement more functionality in the future. Since watir-webdriver uses Travis, as does my watir-page-helper gem and my Minesweeper Jasmine tests, I thought I&#8217;d better contribute! &#8230; <a href="http://watirmelon.com/2012/02/09/%e2%99%a5-travis-ci/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1213&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve talked previously about <a title="Running Watir-WebDriver tests on Travis CI: a distributed build system" href="http://watirmelon.com/2011/09/04/running-watir-webdriver-tests-on-travis-ci-a-distributed-build-system/">how cool Travis CI is</a>, and they&#8217;re now <a href="https://love.travis-ci.org/">taking donations</a> to implement more functionality in the future. Since <a href="http://watirwebdriver.com">watir-webdriver</a> uses Travis, as does my <a title="Watir-Page-Helper 0.3.0: now with added frames" href="http://watirmelon.com/2011/09/21/watir-page-helper-0-3-0-now-with-added-frames/">watir-page-helper gem</a> and my <a title="Have you always wanted to automate minesweeper?" href="http://watirmelon.com/2012/01/16/have-you-always-wanted-to-automate-minesweeper/">Minesweeper</a> <a title="Writing a CoffeeScript web application using TDD" href="http://watirmelon.com/2012/01/23/writing-a-coffeescript-web-application-using-tdd/">Jasmine tests</a>, I thought I&#8217;d better contribute!</p>
<p>When you donate you get lots of warm and fuzzies, plus you get cool stickers, some ringtones!?!, and a neat little surprise on the thank you page.</p>
<p>You should <a href="https://love.travis-ci.org/">donate</a> too.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&#038;blog=2177915&#038;post=1213&#038;subd=watirmelon&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watirmelon.com/2012/02/09/%e2%99%a5-travis-ci/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">alisterscott</media:title>
		</media:content>
	</item>
	</channel>
</rss>
