I use JUnit and Selenium (1) to write automated integration tests. I've used it on a couple of projects so far.
I find the Selenium API too low-level, and end up writing generic 'wrapper' code, to deal with things like:
- checking the fields of a form are the same as they were before some 'save' button was clicked
- sharing the selenium instance between tests
- checking the browser isn't showing a stack trace
- waiting for elements to become present (from AJAX calls)
Is this an inevitable part of writing your own test harness? Or is there a wrapper library somewhere / should I bother to create one?