Suffering of Selenese Flu? Try webdriver

I've been suffering of selenese flu for months, being on a .net project we were using selenium RC. The typical symptoms are flaky, slow tests and sometimes a lot of sleeps in your code to make it work. Selenium has its age and it struggles to cope with the current web 2.0 asynchronous calls & rich javascript. Fortunately old good Simon is working hard at Google on webdriver, and in December the official port has been released also for the .net platform. It works alright, there are some classes missing and you have to put the IE dll on your project as a content so that it gets copied on the bin folder to make it work. A part from that, it's faster, more reliable, more fun to write. It's time to cure your flu, webdriver is your medication.

Readability Über Alles

Well we all agree that code should be readable, but what on websites? Most of the times the font is too small, there are banners around, weird colour combinations, today by coincidence I found this awesome application.
READABILITY is a simple tool that makes reading on the Web more enjoyable by removing the clutter around what you’re reading.
It works very well, reading a nice article is just like reading a page of a book.

Tibco GI? No thanks

Recently we tried TIBCO GI, I've to say that I've not been particularly happy with it, here is my list of cons:
  • Not easy to test: impossible to test headless (is not supported by htmlunit), impossible to test with webdriver: Tibco provides a "Test Automation Kit", however we had to write an extension of SeleniumServer in order to be able to write SeleniumRC from java... Pretty bad!
  • It couples java, xml and javascript: yes it does, you write your objects in java, you configure them in xml and in the end you write some javascript that calls theirs java methods, a maintenance (and team on-boarding) mess!
  • Yet another tool: to edit the UI there's no plugin for Eclipse, you've to use a TibcoGI tool to edit the UI... Pretty bad!
  • Small community: I found the community pretty small and completely unaware of the modern testing techniques (webdriver & htmlunit to start with)
  • XML, XSL and Javascript: at the end it's all about these three technologies, all together, a scary combination.
  • Some browser are supported, some others.. No comment
Pros? Well, you can write very quickly a pretty web interface but why not considering flex then?

Waffles are good, do you fancy a Waffle?

During ThoughtWorks University XI we took the decision to introduce to the trainees Waffle as an example of MVC framework.  I've been impressed by the simplicity of the framework. It has been a while since the last time I've played with any Java Web Framework ( I think it was around 6 years ago the last time, using the super hated Struts 1.0! ) So the first good news is the Java world is alive and some good people are writing great frameworks ( with also the big help of all the knowledge/experience gained using other languages)  I've a very personal opinion on this: many people moved to Ruby and have such a bad remembering of the old times in Java, well I think that frameworks like Waffle keeps the name of Java high.  In addition to that Waffle has a nicer design compared to Rails, no command line scripting ( you might like it, I don't ), it's not annotation heavy and you don't have to write a line of xml ( ok, just one but in the web.xml! ) The only bad thing of Waffle is that there's not that much documentation on the web ( I've to say that it's so simple to use that you don't need it! ) so my goal for the next months will be blog as much as possible about it and prepare some speeches too. When I find something good I definitely want to spread it, and this is the case.
Media_httpwebmitedusm_lvowc
 
  Waffle is different from the multitude of web frameworks that exist today, in that Waffle:
  • has no mandatory XML configuration files (beyond a minimalist web.xml required by any J2EE-compliant webapp)
  • is interoperable with best-of-breed UI templating technologies
  • does not have a base controller class to extend or interface to implement
  • has controller classes that can support multiple actions, each a single method rather than a sequence of initialiation/settter/execute methods
  • has a small learning curve