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

<channel>
	<title>Windmill Testing Framework</title>
	<atom:link href="http://www.getwindmill.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.getwindmill.com</link>
	<description>Making the Test Automation for your web site, just that much easier.</description>
	<pubDate>Fri, 19 Dec 2008 07:38:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>adam@getwindmill.com ()</managingEditor>
		<webMaster>adam@getwindmill.com()</webMaster>
		<category></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>Windmill 1.0beta2 Released</title>
		<link>http://www.getwindmill.com/archives/334</link>
		<comments>http://www.getwindmill.com/archives/334#comments</comments>
		<pubDate>Wed, 17 Dec 2008 02:18:56 +0000</pubDate>
		<dc:creator>adam</dc:creator>
		
		<category><![CDATA[1.0]]></category>

		<category><![CDATA[Release]]></category>

		<category><![CDATA[Updates]]></category>

		<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://www.getwindmill.com/?p=334</guid>
		<description><![CDATA[We are another step closer to 1.0, if you have been watching the mailing lists or the trac timeline you already know that we have had some serious bug fixes over the past couple weeks as well as one new feature.
Bug Fixes:

Major fixes and updates for the Windmill Unit Tests
IE fixes for: Drag and Drop, [...]]]></description>
			<content:encoded><![CDATA[<p>We are another step closer to 1.0, if you have been watching the <a href="http://www.getwindmill.com/documentation/mailing-lists">mailing lists</a> or the<a href="http://trac.getwindmill.com/timeline"> trac timeline</a> you already know that we have had some serious bug fixes over the past couple weeks as well as one new feature.</p>
<p><strong>Bug Fixes:</strong></p>
<ul>
<li>Major fixes and updates for the Windmill Unit Tests</li>
<li>IE fixes for: Drag and Drop, Click, UI usability, Non Compress deps broken</li>
<li>JS Test Framework bug fixes, JUM assertions, unit tests,</li>
<li>Improved XPath Generation and bug fixes</li>
</ul>
<p><strong>Feature</strong></p>
<ul>
<li>Full support for launching and killing Google Chrome on Windows (requires Python 2.6)</li>
</ul>
<p>We really appreciate all the bug reports and emails from you all, thanks for your patience as we try to squash all the bugs.</p>
<p>An additional encouraging note is that we got some great PR this week, which can be found here: <a href="http://sdtimes.com/link/33107">Windmill Article in the SDTimes</a>.</p>
<p>Happy testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getwindmill.com/archives/334/feed</wfw:commentRss>
		</item>
		<item>
		<title>Windmill Gets a Facelift for 1.0Beta1</title>
		<link>http://adamchristian.com/archives/56</link>
		<comments>http://adamchristian.com/archives/56#comments</comments>
		<pubDate>Wed, 19 Nov 2008 12:11:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
		
		<category><![CDATA[1.0]]></category>

		<category><![CDATA[Beta]]></category>

		<category><![CDATA[Contrib]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[IDE]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Mozilla]]></category>

		<category><![CDATA[Mozmill]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Release]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[UI]]></category>

		<category><![CDATA[Web]]></category>

		<category><![CDATA[Windmill]]></category>

		<category><![CDATA[automation]]></category>

		<category><![CDATA[testing]]></category>

		<category><![CDATA[windmill-dev]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=56</guid>
		<description><![CDATA[Working up to the Windmill 1.0 Beta 1 Release, I finally had the opportunity to put some time into making the IDE (that a lot of you live in when in test writing mode) a little bit nicer to look at.
The IDE has been growing organically since 0.1 and there was a lot of functionality [...]]]></description>
			<content:encoded><![CDATA[<p>Working up to the <a href="http://www.getwindmill.com/archives/315">Windmill 1.0 Beta 1 Release</a>, I finally had the opportunity to put some time into making the IDE (that a lot of you live in when in test writing mode) a little bit nicer to look at.</p>
<p>The IDE has been growing organically since 0.1 and there was a lot of functionality hacked into it that wasn&#8217;t in the original game plan, so I did what I could to improve the beauty of the CSS/Layout as well as the whole mess of code behind it.</p>
<p><img  title="loading" src="http://www.adamchristian.com/wp-content/uploads/2008/11/loading.png" alt="" width="244" height="127" /><br />
<strong>Launching</strong><br />
If you have used our latest release, or are running trunk you know that we have significantly improved the load times for the Windmill IDE. By compressing the JavaScript when the service is instantiated we can simply hand the IDE window one file that contains the vast majority of the required code.</p>
<p>The reason that this makes such a huge performance difference is because we are loading the source via the local windmill proxy and the data size size had very little impact, the overhead was in the browser two connection limit. When you have to pull down ~30 files two at a time it takes its toll and made the IDE feel very sluggish and more like a web page loading than an IDE.</p>
<p>In the process of figuring out exactly what was slowing down the launch time we added some more informative messages and output so you don&#8217;t sit there staring at a twirling circle graphic wondering if anything is happening. And to make the experience even more fun, I couldn&#8217;t help but implement a progress bar.</p>
<p><strong>General Layout</strong><br />
I removed the toolbar at the bottom of the screen, which I felt it was an irritation for test editing (especially with the drag and droppable actions). It is now in a drop down menu at the top right of the screen, with the rest of the UI access to IDE functions.<br />
<img class="size-full wp-image-60 alignleft" title="gen_layout0" src="http://www.adamchristian.com/wp-content/uploads/2008/11/gen_layout0.png" alt="" width="216" height="62" /><img class="size-full wp-image-62 alignright" title="gen_layout2" src="http://www.adamchristian.com/wp-content/uploads/2008/11/gen_layout2.png" alt="" width="198" height="88" /><br />
<img class="size-full wp-image-61 aligncenter" title="gen_layout1" src="http://www.adamchristian.com/wp-content/uploads/2008/11/gen_layout1.png" alt="" width="218" height="58" /></p>
<p><strong>Settings and Firebug Lite Improvements</strong><br />
The settings dialog has continued to improve by implementing more useful defaults, adding new options, removing deprecated options and simply making it just look better. Thanks jQuery UI!</p>
<p><img class="alignnone size-full wp-image-63" title="wm_settings" src="http://www.adamchristian.com/wp-content/uploads/2008/11/wm_settings.png" alt="" width="298" height="328" /></p>
<p>Firebug Lite has been a very popular feature since we first announced it, which has led to a handful of bug fixes over the last month. The most major of these was that the initial Windmill implementation of Firebug Lite required you to have Internet access as it was using resources that were hosted elsewhere.</p>
<p>These have since been copied to our source tree and are made available by the Windmill server so you can happily introspect your Web Apps JavaScript while writing tests on your Intranet.</p>
<p><img class="alignnone size-full wp-image-64" title="fblite1" src="http://www.adamchristian.com/wp-content/uploads/2008/11/fblite1.png" alt="" width="342" height="375" /><br />
<img class="alignnone size-full wp-image-65" title="fblite2" src="http://www.adamchristian.com/wp-content/uploads/2008/11/fblite2.png" alt="" width="393" height="449" /></p>
<p><strong>Output and Performance</strong><br />
Instead of writing all the raw windmill output to the output and performance tabs there is now an array called windmill.errorArr, where all terrible errors and warnings about technical details are pushed in the case you are interested to see all that data. However, it&#8217;s more likely that you aren&#8217;t and scrolling through all that output data becomes tedious.</p>
<p>This is why we have implemented output in blocks with the background color representing pass/failure with green/red (white for performance). These blocks are expandable, clicking them will reveal all output (or performance information) we know about the action that was executed. This should give you a faster general overview of your results and allow you to quickly see the details you care about.</p>
<p><img class="alignnone size-full wp-image-67" title="output" src="http://www.adamchristian.com/wp-content/uploads/2008/11/output.png" alt="" width="406" height="240" /><br />
<img class="size-full wp-image-68 alignnone" title="perf" src="http://www.adamchristian.com/wp-content/uploads/2008/11/perf.png" alt="" width="406" height="257" /></p>
<p><strong>Other Worthwhile Mentions</strong><br />
We moved our XPath implementation from Ajax-Slt to JS-XPath, which has proven to be more accurate when it comes to resolving XPath generated in Firefox (or using Firebug) against non XPath native browsers such as IE.</p>
<p>Many bugs and improvements have been made to the DOM Explorer, which should now feel a lot more like the Firebug DOM inspector, but should work in any browser.</p>
<p ><img class="size-full wp-image-66 aligncenter" title="dx" src="http://www.adamchristian.com/wp-content/uploads/2008/11/dx.png" alt="" width="500" height="150" /></p>
<p>We have also put a lot of effort into improving the communication between the JavaScript Controller and the Python Service so that when a test fails you get as much detailed information in the service as you do in the IDE.</p>
<p ><img class="size-full wp-image-69 aligncenter" title="stdout" src="http://www.adamchristian.com/wp-content/uploads/2008/11/stdout.png" alt="" width="500" height="74" /></p>
<p><strong>Timing and MozMill</strong><br />
The timing has lined up nicely as we are working on both a 1.0 release for <a href="http://www.getwindmill.com">Windmill</a> and <a href="http://code.google.com/p/mozmill/">MozMill</a>. MozMill is geared towards automated testing of all applications on the Mozilla Platform and functions in the trusted space providing lots of very useful flexibility.</p>
<p>You can currently try out <a href="https://addons.mozilla.org/en-US/firefox/addon/9018">MozMill 1.0rc1 as a Firefox Add-on</a>, and keep your eyes pealed as some exciting new MozMill feature work is around the corner.</p>
<p><strong>Participate</strong><br />
We are always trying to make life easier for the test writer, so please <a href="http://trac.getwindmill.com/report">log your bugs</a> and feel free to come <a href="http://freenode.net/">chat with us in #windmill on FreeNode</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/56/feed</wfw:commentRss>
		</item>
		<item>
		<title>Windmill 1.0Beta1 Pushed to PyPi</title>
		<link>http://www.getwindmill.com/archives/315</link>
		<comments>http://www.getwindmill.com/archives/315#comments</comments>
		<pubDate>Wed, 19 Nov 2008 09:33:31 +0000</pubDate>
		<dc:creator>adam</dc:creator>
		
		<category><![CDATA[PR]]></category>

		<category><![CDATA[Releases]]></category>

		<category><![CDATA[Updates]]></category>

		<category><![CDATA[Windmill]]></category>

		<category><![CDATA[1.0]]></category>

		<category><![CDATA[announcement]]></category>

		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.getwindmill.com/?p=315</guid>
		<description><![CDATA[We are finally in 1.0 beta mode, the improvements are vast and the polish is shiny. Please make sure that any bugs you know about, or have discovered are logged so that we can consider them for the final 1.0 release. Beta 1 will be in QA for the next couple weeks and we hope [...]]]></description>
			<content:encoded><![CDATA[<p>We are finally in 1.0 beta mode, the improvements are vast and the polish is shiny. Please make sure that any bugs you know about, or have discovered are logged so that we can consider them for the final 1.0 release. Beta 1 will be in QA for the next couple weeks and we hope to get any lasting 1.0 blockers squashed!</p>
<p>The IRC channel is a great place to come chat with us if you are having any issues or questions. Again if you are new to Windmill its #windmill on FreeNode. </p>
<p>It&#8217;s a very exciting time for the project, stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getwindmill.com/archives/315/feed</wfw:commentRss>
		</item>
		<item>
		<title>IRC Sprint Tomorrow, Tuesday, November 6th 2008</title>
		<link>http://www.getwindmill.com/archives/90</link>
		<comments>http://www.getwindmill.com/archives/90#comments</comments>
		<pubDate>Wed, 05 Nov 2008 15:24:44 +0000</pubDate>
		<dc:creator>adam</dc:creator>
		
		<category><![CDATA[Sprint]]></category>

		<guid isPermaLink="false">http://www.getwindmill.com/?p=90</guid>
		<description><![CDATA[Tomorrow we&#8217;re having an IRC sprint for windmill.
The windmill developers will be online in #windmill on irc.freenode.org from 10am to 5pm PST.
Even if you haven&#8217;t tried to install windmill before, come and give us feedback through the entire process and we&#8217;ll be there to help if you run in to any problems.
Hope to see you [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow we&#8217;re having an IRC sprint for windmill.</p>
<p>The windmill developers will be online in #windmill on irc.freenode.org from 10am to 5pm PST.</p>
<p>Even if you haven&#8217;t tried to install windmill before, come and give us feedback through the entire process and we&#8217;ll be there to help if you run in to any problems.</p>
<p>Hope to see you there.</p>
<p>-Mikeal</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getwindmill.com/archives/90/feed</wfw:commentRss>
		</item>
		<item>
		<title>Running Windmill tests from Django</title>
		<link>http://www.mikealrogers.com/archives/222</link>
		<comments>http://www.mikealrogers.com/archives/222#comments</comments>
		<pubDate>Sun, 02 Nov 2008 22:59:28 +0000</pubDate>
		<dc:creator>mikeal</dc:creator>
		
		<category><![CDATA[Contrib]]></category>

		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Windmill]]></category>

		<guid isPermaLink="false">http://www.mikealrogers.com/?p=222</guid>
		<description><![CDATA[<br />It&#8217;s usually a good idea to document cool features you write and tell people about them. I totally forgot about this one, which I wrote during DjangoCon a few months back.
A few years ago I wrote a patch for live server support in Django. The patch fell out of sync with trunk and was picked [...]]]></description>
			<content:encoded><![CDATA[<br/><p>It&#8217;s usually a good idea to document cool features you write and tell people about them. I totally forgot about this one, which I wrote during DjangoCon a few months back.</p>
<p>A few years ago I wrote a patch for live server support in Django. The patch fell out of sync with trunk and was picked up a year or so later and <a href="http://code.djangoproject.com/ticket/2879" onclick="javascript:pageTracker._trackPageview ('/outbound/code.djangoproject.com');">substantially improved</a>. But the patch didn&#8217;t end up making it in for 1.0 <img src='http://www.mikealrogers.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Luckily the code is simple enough that I was able to use it windmill and add live server support to any Django 1.0 install by <a href="http://trac.getwindmill.com/browser/trunk/windmill/authoring/djangotest.py" onclick="javascript:pageTracker._trackPageview ('/outbound/trac.getwindmill.com');">dynamically overriding and changing the classes that we need</a> to start and stop a live test server for you django project.</p>
<p>After it&#8217;s all said and done this makes it dirt simple to bootstrap windmill tests from your Django unittests, all you need to do is define a single test class along side your other django unittests pointing to the directory of windmill tests you want to run and which browser you want to run them in and windmill&#8217;s django support will automatically start a live django server and run your windmill tests against it.</p>

<div class="wp_syntax"><div class="code"><pre class="python python" ><span >from</span> <span >os</span> <span >import</span> path
<span >from</span> windmill.<span >authoring</span> <span >import</span> djangotest 
&nbsp;
<span >class</span> WindmillTests<span >&#40;</span>djangotest.<span >WindmillDjangoUnitTest</span><span >&#41;</span>:
    test_dir = path.<span >join</span><span >&#40;</span>path.<span >dirname</span><span >&#40;</span>path.<span >abspath</span><span >&#40;</span>__file__<span >&#41;</span><span >&#41;</span>, <span >'windmilltests'</span><span >&#41;</span>
    browser = <span >'firefox'</span></pre></div></div>

<p>This is also all written up on a <a href="http://trac.getwindmill.com/wiki/WindmillAndDjango" onclick="javascript:pageTracker._trackPageview ('/outbound/trac.getwindmill.com');">wiki page</a> along with some of the caveats.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikealrogers.com/archives/222/feed</wfw:commentRss>
		</item>
		<item>
		<title>Windmill 0.9.1 Released</title>
		<link>http://www.mikealrogers.com/archives/168</link>
		<comments>http://www.mikealrogers.com/archives/168#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:51:27 +0000</pubDate>
		<dc:creator>mikeal</dc:creator>
		
		<category><![CDATA[Contrib]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Windmill]]></category>

		<guid isPermaLink="false">http://www.mikealrogers.com/?p=168</guid>
		<description><![CDATA[I didn&#8217;t think we&#8217;d be doing any notable windmill releases until 1.0. Boy was I wrong!
Seriously Faster
On Wednesday Adam messaged me and said that the windmill startup time was too slow. He was right, we&#8217;ve know about this for a while but hadn&#8217;t put a lot of serious thought in to how we could reduce [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t think we&#8217;d be doing any notable windmill releases until 1.0. Boy was I wrong!</p>
<h4>Seriously Faster</h4>
<p>On Wednesday Adam messaged me and said that the windmill startup time was too slow. He was right, we&#8217;ve know about this for a while but hadn&#8217;t put a lot of serious thought in to how we could reduce it.<br />
The issue here was was that we have about 50 JavaScript files that need to get loaded for windmill to start.</p>
<p>Enter windmill-compressor, a new url namespace we added that concats all the js windmill needs in to one file and minifies it. We do this dynamically when windmill starts up, because adding a &#8220;build&#8221; step would just be too&#8230;.. Java.</p>
<p>That reduced the startup time from 5-10 seconds to around 2 seconds. But that wasn&#8217;t good enough. We saw that most of that startup time was blocking waiting for the compressor to finish, so I threaded it when we start the windmill service and it does the compression while we wait for the browser to start up.</p>
<p>In all, windmill startup times are about 10x faster than 0.9!</p>
<p>Adam also decided to make our page load wait code a bit more aggressive which made not only startup times faster but all of our tests!</p>
<h4>Native JavaScript Test Framework</h4>
<p>We tied up the loose ends on the JavaScript testing framework and it can now shutdown all of windmill in it&#8217;s own teardown, hello continuous integration for native JavaScript tests <img src='http://www.mikealrogers.com/wp-includes/images/smilies/icon_smile.gif' alt=')' class='wp-smiley' /> </p>
<p>This was the last thing holding us back from promoting this along side the Python test authoring library.</p>
<h4>We Love Firebug</h4>
<p>In 0.9 we introduced Firebug Lite integration for windmill on all browsers. But when you&#8217;re using Firefox you probably still want to use the full Firebug extension, which is easy enough to integrate since we use <a href="http://code.google.com/p/mozrunner">mozrunner</a> for Firefox launching.</p>
<p>Windmill now has a &#8220;firebug&#8221; command line argument that installs the full Firebug<br />
extension when launching Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikealrogers.com/archives/168/feed</wfw:commentRss>
		</item>
		<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>
		</item>
		<item>
		<title>Windmill 0.9.0 Released</title>
		<link>http://www.getwindmill.com/archives/265</link>
		<comments>http://www.getwindmill.com/archives/265#comments</comments>
		<pubDate>Thu, 11 Sep 2008 01:36:10 +0000</pubDate>
		<dc:creator>adam</dc:creator>
		
		<category><![CDATA[PR]]></category>

		<category><![CDATA[Releases]]></category>

		<category><![CDATA[Windmill]]></category>

		<category><![CDATA[automation]]></category>

		<category><![CDATA[community]]></category>

		<category><![CDATA[0.9.0]]></category>

		<category><![CDATA[Features]]></category>

		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.getwindmill.com/?p=265</guid>
		<description><![CDATA[Another round of productive bug fixes and feature additions have happened over the last few weeks. We are now positioning the project to approach a 1.0 release, which means that our goals for the coming releases is focused on shaking out all those blocker bugs before we push the big milestone.
New Features, since 0.8.0

Command line [...]]]></description>
			<content:encoded><![CDATA[<p>Another round of productive bug fixes and feature additions have happened over the last few weeks. We are now positioning the project to approach a 1.0 release, which means that our goals for the coming releases is focused on shaking out all those blocker bugs before we push the big milestone.</p>
<p><strong>New Features, since 0.8.0</strong></p>
<ul>
<li>Command line option for changing service port</li>
<li>Django Support</li>
<li>Forwarding Conditionals</li>
<li>Addition of firebug lite support in IDE and Testing Application</li>
<li>Fully functional wxWindmill contrib application</li>
<li>Enhanced ’smart’ recorder</li>
<li>Auto element scroll into view to more closely simulate users</li>
<li>Improved IDE user interface</li>
<li>Improved frame recursive element look ups for IE</li>
</ul>
<p>In addition to all the bug fixes, which you can see for yourself in <a href="http://trac.getwindmill.com">trac</a>.</p>
<p>We are really excited to see the exponential growth and exposure the project has been getting over the past couple weeks, thanks everyone!</p>
<p><em>Windmill Team</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.getwindmill.com/archives/265/feed</wfw:commentRss>
		</item>
		<item>
		<title>Firebug Lite in Windmill</title>
		<link>http://www.mikealrogers.com/archives/78</link>
		<comments>http://www.mikealrogers.com/archives/78#comments</comments>
		<pubDate>Tue, 09 Sep 2008 05:12:29 +0000</pubDate>
		<dc:creator>mikeal</dc:creator>
		
		<category><![CDATA[Contrib]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Windmill]]></category>

		<guid isPermaLink="false">http://www.mikealrogers.com/?p=78</guid>
		<description><![CDATA[Everyone knows how awesome Firebug is. But for those times you have the unfortunate task of debugging in a browser that isn&#8217;t Firefox the Firebug team recently put out a new release of Firebug Lite.
For some time now we&#8217;ve always had a shell in Windmill for debugging but it was never as nice as the [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows how awesome <a href="http://getfirebug.com/">Firebug</a> is. But for those times you have the unfortunate task of debugging in a browser that isn&#8217;t Firefox the Firebug team recently put out a new release of <a href="http://getfirebug.com/lite.html">Firebug Lite</a>.</p>
<p>For some time now we&#8217;ve always had a shell in Windmill for debugging but it was never as nice as the Firebug shell and maintaining that code was kind of a pain. In the <a href="http://www.getwindmill.com/archives/210">recent 0.8.2</a> release of Windmill we dropped our old shell code and fully integrated Firebug Lite so that whenever you need to debug a test in any browser you can open Firebug Lite in the target application by clicking a single link in the Windmill IDE.</p>
<p><img class="size-full wp-image-85 aligncenter" src="http://www.mikealrogers.com/wp-content/uploads/2008/09/windmillide1.png" alt="" /></p>
<p><img class="size-full wp-image-86 aligncenter" src="http://www.mikealrogers.com/wp-content/uploads/2008/09/windmillfirebug2.png" alt="" width="539" height="470" /></p>
<p>
<p>I can&#8217;t even begin to explain how much easier this is going to make writing and debugging tests in Windmill.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikealrogers.com/archives/78/feed</wfw:commentRss>
		</item>
		<item>
		<title>DjangoCon 2008</title>
		<link>http://www.mikealrogers.com/archives/64</link>
		<comments>http://www.mikealrogers.com/archives/64#comments</comments>
		<pubDate>Mon, 08 Sep 2008 19:12:20 +0000</pubDate>
		<dc:creator>mikeal</dc:creator>
		
		<category><![CDATA[Contrib]]></category>

		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Windmill]]></category>

		<guid isPermaLink="false">http://www.mikealrogers.com/?p=64</guid>
		<description><![CDATA[I had the pleasure of attending the very first DjangoCon this last weekend.
I&#8217;ve attended a lot of conferences; big conferences, small conferences, very targetted conferences and very broad conferences. I think DjangoCon may have been the best conference I&#8217;ve ever been to.
Over the years what I&#8217;ve learned to truly value about a conference is; meeting [...]]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of attending the very first DjangoCon this last weekend.</p>
<p>I&#8217;ve attended a lot of conferences; big conferences, small conferences, very targetted conferences and very broad conferences. I think DjangoCon may have been the best conference I&#8217;ve ever been to.</p>
<p>Over the years what I&#8217;ve learned to truly value about a conference is; meeting with people in the community, learning and understanding things I care about that would be harder to learn from reading than listening to a speaker, and just generally having a good time. DjangoCon was fantastic on all fronts. Being so targeted (people who use Django) there weren&#8217;t many talks that I didn&#8217;t care about and the people speaking were in all cases the best person to be speaking about a particular topic. The Django community is my favorite open source community, beating out the larger Python community by a small margin. Everyone is nice, helpful, and rarely suffer from even a marginal amount of smugness. Add food, decent wifi, and Cal&#8217;s talk &#8220;Why I hate Django&#8221; and you definitely cover the &#8220;having a good time&#8221; bit.</p>
<h3>AppEngine</h3>
<p>I messed with AppEngine for a couple weeks when it was first released. There were some serious rough edges that I decided I couldn&#8217;t deal with and I really didn&#8217;t completely get my head around the datastore.</p>
<p><a href="http://www.flickr.com/photos/muffinresearch/2838298294/"><img src="http://farm4.static.flickr.com/3130/2838298294_8db6dc6b16.jpg" alt="Guido on AppEngine" /></a></p>
<p>Seeing Guido&#8217;s talk I noticed that those rough edges have been smoothed out and the development environment seems nicer, not to mention the documentation seems to have significantly improved. I&#8217;ve also been doing a lot of CouchDB work lately so I&#8217;ve internalized the &#8220;Document Store&#8221; concept and once I saw the Expando class provided by AppEngine I felt like I was now in a place where I can really understand Google&#8217;s datastore. It&#8217;s also not documented very well but Google&#8217;s datastore supports some geo data, which has always been a concern of mine putting too many eggs in the CouchDB basket right now. Add the fact that I absolutely hate managing infrastructure and I made a quick decision to invest once again in AppEngine or an upcoming project.</p>
<h3>Why I Hate Django</h3>
<p>I don&#8217;t think anyone will disagree that the highlight of Day One was Cal Henderson talk &#8220;Why I Hate Django&#8221;, he was absolutely hilarious. The video will be up eventually and I highly suggest everyone watch because it&#8217;s just too damn entertaining. I pulled a series of CC pictures from flickr in the meantime that illustrate the humor of the talk.</p>
<p><a href="http://www.flickr.com/photos/muffinresearch/2837507027/"><img src="http://farm4.static.flickr.com/3054/2837507027_a18521bd1d.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2837504939/"><img src="http://farm4.static.flickr.com/3157/2837504939_dca1ded576.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2838339086/"><img src="http://farm4.static.flickr.com/3151/2838339086_5a25a76ed5.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2837507379/"><img src="http://farm4.static.flickr.com/3167/2837507379_11a1b244d6.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2837504033/"><img src="http://farm4.static.flickr.com/3177/2837504033_2c6226188b.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2838342286/"><img src="http://farm4.static.flickr.com/3205/2838342286_d197933757.jpg?v=0" alt="Cal Hates Django" /></a><br />
<a href="http://www.flickr.com/photos/muffinresearch/2837506505/"><img src="http://farm4.static.flickr.com/3041/2837506505_567f91f368.jpg?v=0" alt="Cal Hates Django" /></a></p>
<h3>Live Testing</h3>
<p>Something like two years ago I wrote a patch to add live server support to the Django Test Framework (based on unittest). That patch fell out of sync with trunk and on the floor at some point. Eventually an intern at Disqus came along and got it working again and made some really nice improvements.</p>
<p>Although the patch didn&#8217;t make it in to Django 1.0 I&#8217;m told it should land soon and will be in 3.1, but Disqus has been running with it all summer, using it for some Selenium tests. Well I couldn&#8217;t stand idle while Selenium test were running with Django and Windmill tests weren&#8217;t so I put my head down for about an hour during one of the talks and committed Django support to Windmill trunk. I ported the current patch for live server support in Django&#8217;s Trac so that it dynamically adds what is needed to Django and you can use this with Django 1.0 unmodified, and created a TestCase class that will launch your Windmill tests from within the normal Django <em>python mange.py test</em> runner. I wrote up a bit more about this <a href="http://groups.google.com/group/windmill-dev/browse_thread/thread/85f23d2a0d4e99">in a post to the windmill-dev list.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikealrogers.com/archives/64/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
