Have you wondered why testing automation for web applications is hard?
If you're coming from a JSF1/2 background you know that writing reliable tests, that are able to resist minor changes becomes an almost impossible chore. There are several issues, and each of them seems to be coming in your face:
JSF can not be rendered independently. You need to bring up one servlet container where the application is actually deployed in order to render even the simplest template.
You need IDs for your components, so the recorders can actually match them. Turns out that JSF generates all the IDs for a bunch of components, and even if you set them manually those are actually component IDs, and not real usable unique IDs.
You can't really easy integrate from a JUnit environment and run tests, unless you run them with HTMLUnit. Cross browser testing becomes either a dream, either a very expensive reality.
How about AJAX calls? How hard to replay them is then?
How do you actually manage the test suites, since they tend to grow?
How do you get some form of regression testing, even outside a Java building environment (outside unit tests).
This is what germanium tries to address in its following implementation. Several issues are easy to be done, some of them are harder.
But I am convinced that there is no way things must stay in this way.