Skip to content

Commit 3f5ed4d

Browse files
committed
Merge pull request #34 from browserstack/qunitlogging
QUnit logging
2 parents d006c8e + 8ebac90 commit 3f5ed4d

File tree

2 files changed

+52
-30
lines changed

2 files changed

+52
-30
lines changed

lib/_patch/qunit-plugin.js

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,47 @@
1-
// Here begins strider-qunit extension plugin
1+
// For logging assertions on the console, here's what grunt-contrib-qunit uses:
2+
// https://github.com/gruntjs/grunt-contrib-qunit/blob/784597023e7235337ca9c0651aa45124a2d72341/tasks/qunit.js#L45
23
(function(){
34

4-
var striderErrors = []
5-
, i = 0;
5+
var failedAssertions = [];
6+
var options, currentModule, currentTest, setTimeoutVariable;
7+
var pendingTest = {};
68

7-
QUnit.log = function(res){
8-
i++;
9-
if (!res || !res.result){
10-
// Failure:
11-
striderErrors.push(JSON.stringify(res));
12-
}
13-
if (i%50 == 0){
14-
var data = {
15-
tests_run: i
16-
, tracebacks: striderErrors
17-
, url : window.location.pathname
18-
}
19-
striderErrors = [];
20-
BrowserStack.post('/_progress', data, function(){});
9+
var testTimeout = function() {
10+
var error = {
11+
testName: currentTest, message: "Stuck on this test for 60 sec."
2112
}
13+
14+
BrowserStack.post('/_progress', {tracebacks: [error]}, function(){});
2215
}
2316

24-
QUnit.done = function(results){
25-
results.tracebacks = striderErrors;
17+
QUnit.testDone(function( details ) {
18+
var ct = details.module + " - " + details.name;
19+
clearTimeout(pendingTest[ct]);
20+
});
21+
22+
QUnit.testStart(function( details ) {
23+
currentTest = details.module + " - " + details.name;
24+
pendingTest[currentTest] = setTimeout(function(){
25+
testTimeout(currentTest);
26+
}, 60000);
27+
});
28+
29+
QUnit.log(function( details ) {
30+
if ( details.result ) {
31+
return;
32+
}
33+
34+
var error = {
35+
actual: details.actual, expected: encodeURIComponent(details.expected), message: encodeURIComponent(details.message), source: encodeURIComponent(details.source),
36+
testName: (details.module + ": " + details.name)
37+
}
38+
39+
BrowserStack.post('/_progress', {tracebacks: [error]}, function(){});
40+
});
41+
42+
QUnit.done(function( results ) {
2643
results.url = window.location.pathname;
2744
BrowserStack.post("/_report", results, function(){});
28-
}
45+
});
46+
2947
})();
30-
// End Strider

lib/server.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ exports.Server = function Server(bsClient, workers) {
3636
response.end();
3737
return;
3838
}
39+
40+
if (fs.lstatSync(filename).isDirectory()) {
41+
filename = filename + (filename.lastIndexOf('/') == filename.length - 1 ? "" : "/") + "index.html";
42+
}
3943

4044
fs.readFile(filename, "binary", function(err, file) {
4145

@@ -47,7 +51,7 @@ exports.Server = function Server(bsClient, workers) {
4751
}
4852

4953
var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
50-
response.writeHead(200, mimeType);
54+
response.writeHead(200, {"Content-Type": mimeType});
5155

5256
scripts = [
5357
'json2.js',
@@ -95,7 +99,7 @@ exports.Server = function Server(bsClient, workers) {
9599
}
96100

97101
function parseBody(body) {
98-
return JSON.parse(qs.parse(body).data);
102+
return JSON.parse(qs.parse(body).data.replace(/\n/g, "\\n"));
99103
}
100104

101105
handlers = {
@@ -104,14 +108,15 @@ exports.Server = function Server(bsClient, workers) {
104108

105109
var uuid = request.headers['x-worker-uuid'];
106110
var worker = workers[uuid];
107-
// console.log("Tests run:", query.tests_run);
108-
// if (query.tracebacks) {
109-
// query.tracebacks.forEach(function (traceback) {
110-
// console.log("Error:", traceback);
111-
// });
112-
// }
111+
//console.log("Tests run:", query.tests_run);
112+
if (query.tracebacks) {
113+
query.tracebacks.forEach(function (traceback) {
114+
console.log("[%s] Error:", worker.string, traceback);
115+
});
116+
}
113117
response.end();
114118
},
119+
115120
"_report": function reportHandler(uri, body, request, response) {
116121
query = null;
117122
try {query = parseBody(body); }catch(e){}
@@ -121,7 +126,7 @@ exports.Server = function Server(bsClient, workers) {
121126
if (query == null) {
122127
console.log("[%s] Null response from remote Browser", request.headers['x-browser-string']);
123128
} else {
124-
if (query.tracebacks.length > 0) {
129+
if (query.tracebacks && query.tracebacks.length > 0) {
125130
console.log("Tracebacks:");
126131
query.tracebacks.forEach(function (traceback) {
127132
console.log(traceback);

0 commit comments

Comments
 (0)