<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Windmill Testing Framework &#187; Work</title>
	<atom:link href="http://www.getwindmill.com/archives/category/work/feed" rel="self" type="application/rss+xml" />
	<link>http://www.getwindmill.com</link>
	<description>Just a small-town Web testing framework...</description>
	<lastBuildDate>Tue, 22 Jun 2010 22:13:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; 2010 Windmill Testing Framework </copyright>
		<managingEditor>adam@getwindmill.com ()</managingEditor>
		<webMaster>adam@getwindmill.com ()</webMaster>
		<category>posts</category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Satisfying your Web Automation and Testing needs.</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>adam@getwindmill.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.getwindmill.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.getwindmill.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Windmill Testing Framework</title>
			<link>http://www.getwindmill.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Zero to Continuous Integration with Windmill</title>
		<link>http://adamchristian.com/archives/43</link>
		<comments>http://adamchristian.com/archives/43#comments</comments>
		<pubDate>Fri, 19 Sep 2008 06:29:58 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Contrib]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[continuous]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[windmill-dev]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=43</guid>
		<description><![CDATA[Following &#8216;automation&#8217; and &#8216;continuous integration&#8217; in the micro blogging world I have seen a major influx in people being super interested in functionally automating their web apps. I have seen a slew of things about Grid, and Selenium, and people hacking on Watir so I decided to show you from the ground up how incredibly [...]]]></description>
			<content:encoded><![CDATA[Following 'automation' and 'continuous integration' in the micro blogging world I have seen a major influx in people being super interested in functionally automating their web apps. I have seen a slew of things about Grid, and Selenium, and people hacking on Watir so I decided to show you from the ground up how incredibly easy it is to get automated test running setup using <a href="http://www.getwindmill.com">Windmill</a> and <a href="http://hudson.gotdns.com/wiki/display/HUDSON/Meet+Hudson#Installation">Hudson</a>. I am not going to walk you through every detail, this is much more high level but I do plan to start a 'continuous integration' page on getwindmill.com in the near future for those kinds of details.

<br><br>The first step is to get a couple machines that you want use as slaves and a machine to run Hudson, our setup looks like this:

<img title="Windmill/Hudson Arch" src="http://adamchristian.com/wp-content/uploads/2008/09/arch.png" alt="" width="291" height="191" />

Each of the machines with a different OS has <a href="http://www.getwindmill.com">Windmill</a> installed. To make them slaves you simply bring up the Hudson web page on the machine, and run the launcher.. now it's a slave -- crazy easy right?
<br><br>
Now to setup test runs for the machines, in Hudson you click: "New Job" on the left hand side and do something like the following:

<hr>
<strong>Tie this job to the slave you want it to run on (we can't have IE runs happening on MacOSX):</strong>

<img title="tie_node" src="http://adamchristian.com/wp-content/uploads/2008/09/tie_node.png" alt="" width="500" height="55" />
<hr>
<strong>Tell this job to run 10 and 30 minutes after the hour:</strong>

<img title="build_periodic2" src="http://adamchristian.com/wp-content/uploads/2008/09/build_periodic2.png" alt="" width="500" height="69" />

<hr>
<strong>The build steps to actually run the tests, the first kills any straggling processes (more details below):</strong>

<img  title="build_steps" src="http://adamchristian.com/wp-content/uploads/2008/09/build_steps1.png" alt="" width="353" height="328" />
<hr>
On the Mac for the Safari job, I want to make sure there aren't any instances of Safari left hanging, or windmill processes sitting around so we do:
<br><br>
<code>ps -ax | grep windmill | awk '{ print $1 }' | xargs kill  | true
ps -ax | grep Safari | awk '{ print $1 }' | xargs kill | true
</code>
<hr>
Then we want to grab the latest test code from svn and launch the windmill test:
<br><br>
<code>svn up /Users/adam/Documents/main_bt/windmill/
python /usr/local/bin/windmill safari http://www.facebook.com test=/Users/adam/Documents/main_bt/windmill/fb email=username@slide.com password=pass report=true exit
rm /Users/adam/Library/Cookies/Cookies.plist</code>
<br><br>
I am telling windmill to run a test against facebook.com, with the test hierarchy in the windmill/fb directory in Safari, with the provided email and password, then to report it's results and exit.
<br><br>
The only thing different on our windows test runs is the way we kill the processes:
<br><br>
Example:
<code>taskkill /F /T /IM windmill.exe
taskkill /F /T /IM firefox.exe
</code>
<br><br>
You might be asking how do I use those variables, check it out in my setup module:
<br><br>
<code>def setup_module(module):
client = WindmillTestClient(__name__)
client.type(text=functest.registry['email'], id=u'email')
client.type(text=functest.registry['password'], id=u'pass')
client.click(id=u'doquicklogin')
client.waits.forPageLoad(timeout=u'100000')
</code>

<br><br>
You can also read a great entry about adding reporting to your tests on Mikeal Rogers blog, <a href="http://www.mikealrogers.com/archives/46">here.</a>

<br><br>
And that last line removing Cookies.plist makes sure that the next test run starts without any cookies set to cause problems.

<br><br>
<strong>Have Hudson keep you updated on Jabber:</strong>

<img title="jabber1" src="http://adamchristian.com/wp-content/uploads/2008/09/jabber1.png" alt="" width="500" height="97" /></a>

<br><br>
<strong>Grab the generated XML output so you can view the test results in Hudson:</strong>

<img  title="publish_junit" src="http://adamchristian.com/wp-content/uploads/2008/09/publish_junit.png" alt="" width="500" height="58" />

<hr>
<strong>Do this for each of the test runs you would like to have, and boom -- continuous integration:</strong>

<img  title="jobs_dash" src="http://adamchristian.com/wp-content/uploads/2008/09/jobs_dash1-300x148.png" alt="" width="300" height="148" />
<br><br>
This is obviously a simple scenario, and you can do way, way more customization.. but this should get you off the ground. Happy testing!]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/43/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
