If I have a webpage that only does one thing, it executes
alert('Hello world');
Then the headless solution would have to be able to check that the alert fired. If your testing framework does not execute the JavaScript on the page (i.e just fetching the resources) then you are back to square one.
I have no idea if Mechanize executes page JavaScript, but SlimerJS (and PhantomJS) does. Which is the difference here.
* execute alert will probably for most use cases be bootstrapping some MVC and setting properties, doing navigation and so on.