Wednesday, December 22, 2010

Selenium 2.0-beta-1 (WebDriver) released.

Of course, the 'beta' label for WebDriver is somewhat late, seeing as many companies have been relying on it for at least three years, but the beta-1 was pushed out yesterday.

WebDriver started at ThoughtWorks a few years ago. Its lead, Simon Stewart, and his now Google colleagues have spent a lot of time on it since. The Selenium-1.x team (Jason Huggins, Pat Lightbody, Dan Fabulich, & many more) and new committers and friends have helped production harden WebDriver to the extent where its an admirable replacement for Selenium-RC (1.x).

There is a little brand confusion as to whether this is Selenium 2.0 or WebDriver that will resolve in time, but it is true however that Selenium 1.x will have no more major releases. That means no more Selenium-Core or Selenium-RC (other than bug fix releases). The reverse takeover that is WebDriver emulating the old Selenium is good enough for prime-time usage. Actually it has probably been good enough for some time.

As a side note, when Jason and I charted the course for 'Driven Selenium' (which became Selenium-RC) we noted that it was an ill-advised idea. We were committing to porting driver code to half a dozen languages, and maintaining a JavaScript hairball that was the in-browser 'core' runner. We shuddered at the scale of the Continuous Integration build needed to make that. Simon's fresh start with WebDriver was no less ill-concieved in terms of the hodge-podge of technologies needed to complete it. The reverse take over nature of the merger back then gave us much relief because we knew that sooner or later the 1.x codeline would be dead and we would toast that overdue demise!

Good work Simon and all involved!

Watch for updates.

Tuesday, August 31, 2010

JBehave 3.0 released

The team is happy to announce the release of JBehave 3.0. This major milestone has been lead by friend of ThoughtWorks, Mauro Talevi (still no blog) and pushes the usability and nomenclature of JBehave quite a bit.

Read the announcement and release notes.

Summarizing the release notes a little: 7 bugs, 45 improvements, and 11 new features later, JBehave 3.0 is now happily a Git citizen, with repos mirrored from Codehaus to Github.

If thought of as a JUnit plugin (which is an over-simplification) JBehave 3.0 is perfect for "in the box" enterprise development now. Note also there are now plugins for Guice, Spring and PicoContainer to allow Dependency Injection to play a part in the composition of Behavior Driven Development (BDD) tests.

Sunday, July 25, 2010

Frank: Automated Acceptance Tests for iPhone and iPad

Announcing Frank, a lightweight UI automation framework for iPhone and iPad applications.

[Click Here to watch the screencast in a more sensible size!]

Frank sews together several open source tools, notably UISpec, cocoahttpserver, and Cucumber. The goal is to automate basic UI-level acceptance testing of an iPhone or iPad application, integrated into a Continuous Integration system.

You can read more about Frank here.

Tuesday, July 20, 2010

Code Complexity Visualization for Ruby

Image from

WTF implies lack of clarity. Clear code is easier to understand, easier to maintain and easier to extend.

Announcing saikuro_treemap -- an easy to setup tool to generate complexity treemaps of ruby code.

See a demo for yourself.

Thursday, June 3, 2010

Mockpico beta

Mockpico is an interesting tool. It leverages Mockito and PicoContainer to allow easy instantiation of Spring Controllers for unit testing. Often controllers have many dependencies injected into it via constructors, setters, fields. Sometimes these would be annotated with @Autowired, sometimes not (old fashioned XML composition). When in unit tests, you don't really want to have to specify every injectee as the particular request mapping you want to test might not use them all. With Constructor Injection you kinda have to specify them all of course, though 'null' might be an OK thing to specify.

Anyway, Mockpico makes it easier :- (scroll down for colorful diagram)

It is pushed out as beta-1d as you can see here;quick~mockpico. A Maven/gpg learning curve conspired to make this work on its fourth attempt (a thru d).

Monday, May 10, 2010

ProxyToys 1.0 released

Five or so years in development prior to the 1.0 moment, ProxyToys has finally shipped. Well it was perfectly usable in its 0.21 incarnation, but 1.0 makes ProxyToys fully JDK 5 compatible, and changes much more too:

  • Use JDK 5 language features.
  • Added builder classes for all toys (refer Martin Fowler's FluentInterface).
  • New FutureToy to run methods asynchronously
  • New PrivilegeToy to run methods as privileged actions.
In case you did not know, ProxyToys takes Java Classes/Interfaces and makes specialized implementations like NullObject, Pooled, Multicaster, Decorated. The project was first started by (now ex) ThoughtWorker Dan North, and pushed forward by many others since then.

Sunday, February 21, 2010

PicoContainer 2.10 released

Perhaps the last version of PicoContainer 2.x before focussing on 3.x, 2.10 was released earlier today. Changes:

1. String converters can now be overridden, and added to.
2. There's a new type of method injection that matches on method name.
3. The first piece of JSR 330 compatibility has been ushered it - the @Named annotation is recognized.

Aside from those feature changes, bugs have been fixed in FactoryInjectors and Provided lifecycles.

- Paul

Wednesday, January 20, 2010

JBehave 2.4 released

JBehave continues to push forwards. This time with a 2.4 release, we have better output from scenario runs, new statistics gathering and reporting, and steps classes themselves can now optionally be POJOs (there had to extend a base class before). It is mostly non-ThoughtWorkers and ex-ThoughtWorkers steering JBehave now, but we still remain involved with each release contributing things that are important to us. See the release notes. Great work gang!

Saturday, January 2, 2010

QDox and Paranamer releases

QDox's backlog of issues has been reduced by a decent percentage again by Robert Scholte and it has been released as version 1.10.1. Joe Walnes (who started the project) suggests that Robert becomes lead going forward. Codehaus encourages this sort of thing, and Robert has been defacto lead for much of last year. See the road-map for more information on where QDox is heading.

Paranamer 2.2 has been released too. It often follows QDox as one of the sub-modules uses it. This time though there's a new functionality too. There is a new implementation called AnnotationParanamer that can leverage the @Named annotation of JSR 330 for parameter name data. By nesting Paranamer implementations, you can allow @Named to override the natural parameter name of the method or constructor selectively. Paranamer has also dropped JDK 1.4 compatibility. Strictly speaking it could have remained mixed-mode 1.4 and 5.0 compatible, but by now only laggards are stuck on 1.4, and the old versions of Paranamer are still available. It is a very niche project, but does push the Java bar a little. Enjoy!