Monday, March 29, 2010

Selenesse dotnet is GO

Selenium + FitNesse = Selenesse

Chris McMahon and Marisa Seal took on a new project late last year, maintaining and extending some work that Gojko Adjic had done for FitNesse, called WebTest. They named it Selenesse. Selenesse combines the FitNesse wiki format and framework for defining and executing tests, with the UI browser driver, Selenium.

When I first found out they were doing this I thought it was neat and could use it myself. Since they work in the Java space and I work in the dotnet space, I decided that I could contribute to their project by doing a dotnet version, so that myself and others in the dotnet space could use it and extend it as they needed.

It was particularly interesting to me for a few reasons. I am a big fan of the wiki format for test writing and execution, first and foremost. I usually write my Selenium tests in a C# Nunit class, meaning that what the test is *doing* can be somewhat difficult to shake out (even with DSLs, we're still talking about code). Certainly, my developers can get through that, but nobody outside of this team can.

I am looking forward to involving my current team's business-facing people more in our software creation process. I believe that one step toward that is to work closely with them on defining what they want and at what point we can feel like those things are "done-done". I hope that by writing tests in a format that they can read, I can quickly walk through as many of the things that will represent "done-done" as we can -- and do that early and frequently.

So I took to writing the dotnet version of Selenesse. I struggled for a while and nearly gave up on it. The structure of what is being done basically looks like this:
Selenium RC dotnet client driver <-> SlimSeleniumDriver <-> FitNesse

I was able to call any method that existed in SlimSeleniumDriver, but not the native functions in the Selenium RC dotnet client driver. It was weird and frustrating, and no matter what I did or how I wrote it, I just couldn't get it to work.

Enter Mike Stockdale (@jediwhale) to the rescue! Mike has written fitSharp, another dotnet version of some FitNesse functionality. Selenesse dotnet uses fitSharp. It turned out, my code was just fine, but there was apparently some weirdness in file locations -- I placed the Runner.exe file in the same folder as my dlls and suddenly, it worked!

So, I introduce Selenesse dotnet. Click here to download all of the source (this will change as we get more organized). Go into the dotnet-selenesse folder and you will find the FitNesse wiki root and the src folders.

Not included in that package is the Selenium RC Server. I use Sauce RC (highly recommend it!!). To execute tests, the Selenium RC Server must be running.

I'll not get into more detailed instructions here -- look out for them in the download itself. There are instructions from Marisa and Chris's initial implementation in the wiki already. These will evolve over time. In the mean time, please feel free to contact me for help if you want to get set up and are confused or are having issues (setting up seems to always be difficult for me).

4 comments:

Lisa said...

Dawn, I am beyond impressed that you were able to do this! It's so cool! I'm not in a .Net shop but I can imagine there are many grateful .Net users out there who will benefit greatly from this! Congratulations! And Mike Stockdale is the best too. Thank you both for so many contributions that the rest of us benefit from every day!

catherinelouis said...

Awesome Dawn! You totally rock. I am so impressed!

Anonymous said...

Greetings!
I’ve been checking the section for quite a long time but was feeling shy to join.
today some new cheap sun glasses links for my friends!
[URL=http://sunglasses-for-less.sunglassescheapcheapcheap.info/map.html]sunglasses for less[/URL]
[URL=http://sunglassescheapcheapcheap.info]cheap sunglasses[/URL]
[URL=http://chanel-silver-sunglasses.sunglassescheapcheapcheap.info]chanel silver sunglasses[/URL]
[URL=http://mazzi-sunglasses.sunglassescheapcheapcheap.info]mazzi sunglasses[/URL]
[URL=http://perscription-sunglasses-valentino.sunglassescheapcheapcheap.info]perscription sunglasses valentino[/URL]
[URL=http://sunglasses-clip-on.sunglassescheapcheapcheap.info]sunglasses clip on[/URL]
[URL=http://top-brands-sunglasses.sunglassescheapcheapcheap.info]top brands sunglasses[/URL]
[URL=http://famous-designers-sunglasses.sunglassescheapcheapcheap.info]famous designers sunglasses[/URL]
[URL=http://chole-sunglasses.sunglassescheapcheapcheap.info]chole sunglasses[/URL]
[URL=http://versace-mens-sunglasses.sunglassescheapcheapcheap.info]versace mens sunglasses[/URL]
[URL=http://julbo-sunglasses-website.sunglassescheapcheapcheap.info]julbo sunglasses website[/URL]
[URL=http://versace-cutout-temple-wrap-sunglasses.sunglassescheapcheapcheap.info]versace cutout temple wrap sunglasses[/URL]
[URL=http://coco-chanel-replica-sunglasses.sunglassescheapcheapcheap.info]coco chanel replica sunglasses[/URL]
[URL=http://prada-sunglasses-06e.sunglassescheapcheapcheap.info/map.html]prada sunglasses 06e[/URL]
[URL=http://kids-sunglasses.sunglassescheapcheapcheap.info]kids sunglasses[/URL]
[URL=http://older-armani-sunglasses.sunglassescheapcheapcheap.info]older armani sunglasses[/URL]
[URL=http://styleyes-sunglasses.sunglassescheapcheapcheap.info]styleyes sunglasses[/URL]
[URL=http://sunglasses-bugatti.sunglassescheapcheapcheap.info]sunglasses bugatti[/URL]
[URL=http://christain-dior-sunglasses.sunglassescheapcheapcheap.info]christain dior sunglasses[/URL]
[URL=http://victoria-sunglasses.sunglassescheapcheapcheap.info]victoria sunglasses[/URL]
[URL=http://roxy-foxy-sunglasses.sunglassescheapcheapcheap.info]roxy foxy sunglasses[/URL]

Your [b]sun glasses[/b] doctor

Anonymous said...

We supply high quality goods at affordable prices.They range from brand shoes such as the latest Air Jordan;Air Max;Puma;Timberland,FiveFingers and brand bags;scarves,watches,belts,and many other exquisite and trendy goods.To check out all these fashionable wears,please zoom in on us at www.cankicksnow.com Enjoy the ride!