Even better is the interaction between the test runner and the debugger. Unit tests are orders of magnitude more useful when you can just open a debugger on a failing assertion.
Not to mention the integration between the debugger and Seaside...
I always get a few jaw drops when I fix code and the page comes up once I press "Proceed".
The thing is, that's not really "integration." That's just the Debugger doing what it usually does. There's no abstruse code supporting that. (Usually Smalltalk environment "integration" does require a few lines of pedestrian code.)
Well, Seaside does have explicit code to support the debug link. If you get an exception during rendering, the framework generates a 500 response with a "Debug" link. Clicking the link restarts the previous request, and when it hits the exception, it opens a debugger instead of generating the 500 response. If you fix the error and continue, the page is sent to the browser as usual.