Impressive WebDriver performance with HtmlUnit

A WebDriver user has recently posted interesting execution times for his test suite in HtmlUnit’s mailing list depending on the driven browser.

Here are his results for his 600 tests:

  • 2 hours: Sauce Labs
  • 40 minutes: Chrome
  • 10 minutes: HTMLUnit
  • 4 minutes: HTMLUnit + surefire plugin parallel execution

The complete email can be read here.

Of course this doesn’t mean at all that the HtmlUnitDriver is always faster than the “real” browsers. There are many cases where HtmlUnit is too slow, no discussion. Additionally more information would be interesting here to correctly interpret the execution times like the results when driving Firefox and the kind of browser simulated with HtmlUnit. Nevertheless such results are always encouraging for HtmlUnit’s developer.

HtmlUnit 2.8 released

Nearly 6 months after release 2.7, HtmlUnit-2.8 is finally ready.

This release comes later as originally planned as we wanted to avoid as most as possible any side effect of the large internal changes. I’m now quite confident that we have reached a really good status.

Here is an extract of the change log:

  • single thread for background JS execution
  • migration to HttpClient 4
  • initial support for FF3.6 simulation
  • support for SOCKS proxy
  • initial support for Google AppEngine
  • support for large (binary) download


The support for Google AppEngine which is based on contributions from Google’s GWT team is exciting as it will open the door to new usage of HtmlUnit.

The number of HtmlUnit users continuously grows and, as the consequence, so does the number of reported issues and feature wishes. We will try to address it in next release.

HtmlUnit 2.5 released

The HtmlUnit team is pleased to announce the release of HtmlUnit 2.5. This release brings another round of improvements and bug fixes.

Here is an extract of the change log:


HtmlUnit @ JavaOne 09

Great news: the proposal of HtmlUnit committers Daniel Gredler and Ahmed Ashour for the next JavaOne conference has been accepted!

They will present ” HtmlUnit: An Efficient Approach to Testing Web Applications ” at the biggest Java conference in San Francisco (May 31 – June 05).

This is an additional very good sign for the constantly growing recognition of HtmlUnit and I hope that it will be the occasion for them to meet a lot of HtmlUnit users.

Should HtmlUnit move to Apache Foundation?

Should HtmlUnit move to Apache Foundation? (the first step would be to make a proposal for the Apache Incubator)

Nothing is decided, we’re just thinking loud and are interested to hear what our users think of this idea. I’ve started the discussion in HtmlUnit user mailing list but comments are welcome here too.

TheServerSide Java Symposium: “HtmlUnit: An Efficient Approach to Testing Web Applications”


I will present “HtmlUnit: An Efficient Approach to Testing Web Applications” together with Daniel Gredler at TheServerSide Java Symposium in Las Vegas (March, 18).

This will be funny because I work together with Daniel in the HtmlUnit project since a few years and I’ve never met him until now.

I think that this will be a great occasion to show HtmlUnit’s potential and I hope that we will meet a lot of HtmlUnit users.

Thanks to Tools & Techniques chair Frank Cohen for inviting us.

HtmlUnit 2.4 released

The HtmlUnit project is pleased to announce the availability of the HtmlUnit 2.4 release.
This release brings another round of improvements and bug fixes. This should have been a Christmas relase but a regression found in NekoHtml-1.10 forced us to wait a bit.

Here is an extract of the change log:

  • improved JS support, particularly full support for the AJAX libraries JQuery and MochiKit
  • possibility to use real ActiveX objects (on windows only)
  • minimal applet support
  • support for IE conditional comments



HtmlUnit: full support for MochiKit

Upcoming release 2.4 of HtmlUnit will provide 100% support (1) for the JavaScript library MochiKit (version 1.4.1)!

The library’s own tests are integrated in HtmlUnit’s build and they now all (2) pass, no matter if we simulate Firefox 2, Firefox 3, Internet Explorer 6 or Internet Explorer 7. This time, it was not so complicated to reach 100% support: fix a bug in Rhino, implement a dummy support for the filters property on HTML elements when simulating IE, handle detached nodes for offsetParent, and fix a few things in computing CSS properties.

I believe that we’re on the right way and that we’ll soon be able to announce full support for other well known libraries.

(1) I suppose here that the library’s own tests are representative for the library usage.
(2) In fact we run only the tests files that pass in a “real” browser and therefore have to ignore 3 files.

HtmlUnit 2.3 released

The HtmlUnit project is pleased to announce the release of HtmlUnit 2.3. This release brings another round of improvements and bug fixes (the release process has taken an unusual long time due to problems caused by SourceForge datacenter migration).

Here is an extract of the complete change log:
– better generics support to avoid casting
– improved JS support, particularly full support for GWT 1.5
– Firefox 3 now in the list of the simulated browsers
– a CookieManager
– …

The generics improvements may require some simple code changes if you are using Sun Java 5 compiler due to a bug which has been fixed in Sun Java 6 compiler but not been back ported.



Why Google should better use HtmlUnit to avoid JS error on its start page

Like many other testing tools, WebTest uses Google‘s website for simple code examples. It has the advantage to be a well known website, pretty fast and with simple code. used to be a simple page

For some time WebTest users started to report that even simple examples from the demo tests available when creating a new project failed due to JS errors like this:

As this test used to work, this means that Google’s start page isn’t so simple any more that it used to be. It was predictable that this page would change one day but it is quite embarrassing as we use this kind of tests to show how easy and powerful WebTest is even for sites using a lot of JS stuff. has really a JS error!

HtmlUnit‘s JS support is quite good (and improved continuously), but of course not (yet 😉 ) as good as the one of “real” browsers, therefore I’ve started to search for the cause of the problem in HtmlUnit, looking for missing/incorrect implementation of some JS functionalities. At the end I’ve found that the problem occurred only when setting directly the value attribute of the field rather than calling the type(...) method on it because keypress handlers were being used. This means that WebTest should probably use type(...) rather than setting the field’s value directly.

But this means as well that Google’s home page relies on the keypress handlers and that the JavaScript code doesn’t work correctly if these handlers are not called like in following scenario:

  1. – go to (to be sure to have the English version of the page)
  2. – right mouse click in the search field to paste some value to search for
  3. – click the “I’m Feeling Lucky” button

The results are quite similar to the JS error obtained by WebTest, no matter if you use Firefox or Internet Explorer (perhaps does it work correctly with Chrome 😉 ):

Rather painful for Google than for WebTest!

OK, this error is nothing dramatical but for an Internet giant like Google that has plenty of talented engineers (and …, and…, and …. You perhaps know better than I what the web means for Google), I find quite painful to have such an error on its main page!

The error scenario is not particularly complicated and such a case should surely be covered by automated tests. Perhaps is it a question of inadequate tools? Google seems to use intensively Selenium 😉 .

Concerning WebTest, I’ll start the discussion on the mailing list to decide what is the best way to follow: setting directly the field value, typing it, or having both possibilities.

« Older entries