| jasmine.HtmlReporter = function(_doc) { |
| var self = this; |
| var doc = _doc || window.document; |
| |
| var reporterView; |
| |
| var dom = {}; |
| |
| // Jasmine Reporter Public Interface |
| self.logRunningSpecs = false; |
| |
| self.reportRunnerStarting = function(runner) { |
| var specs = runner.specs() || []; |
| |
| if (specs.length == 0) { |
| return; |
| } |
| |
| createReporterDom(runner.env.versionString()); |
| doc.body.appendChild(dom.reporter); |
| |
| reporterView = new jasmine.HtmlReporter.ReporterView(dom); |
| reporterView.addSpecs(specs, self.specFilter); |
| }; |
| |
| self.reportRunnerResults = function(runner) { |
| reporterView && reporterView.complete(); |
| }; |
| |
| self.reportSuiteResults = function(suite) { |
| reporterView.suiteComplete(suite); |
| }; |
| |
| self.reportSpecStarting = function(spec) { |
| if (self.logRunningSpecs) { |
| self.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...'); |
| } |
| }; |
| |
| self.reportSpecResults = function(spec) { |
| reporterView.specComplete(spec); |
| }; |
| |
| self.log = function() { |
| var console = jasmine.getGlobal().console; |
| if (console && console.log) { |
| if (console.log.apply) { |
| console.log.apply(console, arguments); |
| } else { |
| console.log(arguments); // ie fix: console.log.apply doesn't exist on ie |
| } |
| } |
| }; |
| |
| self.specFilter = function(spec) { |
| if (!focusedSpecName()) { |
| return true; |
| } |
| |
| return spec.getFullName().indexOf(focusedSpecName()) === 0; |
| }; |
| |
| return self; |
| |
| function focusedSpecName() { |
| var specName; |
| |
| (function memoizeFocusedSpec() { |
| if (specName) { |
| return; |
| } |
| |
| var paramMap = []; |
| var params = doc.location.search.substring(1).split('&'); |
| |
| for (var i = 0; i < params.length; i++) { |
| var p = params[i].split('='); |
| paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]); |
| } |
| |
| specName = paramMap.spec; |
| })(); |
| |
| return specName; |
| } |
| |
| function createReporterDom(version) { |
| dom.reporter = self.createDom('div', { id: 'HTMLReporter', className: 'jasmine_reporter' }, |
| dom.banner = self.createDom('div', { className: 'banner' }, |
| self.createDom('span', { className: 'title' }, "Jasmine "), |
| self.createDom('span', { className: 'version' }, version)), |
| |
| dom.symbolSummary = self.createDom('ul', {className: 'symbolSummary'}), |
| dom.alert = self.createDom('div', {className: 'alert'}), |
| dom.results = self.createDom('div', {className: 'results'}, |
| dom.summary = self.createDom('div', { className: 'summary' }), |
| dom.details = self.createDom('div', { id: 'details' })) |
| ); |
| } |
| }; |
| jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter); |