diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index 08fc3be483d159d57fde5019b7158d1b9983d364..9de0d51526e24f5bfefac3d4164bff73cb3be7fe 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -255,6 +255,8 @@
                         QUnit.done(function(result) {
                             if (result.failed === 0) {
                                 console.log('ok');
+                            } else {
+                                console.log('error');
                             }
                         });
                         openerp.web.qweb.add_template("/web/webclient/qweb");
diff --git a/openerp/modules/module.py b/openerp/modules/module.py
index 8f34a74f882e04cf08b91e79a609fcf2a832fe89..cd21e681a8b22dce96db520fc9dd0196178a85ff 100644
--- a/openerp/modules/module.py
+++ b/openerp/modules/module.py
@@ -384,11 +384,12 @@ class TestStream(object):
         if self.r.match(s):
             return
         first = True
-        for c in s.split('\n'):
+        level = logging.ERROR if s.startswith(('ERROR', 'FAIL', 'Traceback')) else logging.INFO
+        for c in s.splitlines():
             if not first:
                 c = '` ' + c
             first = False
-            self.logger.info(c)
+            self.logger.log(level, c)
 
 current_test = None
 
diff --git a/openerp/tests/phantomtest.js b/openerp/tests/phantomtest.js
index 5a6a9696cc0f6f417477295b62998f68e93b44d2..84f886c5dbbc084be6819d9f8aabe03a3762269f 100644
--- a/openerp/tests/phantomtest.js
+++ b/openerp/tests/phantomtest.js
@@ -1,14 +1,15 @@
-// Phantomjs openerp helper
+// Phantomjs odoo helper
+// jshint evil: true, loopfunc: true
 
-function waitFor (ready, callback, timeout, timeoutMessageCallback) {
+function waitFor (condition, callback, timeout, timeoutMessageCallback) {
     timeout = timeout || 10000;
-    var start = new Date;
+    var start = new Date();
 
     (function waitLoop() {
-        if(new Date - start > timeout) {
+        if(new Date() - start > timeout) {
             console.log('error', timeoutMessageCallback ? timeoutMessageCallback() : "Timeout after "+timeout+" ms");
             phantom.exit(1);
-        } else if (ready()) {
+        } else if (condition()) {
             callback();
         } else {
             setTimeout(waitLoop, 250);
@@ -44,7 +45,7 @@ function PhantomTest() {
                 }
                 return result.join('');
             }));
-            msg.push('(leaf frame on top)')
+            msg.push('(leaf frame on top)');
         }
         console.log('error', JSON.stringify(msg.join('\n')));
         phantom.exit(1);
@@ -86,9 +87,9 @@ function PhantomTest() {
     };
     setTimeout(function () {
         self.page.evaluate(function () {
-            var message = ("Timeout\nhref: " + window.location.href
-                + "\nreferrer: " + document.referrer
-                + "\n\n" + (document.body && document.body.innerHTML)).replace(/[^a-z0-9\s~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, "*");
+            var message = ("Timeout\nhref: " + window.location.href +
+                           "\nreferrer: " + document.referrer +
+                           "\n\n" + (document.body && document.body.innerHTML)).replace(/[^a-z0-9\s~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, "*");
             console.log('error', message);
             phantom.exit(1);
         });
@@ -107,6 +108,8 @@ function PhantomTest() {
             url_path = "/login?" + qp.join('&');
         }
         var url = self.origin + url_path;
+        code = code || "true";
+        ready = ready || "true";
         self.page.open(url, function(status) {
             if (status !== 'success') {
                 console.log('error', "failed to load " + url);
@@ -115,7 +118,7 @@ function PhantomTest() {
                 console.log('loaded', url, status);
                 // process ready
                 waitFor(function() {
-                    console.log("PhantomTest.run: wait for condition: " + ready);
+                    console.log("PhantomTest.run: wait for condition:", ready);
                     return self.page.evaluate(function (ready) {
                         var r = false;
                         try {