From 5638b20046d81fdc3d706c92feaa020a28866ed8 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Mon, 24 Nov 2014 17:28:51 -0800 Subject: [PATCH] Expose test results to sauce * Do what blanket does, adding another level of indirection in the reporting. --- test/_test.js | 37 +++++++++++++++++++++++++++++++++++++ test/test.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/test/_test.js b/test/_test.js index 2f646f24..4ff896cd 100644 --- a/test/_test.js +++ b/test/_test.js @@ -16,6 +16,43 @@ mocha.setup("bdd"); window.assert = chai.assert; +(function() { + var OriginalReporter = mocha._reporter; + + var SauceReporter = function(runner) { + var failedTests = []; + + runner.on('end', function() { + window.mochaResults = runner.stats; + window.mochaResults.reports = failedTests; + }); + + runner.on('fail', function(test, err) { + var flattenTitles = function(test) { + var titles = []; + while (test.parent.title) { + titles.push(test.parent.title); + test = test.parent; + } + return titles.reverse(); + }; + failedTests.push({ + name: test.title, + result: false, + message: err.message, + stack: err.stack, + titles: flattenTitles(test) + }); + }); + + new OriginalReporter(runner); + }; + + SauceReporter.prototype = OriginalReporter.prototype; + + mocha.reporter(SauceReporter); +}()); + /* * global helpers for tests */ diff --git a/test/test.js b/test/test.js index c571e391..9633d166 100644 --- a/test/test.js +++ b/test/test.js @@ -10890,6 +10890,43 @@ require.alias("chai/index.js", "chai/index.js");if (typeof exports == "object") mocha.setup("bdd"); window.assert = chai.assert; +(function() { + var OriginalReporter = mocha._reporter; + + var SauceReporter = function(runner) { + var failedTests = []; + + runner.on('end', function() { + window.mochaResults = runner.stats; + window.mochaResults.reports = failedTests; + }); + + runner.on('fail', function(test, err) { + var flattenTitles = function(test) { + var titles = []; + while (test.parent.title) { + titles.push(test.parent.title); + test = test.parent; + } + return titles.reverse(); + }; + failedTests.push({ + name: test.title, + result: false, + message: err.message, + stack: err.stack, + titles: flattenTitles(test) + }); + }); + + new OriginalReporter(runner); + }; + + SauceReporter.prototype = OriginalReporter.prototype; + + mocha.reporter(SauceReporter); +}()); + /* * global helpers for tests */