Skip to content

Commit f84f0f2

Browse files
committed
Provide some colored output and detailed assertion logging for QUnit
Ref #41
1 parent 2896f4d commit f84f0f2

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

lib/_patch/browserstack.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
if (req.readyState==4)
2424
cb(req.responseText);
2525
};
26-
var data = "data=" + JSON.stringify(json)
26+
var data = "data=" + encodeURIComponent(JSON.stringify(json));
2727
req.open("POST", url, true);
2828
req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
2929
req.setRequestHeader('X-Browser-String', BrowserStack.browser_string);

lib/_patch/qunit-plugin.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@
3939

4040
var error = {
4141
actual: details.actual,
42-
expected: encodeURIComponent(details.expected),
43-
message: encodeURIComponent(details.message),
44-
source: encodeURIComponent(details.source),
42+
expected: details.expected,
43+
message: details.message,
44+
source: details.source,
4545
testName:( details.module + ": " + details.name)
4646
};
4747

lib/server.js

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ var http = require("http"),
55
qs = require("querystring"),
66
utils = require("./utils"),
77
config = require('../lib/config'),
8-
exec = require('child_process').exec;
8+
exec = require('child_process').exec,
9+
chalk = require('chalk');
910

1011
var mimeTypes = {
1112
"html": "text/html",
@@ -111,6 +112,26 @@ exports.Server = function Server(bsClient, workers) {
111112
return JSON.parse(qs.parse(body).data.escapeSpecialChars());
112113
}
113114

115+
function formatTraceback(details) {
116+
// looks like QUnit data
117+
if (details.testName) {
118+
var output = "'" + details.testName + "' failed";
119+
if (details.message) {
120+
output += ", " + details.message;
121+
}
122+
if (details.actual && details.expected) {
123+
output += "\n" + chalk.blue("Expected: ") + details.expected +
124+
"\n" + chalk.blue(" Actual: ") + details.actual;
125+
}
126+
if (details.source) {
127+
output += "\n" + chalk.blue(" Source: ") + "";
128+
output += details.source.split("\n").join("\n\t ");
129+
}
130+
return output;
131+
}
132+
return details;
133+
}
134+
114135
handlers = {
115136
"_progress": function progressHandler(uri, body, request, response) {
116137
var uuid = request.headers['x-worker-uuid'];
@@ -119,13 +140,13 @@ exports.Server = function Server(bsClient, workers) {
119140
try {
120141
query = parseBody(body);
121142
} catch(e) {
122-
console.log("[%s] Exception in parsing QUnit log", worker.string)
123-
console.log("[%s] Log: " + qs.parse(body).data, worker.string)
143+
console.log("[%s] Exception in parsing log", worker.string);
144+
console.log("[%s] Log: " + qs.parse(body).data, worker.string);
124145
}
125146

126147
if (query.tracebacks) {
127148
query.tracebacks.forEach(function(traceback) {
128-
console.log("[%s] Error:", worker.string, traceback);
149+
console.log(chalk.red("[%s] Error:"), worker.string, formatTraceback(traceback));
129150
});
130151
}
131152
response.end();
@@ -148,8 +169,8 @@ exports.Server = function Server(bsClient, workers) {
148169
console.log(traceback);
149170
});
150171
}
151-
152-
console.log("[%s] Completed in %d milliseconds. %d of %d passed, %d failed.", request.headers['x-browser-string'], query.runtime, query.passed, query.total, query.failed);
172+
var color = query.failed ? "red" : "green";
173+
console.log(chalk[color]("[%s] Completed in %d milliseconds. %d of %d passed, %d failed."), request.headers['x-browser-string'], query.runtime, query.passed, query.total, query.failed);
153174
status += query.failed;
154175
}
155176

@@ -170,7 +191,8 @@ exports.Server = function Server(bsClient, workers) {
170191
delete workers[uuid];
171192

172193
if (utils.objectSize(workers) === 0) {
173-
console.log("All tests done, failures: %d.", status);
194+
var color = status > 0 ? "red" : "green";
195+
console.log(chalk[color]("All tests done, failures: %d."), status);
174196

175197
if (status > 0) {
176198
status = 1;

0 commit comments

Comments
 (0)