I had a different solution in my Perl Hacks talk this summer; I'll write it up and post it somewhere soon.
Meanwhile, I suggest making the web process generate plain TAP and running that through Test::Harness yourself elsewhere. That ought to avoid most of the tricky problems there. Perhaps you can have an extra directory of applications, properly password-protected of course, that run the tests for you.
(Be sure to redirect STDERR and STDOUT to the same place before you load any test modules, or else you likely won't get diagnostic output.)