diff --git a/lib/jasmine-core/jasmine-html.js b/lib/jasmine-core/jasmine-html.js index 73834010..aec567e7 100644 --- a/lib/jasmine-core/jasmine-html.js +++ b/lib/jasmine-core/jasmine-html.js @@ -1,7 +1,478 @@ +jasmine.HtmlReporterHelpers = {}; + +jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) { + var el = document.createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(document.createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == "className") { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; +}; + +jasmine.HtmlReporterHelpers.getSpecStatus = function(child) { + var results = child.results(); + var status = results.passed() ? 'passed' : 'failed'; + if (results.skipped) { + status = 'skipped'; + } + + return status; +}; + +jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) { + var parentDiv = this.dom.summary; + var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite'; + var parent = child[parentSuite]; + + if (parent) { + if (typeof this.views.suites[parent.id] == 'undefined') { + this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views); + } + parentDiv = this.views.suites[parent.id].element; + } + + parentDiv.appendChild(childElement); +}; + + +jasmine.HtmlReporterHelpers.addHelpers = function(ctor) { + for(var fn in jasmine.HtmlReporterHelpers) { + ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn]; + } +}; + +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.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', { 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);jasmine.HtmlReporterHelpers = {}; + +jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) { + var el = document.createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(document.createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == "className") { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; +}; + +jasmine.HtmlReporterHelpers.getSpecStatus = function(child) { + var results = child.results(); + var status = results.passed() ? 'passed' : 'failed'; + if (results.skipped) { + status = 'skipped'; + } + + return status; +}; + +jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) { + var parentDiv = this.dom.summary; + var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite'; + var parent = child[parentSuite]; + + if (parent) { + if (typeof this.views.suites[parent.id] == 'undefined') { + this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views); + } + parentDiv = this.views.suites[parent.id].element; + } + + parentDiv.appendChild(childElement); +}; + + +jasmine.HtmlReporterHelpers.addHelpers = function(ctor) { + for(var fn in jasmine.HtmlReporterHelpers) { + ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn]; + } +}; + +jasmine.HtmlReporter.ReporterView = function(dom) { + this.startedAt = new Date(); + this.runningSpecCount = 0; + this.completeSpecCount = 0; + this.passedCount = 0; + this.failedCount = 0; + this.skippedCount = 0; + + this.createResultsMenu = function() { + this.resultsMenu = this.createDom('span', {className: 'resultsMenu bar'}, + this.summaryMenuItem = this.createDom('a', {className: 'summaryMenuItem', href: "#"}, '0 specs'), + ' | ', + this.detailsMenuItem = this.createDom('a', {className: 'detailsMenuItem', href: "#"}, '0 failing')); + + this.summaryMenuItem.onclick = function() { + dom.reporter.className = dom.reporter.className.replace(/ showDetails/g, ''); + }; + + this.detailsMenuItem.onclick = function() { + showDetails(); + }; + }; + + this.specComplete = function(spec) { + this.completeSpecCount++; + var specView = this.views.specs[spec.id]; + + switch (specView.status()) { + case 'passed': + this.passedCount++; + break; + + case 'failed': + this.failedCount++; + break; + + case 'skipped': + this.skippedCount++; + break; + } + + specView.refresh(); + this.refresh(); + }; + + this.suiteComplete = function(suite) { + var suiteView = this.views.suites[suite.id]; + if (isUndefined(suiteView)) { + return; + } + suiteView.refresh(); + }; + + this.refresh = function() { + + if (isUndefined(this.resultsMenu)) { + this.createResultsMenu(); + } + + // currently running UI + if (isUndefined(this.runningAlert)) { + this.runningAlert = this.createDom('a', {href: "?", className: "runningAlert bar"}); + dom.alert.appendChild(this.runningAlert); + } + this.runningAlert.innerHTML = "Running " + this.completeSpecCount + " of " + this.totalSpecCount + " spec" + (this.totalSpecCount == 1 ? "" : "s" ); + + // skipped specs UI + if (isUndefined(this.skippedAlert)) { + this.skippedAlert = this.createDom('a', {href: "?", className: "skippedAlert bar"}); + } + + this.skippedAlert.innerHTML = "Skipping " + this.skippedCount + " of " + this.totalSpecCount + " spec" + (this.totalSpecCount == 1 ? "" : "s" ) + " - run all"; + + if (this.skippedCount === 1 && isDefined(dom.alert)) { + dom.alert.appendChild(this.skippedAlert); + } + + // passing specs UI + if (isUndefined(this.passedAlert)) { + this.passedAlert = this.createDom('span', {href: "?", className: "passingAlert bar"}); + } + this.passedAlert.innerHTML = "Passing " + this.passedCount + " spec" + (this.passedCount == 1 ? "" : "s" ); + + // failing specs UI + if (isUndefined(this.failedAlert)) { + this.failedAlert = this.createDom('span', {href: "?", className: "failingAlert bar"}); + } + this.failedAlert.innerHTML = "Failing " + this.failedCount + " spec" + (this.totalSpecCount == 1 ? "" : "s" ); + + if (this.failedCount === 1 && isDefined(dom.alert)) { + dom.alert.appendChild(this.failedAlert); + dom.alert.appendChild(this.resultsMenu); + } + + // summary info + this.summaryMenuItem.innerHTML = "" + this.runningSpecCount + " spec" + (this.runningSpecCount == 1 ? "" : "s" ); + this.detailsMenuItem.innerHTML = "" + this.failedCount + " failing"; + }; + + this.complete = function() { + dom.alert.removeChild(this.runningAlert); + + this.skippedAlert.innerHTML = "Ran " + this.runningSpecCount + " of " + this.totalSpecCount + " spec" + (this.totalSpecCount == 1 ? "" : "s" ) + " - run all"; + + if (this.failedCount === 0) { + dom.alert.appendChild(this.createDom('span', {className: 'passingAlert bar'}, "Passing " + this.passedCount + " spec" + (this.passedCount == 1 ? "" : "s" ))); + } else { + showDetails(); + } + + dom.banner.appendChild(this.createDom('span', {className: 'duration'}, "finished in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s")); + }; + + this.addSpecs = function(specs, specFilter) { + this.totalSpecCount = specs.length; + + this.views = { + specs: {}, + suites: {} + }; + + for (var i = 0; i < specs.length; i++) { + var spec = specs[i]; + this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom, this.views); + if (specFilter(spec)) { + this.runningSpecCount++; + } + } + }; + + return this; + + function showDetails() { + if (dom.reporter.className.search(/showDetails/) === -1) { + dom.reporter.className += " showDetails"; + } + } + + function isUndefined(obj) { + return typeof obj === 'undefined'; + } + + function isDefined(obj) { + return !isUndefined(obj); + } +}; + +jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.ReporterView); + + +jasmine.HtmlReporter.SpecView = function(spec, dom, views) { + this.spec = spec; + this.dom = dom; + this.views = views; + + this.symbol = this.createDom('li', { className: 'pending' }); + this.dom.symbolSummary.appendChild(this.symbol); + + this.summary = this.createDom('div', { className: 'specSummary' }, + this.createDom('a', { + className: 'description', + href: '?spec=' + encodeURIComponent(this.spec.getFullName()), + title: this.spec.getFullName() + }, this.spec.description) + ); + + this.detail = this.createDom('div', { className: 'specDetail' }, + this.createDom('a', { + className: 'description', + href: '?spec=' + encodeURIComponent(this.spec.getFullName()), + title: this.spec.getFullName() + }, this.spec.getFullName()) + ); +}; + +jasmine.HtmlReporter.SpecView.prototype.status = function() { + return this.getSpecStatus(this.spec); +}; + +jasmine.HtmlReporter.SpecView.prototype.refresh = function() { + this.symbol.className = this.status(); + + switch (this.status()) { + case 'skipped': + break; + + case 'passed': + this.appendSummaryToSuiteDiv(); + break; + + case 'failed': + this.appendSummaryToSuiteDiv(); + this.appendFailureDetail(); + break; + } +}; + +jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv = function() { + this.summary.className += ' ' + this.status(); + this.appendToSummary(this.spec, this.summary); +}; + +jasmine.HtmlReporter.SpecView.prototype.appendFailureDetail = function() { + this.detail.className += ' ' + this.status(); + + var resultItems = this.spec.results().getItems(); + var messagesDiv = this.createDom('div', { className: 'messages' }); + + for (var i = 0; i < resultItems.length; i++) { + var result = resultItems[i]; + + if (result.type == 'log') { + messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString())); + } else if (result.type == 'expect' && result.passed && !result.passed()) { + messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message)); + + if (result.trace.stack) { + messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack)); + } + } + } + + if (messagesDiv.childNodes.length > 0) { + this.detail.appendChild(messagesDiv); + this.dom.details.appendChild(this.detail); + } +}; + +jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SpecView);jasmine.HtmlReporter.SuiteView = function(suite, dom, views) { + this.suite = suite; + this.dom = dom; + this.views = views; + + this.element = this.createDom('div', { className: 'suite' }, + this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(this.suite.getFullName()) }, this.suite.description) + ); + + this.appendToSummary(this.suite, this.element); +}; + +jasmine.HtmlReporter.SuiteView.prototype.status = function() { + return this.getSpecStatus(this.suite); +}; + +jasmine.HtmlReporter.SuiteView.prototype.refresh = function() { + this.element.className += " " + this.status(); +}; + +jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SuiteView); + jasmine.TrivialReporter = function(doc) { this.document = doc || document; this.suiteDivs = {}; this.logRunningSpecs = false; + this.log("DEPRECATION WARNING: jasmine.TrivialReporter is deprecated as of v1.2 and will be removed in version 2.0. Please use (the vastly nicer) jasmine.HtmlReporter.") }; jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) { diff --git a/lib/jasmine-core/jasmine.css b/lib/jasmine-core/jasmine.css index 6583fe7c..03d6532d 100644 --- a/lib/jasmine-core/jasmine.css +++ b/lib/jasmine-core/jasmine.css @@ -1,166 +1,74 @@ -body { - font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; -} +body { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; background-color: #eeeeee; color: #333333; overflow-y: scroll; padding: 0; margin: 5px; } +a { text-decoration: none; } +a:hover { text-decoration: underline; } -.jasmine_reporter a:visited, .jasmine_reporter a { - color: #303; -} +p, h1, h2, h3, h4, h5, h6 { margin: 0; line-height: 14px; } -.jasmine_reporter a:hover, .jasmine_reporter a:active { - color: blue; -} +.banner, .symbolSummary, .summary, .resultMessage, .specDetail .description, .alert .bar, .stackTrace { padding-left: 9px; padding-right: 9px; } -.run_spec { - float:right; - padding-right: 5px; - font-size: .8em; - text-decoration: none; -} +#jasmine_content { position: fixed; right: 100%; } -.jasmine_reporter { - margin: 0 5px; -} +.version { color: #aaaaaa; } -.banner { - color: #303; - background-color: #fef; - padding: 5px; -} +.banner { margin-top: 14px; } -.logo { - float: left; - font-size: 1.1em; - padding-left: 5px; -} +.duration { color: #aaaaaa; float: right; } -.logo .version { - font-size: .6em; - padding-left: 1em; -} +.symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; } +.symbolSummary li.passed { font-size: 14px; } +.symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; } +.symbolSummary li.failed { line-height: 9px; } +.symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; } +.symbolSummary li.skipped { font-size: 14px; } +.symbolSummary li.skipped:before { color: #bababa; content: "\02022"; } +.symbolSummary li.pending { line-height: 11px; } +.symbolSummary li.pending:before { color: #aaaaaa; content: "-"; } -.runner.running { - background-color: yellow; -} +.bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.runningAlert { background-color: #666666; } -.options { - text-align: right; - font-size: .8em; -} +.skippedAlert { background-color: #aaaaaa; } +.skippedAlert:first-child { background-color: #333333; } +.skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; } +.passingAlert { background-color: #a6b779; } +.passingAlert:first-child { background-color: #5e7d00; } +.failingAlert { background-color: #cf867e; } +.failingAlert:first-child { background-color: #b03911; } +.results { margin-top: 14px; } -.suite { - border: 1px outset gray; - margin: 5px 0; - padding-left: 1em; -} +#details { display: none; } -.suite .suite { - margin: 5px; -} +.resultsMenu, .resultsMenu a { background-color: #fff; color: #333333; } -.suite.passed { - background-color: #dfd; -} +.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.showDetails .summary { display: none; } +.showDetails #details { display: block; } -.suite.failed { - background-color: #fdd; -} +.summaryMenuItem { font-weight: bold; text-decoration: underline; } -.spec { - margin: 5px; - padding-left: 1em; - clear: both; -} +.summary { margin-top: 14px; } +.summary .suite .suite, .summary .specSummary { margin-left: 14px; } +.summary .specSummary.passed a { color: #5e7d00; } +.summary .specSummary.failed a { color: #b03911; } -.spec.failed, .spec.passed, .spec.skipped { - padding-bottom: 5px; - border: 1px solid gray; -} +.description + .suite { margin-top: 0; } -.spec.failed { - background-color: #fbb; - border-color: red; -} +.suite { margin-top: 14px; } +.suite a { color: #333333; } -.spec.passed { - background-color: #bfb; - border-color: green; -} +#details .specDetail { margin-bottom: 28px; } +#details .specDetail .description { display: block; color: white; background-color: #b03911; } -.spec.skipped { - background-color: #bbb; -} +.resultMessage { padding-top: 14px; color: #333333; } -.messages { - border-left: 1px dashed gray; - padding-left: 1em; - padding-right: 1em; -} +.resultMessage span.result { display: block; } -.passed { - background-color: #cfc; - display: none; -} - -.failed { - background-color: #fbb; -} - -.skipped { - color: #777; - background-color: #eee; - display: none; -} - - -/*.resultMessage {*/ - /*white-space: pre;*/ -/*}*/ - -.resultMessage span.result { - display: block; - line-height: 2em; - color: black; -} - -.resultMessage .mismatch { - color: black; -} - -.stackTrace { - white-space: pre; - font-size: .8em; - margin-left: 10px; - max-height: 5em; - overflow: auto; - border: 1px inset red; - padding: 1em; - background: #eef; -} - -.finished-at { - padding-left: 1em; - font-size: .6em; -} - -.show-passed .passed, -.show-skipped .skipped { - display: block; -} - - -#jasmine_content { - position:fixed; - right: 100%; -} - -.runner { - border: 1px solid gray; - display: block; - margin: 5px 0; - padding: 2px 0 2px 10px; -} +.stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 353966bc..4a430c4c 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -2470,8 +2470,7 @@ jasmine.getGlobal().clearInterval = function(timeoutKey) { jasmine.version_= { "major": 1, - "minor": 1, + "minor": 2, "build": 0, - "revision": 1310556152, - "release_candidate": 3 + "revision": 1314113385 }; diff --git a/lib/jasmine-core/version.rb b/lib/jasmine-core/version.rb index ffeadbf3..026512ad 100644 --- a/lib/jasmine-core/version.rb +++ b/lib/jasmine-core/version.rb @@ -1,6 +1,6 @@ module Jasmine module Core - VERSION = "1.1.0.rc3" + VERSION = "1.2.0" end end diff --git a/spec/runner.html b/spec/runner.html index 3d5dfe34..0cde61fb 100644 --- a/spec/runner.html +++ b/spec/runner.html @@ -15,6 +15,12 @@ + + + + + + @@ -38,6 +44,7 @@ + @@ -48,12 +55,12 @@ var jasmineEnv = jasmine.getEnv(); jasmineEnv.updateInterval = 1000; - var trivialReporter = new jasmine.TrivialReporter(); + var htmlReporter = new jasmine.HtmlReporter(); - jasmineEnv.addReporter(trivialReporter); + jasmineEnv.addReporter(htmlReporter); jasmineEnv.specFilter = function(spec) { - return trivialReporter.specFilter(spec); + return htmlReporter.specFilter(spec); }; var currentWindowOnload = window.onload; diff --git a/src/html/jasmine.css b/src/html/jasmine.css index 6583fe7c..03d6532d 100644 --- a/src/html/jasmine.css +++ b/src/html/jasmine.css @@ -1,166 +1,74 @@ -body { - font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; -} +body { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; background-color: #eeeeee; color: #333333; overflow-y: scroll; padding: 0; margin: 5px; } +a { text-decoration: none; } +a:hover { text-decoration: underline; } -.jasmine_reporter a:visited, .jasmine_reporter a { - color: #303; -} +p, h1, h2, h3, h4, h5, h6 { margin: 0; line-height: 14px; } -.jasmine_reporter a:hover, .jasmine_reporter a:active { - color: blue; -} +.banner, .symbolSummary, .summary, .resultMessage, .specDetail .description, .alert .bar, .stackTrace { padding-left: 9px; padding-right: 9px; } -.run_spec { - float:right; - padding-right: 5px; - font-size: .8em; - text-decoration: none; -} +#jasmine_content { position: fixed; right: 100%; } -.jasmine_reporter { - margin: 0 5px; -} +.version { color: #aaaaaa; } -.banner { - color: #303; - background-color: #fef; - padding: 5px; -} +.banner { margin-top: 14px; } -.logo { - float: left; - font-size: 1.1em; - padding-left: 5px; -} +.duration { color: #aaaaaa; float: right; } -.logo .version { - font-size: .6em; - padding-left: 1em; -} +.symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; } +.symbolSummary li.passed { font-size: 14px; } +.symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; } +.symbolSummary li.failed { line-height: 9px; } +.symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; } +.symbolSummary li.skipped { font-size: 14px; } +.symbolSummary li.skipped:before { color: #bababa; content: "\02022"; } +.symbolSummary li.pending { line-height: 11px; } +.symbolSummary li.pending:before { color: #aaaaaa; content: "-"; } -.runner.running { - background-color: yellow; -} +.bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.runningAlert { background-color: #666666; } -.options { - text-align: right; - font-size: .8em; -} +.skippedAlert { background-color: #aaaaaa; } +.skippedAlert:first-child { background-color: #333333; } +.skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; } +.passingAlert { background-color: #a6b779; } +.passingAlert:first-child { background-color: #5e7d00; } +.failingAlert { background-color: #cf867e; } +.failingAlert:first-child { background-color: #b03911; } +.results { margin-top: 14px; } -.suite { - border: 1px outset gray; - margin: 5px 0; - padding-left: 1em; -} +#details { display: none; } -.suite .suite { - margin: 5px; -} +.resultsMenu, .resultsMenu a { background-color: #fff; color: #333333; } -.suite.passed { - background-color: #dfd; -} +.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.showDetails .summary { display: none; } +.showDetails #details { display: block; } -.suite.failed { - background-color: #fdd; -} +.summaryMenuItem { font-weight: bold; text-decoration: underline; } -.spec { - margin: 5px; - padding-left: 1em; - clear: both; -} +.summary { margin-top: 14px; } +.summary .suite .suite, .summary .specSummary { margin-left: 14px; } +.summary .specSummary.passed a { color: #5e7d00; } +.summary .specSummary.failed a { color: #b03911; } -.spec.failed, .spec.passed, .spec.skipped { - padding-bottom: 5px; - border: 1px solid gray; -} +.description + .suite { margin-top: 0; } -.spec.failed { - background-color: #fbb; - border-color: red; -} +.suite { margin-top: 14px; } +.suite a { color: #333333; } -.spec.passed { - background-color: #bfb; - border-color: green; -} +#details .specDetail { margin-bottom: 28px; } +#details .specDetail .description { display: block; color: white; background-color: #b03911; } -.spec.skipped { - background-color: #bbb; -} +.resultMessage { padding-top: 14px; color: #333333; } -.messages { - border-left: 1px dashed gray; - padding-left: 1em; - padding-right: 1em; -} +.resultMessage span.result { display: block; } -.passed { - background-color: #cfc; - display: none; -} - -.failed { - background-color: #fbb; -} - -.skipped { - color: #777; - background-color: #eee; - display: none; -} - - -/*.resultMessage {*/ - /*white-space: pre;*/ -/*}*/ - -.resultMessage span.result { - display: block; - line-height: 2em; - color: black; -} - -.resultMessage .mismatch { - color: black; -} - -.stackTrace { - white-space: pre; - font-size: .8em; - margin-left: 10px; - max-height: 5em; - overflow: auto; - border: 1px inset red; - padding: 1em; - background: #eef; -} - -.finished-at { - padding-left: 1em; - font-size: .6em; -} - -.show-passed .passed, -.show-skipped .skipped { - display: block; -} - - -#jasmine_content { - position:fixed; - right: 100%; -} - -.runner { - border: 1px solid gray; - display: block; - margin: 5px 0; - padding: 2px 0 2px 10px; -} +.stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/src/version.js b/src/version.js index 302bd7bf..140cdcba 100644 --- a/src/version.js +++ b/src/version.js @@ -1,7 +1,6 @@ jasmine.version_= { "major": 1, - "minor": 1, + "minor": 2, "build": 0, - "revision": 1310556152, - "release_candidate": 3 + "revision": 1314113385 }; diff --git a/src/version.json b/src/version.json index dfe233ac..f9c57fa6 100644 --- a/src/version.json +++ b/src/version.json @@ -1,6 +1,5 @@ { "major": 1, - "minor": 1, - "build": 0, - "release_candidate": 3 + "minor": 2, + "build": 0 }