Why do you want to do headless testing? Is it purely due to the environment (such as I want to be able to run some automated tests on a build server that does not have a graphical subsystem)?
Regardless of the answer to the above, whatever solution you choose, the final target environment should shape your answer. For example, you could use the HtmlUnit WebDriver (http://htmlunit.sourceforge.net/). For my purposes, however, I would not consider using it since the underlying javascript engine is Rhino and none of my supported browsers use the Rhino engine. As such, any failures (or for that matter successful tests) will need an extra step to determine whether the failure is due to the java script engine used by the tool or due to a failure in the code or some combination of the two.
While not having a list of tools available for these engines, consider the tools that use the following engines if your target environment are in these browsers:
- Chrome - V8 JavaScript engine
- Firefox - Gecko JavaScript engine
- IE9 - Chakra
- Safari - WebKit
For testing these engines, I prefer to use the browser using Selenium.