(function (global) { /* jshint browser:true */ /* global alert, BROWSER_NAME */ /** * Save timer references to avoid Sinon interfering (see GH-237). */ var Date = global.Date; var setTimeout = global.setTimeout; var setInterval = global.setInterval; var clearTimeout = global.clearTimeout; var clearInterval = global.clearInterval; var mocha = global.mocha; var Base = mocha.reporter('base')._reporter; var $ = global.jQuery; /** * Expose `HTML`. */ global.EsjsReporter = EsjsReporter; /** * Initialize a new `HTML` reporter. * * @param {Runner} runner * @api public */ function EsjsReporter(runner, root) { Base.call(this, runner); var stats = this.stats; var rootSuite = { $el: $(''), name: 'root', start: Date.now(), results: [], suites: [], stdout: '', stderr: '', }; var stack = [rootSuite]; rootSuite.$el.appendTo(root || '#mocha'); runner.on('suite', function (suite) { if (suite.root) { $.post('/tests-started'); return; } // suite suite = { name: suite.title, results: [], start: Date.now(), stdout: '', stderr: '', $el: $('
  • ').append($('

    ').text(suite.title)), $results: $('