Our tests render DOM nodes in the browser. They go so fast you can't actually see them unless you set a breakpoint, and because we don't serve any CSS or support files it's just the raw unstyled HTML, so it doesn't look like the application.
But for unit tests, that's all we need. We're validating that our view layer generates the correct DOM structure given the inputs. We don't drive the browser, we invoke the event handlers and DOM methods directly in the tests, then validate the structure changed accordingly.
We use Selenium as well to test the actual running application and interaction between our widgets. JsTestDriver does the unit tests for our widgets to make sure they behave standalone.
Logan