Compare commits
7 Commits
v2.99.2
...
v1.2.0.rc1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c216047711 | ||
|
|
b087609733 | ||
|
|
ac50cf4c14 | ||
|
|
de341a8fe1 | ||
|
|
fa317e4dda | ||
|
|
05b7730db1 | ||
|
|
9423dfee07 |
@@ -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', { 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);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) {
|
||||
@@ -31,7 +502,7 @@ jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarA
|
||||
jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
|
||||
var showPassed, showSkipped;
|
||||
|
||||
this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' },
|
||||
this.outerDiv = this.createDom('div', { id: 'TrivialReporter', className: 'jasmine_reporter' },
|
||||
this.createDom('div', { className: 'banner' },
|
||||
this.createDom('div', { className: 'logo' },
|
||||
this.createDom('span', { className: 'title' }, "Jasmine"),
|
||||
|
||||
@@ -1,137 +1,386 @@
|
||||
/* line 25, _HTMLReporter.scss */
|
||||
body {
|
||||
background-color: #eeeeee;
|
||||
padding: 0;
|
||||
margin: 5px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/* line 32, _HTMLReporter.scss */
|
||||
#HTMLReporter {
|
||||
font-size: 11px;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
line-height: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 39, _HTMLReporter.scss */
|
||||
#HTMLReporter a {
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 42, _HTMLReporter.scss */
|
||||
#HTMLReporter a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 47, _HTMLReporter.scss */
|
||||
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 {
|
||||
margin: 0;
|
||||
line-height: 14px;
|
||||
}
|
||||
/* line 58, _HTMLReporter.scss */
|
||||
#HTMLReporter .banner,
|
||||
#HTMLReporter .symbolSummary,
|
||||
#HTMLReporter .summary,
|
||||
#HTMLReporter .resultMessage,
|
||||
#HTMLReporter .specDetail .description,
|
||||
#HTMLReporter .alert .bar,
|
||||
#HTMLReporter .stackTrace {
|
||||
padding-left: 9px;
|
||||
padding-right: 9px;
|
||||
}
|
||||
/* line 65, _HTMLReporter.scss */
|
||||
#HTMLReporter #jasmine_content {
|
||||
position: fixed;
|
||||
right: 100%;
|
||||
}
|
||||
/* line 70, _HTMLReporter.scss */
|
||||
#HTMLReporter .version {
|
||||
color: #aaaaaa;
|
||||
}
|
||||
/* line 77, _HTMLReporter.scss */
|
||||
#HTMLReporter .banner {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 81, _HTMLReporter.scss */
|
||||
#HTMLReporter .duration {
|
||||
color: #aaaaaa;
|
||||
float: right;
|
||||
}
|
||||
/* line 90, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
margin: 14px 0;
|
||||
}
|
||||
/* line 94, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 7px;
|
||||
width: 14px;
|
||||
margin-bottom: 7px;
|
||||
font-size: 16px;
|
||||
}
|
||||
/* line 105, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.passed {
|
||||
font-size: 14px;
|
||||
}
|
||||
/* line 108, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.passed:before {
|
||||
color: #5e7d00;
|
||||
content: "\02022";
|
||||
}
|
||||
/* line 114, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.failed {
|
||||
line-height: 9px;
|
||||
}
|
||||
/* line 117, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.failed:before {
|
||||
color: #b03911;
|
||||
content: "x";
|
||||
font-weight: bold;
|
||||
margin-left: -1px;
|
||||
}
|
||||
/* line 125, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.skipped {
|
||||
font-size: 14px;
|
||||
}
|
||||
/* line 128, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.skipped:before {
|
||||
color: #bababa;
|
||||
content: "\02022";
|
||||
}
|
||||
/* line 134, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.pending {
|
||||
line-height: 11px;
|
||||
}
|
||||
/* line 137, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.pending:before {
|
||||
color: #aaaaaa;
|
||||
content: "-";
|
||||
}
|
||||
/* line 149, _HTMLReporter.scss */
|
||||
#HTMLReporter .bar {
|
||||
line-height: 28px;
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
color: #eee;
|
||||
}
|
||||
/* line 158, _HTMLReporter.scss */
|
||||
#HTMLReporter .runningAlert {
|
||||
background-color: #666666;
|
||||
}
|
||||
/* line 162, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert {
|
||||
background-color: #aaaaaa;
|
||||
}
|
||||
/* line 165, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert:first-child {
|
||||
background-color: #333333;
|
||||
}
|
||||
/* line 169, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert:hover {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 176, _HTMLReporter.scss */
|
||||
#HTMLReporter .passingAlert {
|
||||
background-color: #a6b779;
|
||||
}
|
||||
/* line 179, _HTMLReporter.scss */
|
||||
#HTMLReporter .passingAlert:first-child {
|
||||
background-color: #5e7d00;
|
||||
}
|
||||
/* line 184, _HTMLReporter.scss */
|
||||
#HTMLReporter .failingAlert {
|
||||
background-color: #cf867e;
|
||||
}
|
||||
/* line 187, _HTMLReporter.scss */
|
||||
#HTMLReporter .failingAlert:first-child {
|
||||
background-color: #b03911;
|
||||
}
|
||||
/* line 200, _HTMLReporter.scss */
|
||||
#HTMLReporter .results {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 208, _HTMLReporter.scss */
|
||||
#HTMLReporter #details {
|
||||
display: none;
|
||||
}
|
||||
/* line 213, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultsMenu,
|
||||
#HTMLReporter .resultsMenu a {
|
||||
background-color: #fff;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 220, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summaryMenuItem {
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
/* line 224, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summaryMenuItem:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 229, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .detailsMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 234, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summary {
|
||||
display: none;
|
||||
}
|
||||
/* line 238, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails #details {
|
||||
display: block;
|
||||
}
|
||||
/* line 243, _HTMLReporter.scss */
|
||||
#HTMLReporter .summaryMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 253, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 256, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary {
|
||||
margin-left: 14px;
|
||||
}
|
||||
/* line 261, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .specSummary.passed a {
|
||||
color: #5e7d00;
|
||||
}
|
||||
/* line 264, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .specSummary.failed a {
|
||||
color: #b03911;
|
||||
}
|
||||
/* line 270, _HTMLReporter.scss */
|
||||
#HTMLReporter .description + .suite {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* line 274, _HTMLReporter.scss */
|
||||
#HTMLReporter .suite {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 277, _HTMLReporter.scss */
|
||||
#HTMLReporter .suite a {
|
||||
color: #333333;
|
||||
}
|
||||
/* line 288, _HTMLReporter.scss */
|
||||
#HTMLReporter #details .specDetail {
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
/* line 291, _HTMLReporter.scss */
|
||||
#HTMLReporter #details .specDetail .description {
|
||||
display: block;
|
||||
color: white;
|
||||
background-color: #b03911;
|
||||
}
|
||||
/* line 303, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultMessage {
|
||||
padding-top: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 309, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultMessage span.result {
|
||||
display: block;
|
||||
}
|
||||
/* line 313, _HTMLReporter.scss */
|
||||
#HTMLReporter .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;
|
||||
}
|
||||
|
||||
/* line 2, _TrivialReporter.scss */
|
||||
#TrivialReporter {
|
||||
padding: 8px 13px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
overflow-y: scroll;
|
||||
background-color: white;
|
||||
font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
|
||||
/*.resultMessage {*/
|
||||
/*white-space: pre;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
|
||||
.jasmine_reporter a:visited, .jasmine_reporter a {
|
||||
color: #303;
|
||||
/* line 14, _TrivialReporter.scss */
|
||||
#TrivialReporter a:visited, #TrivialReporter a {
|
||||
color: #303;
|
||||
}
|
||||
|
||||
.jasmine_reporter a:hover, .jasmine_reporter a:active {
|
||||
color: blue;
|
||||
/* line 18, _TrivialReporter.scss */
|
||||
#TrivialReporter a:hover, #TrivialReporter a:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.run_spec {
|
||||
float:right;
|
||||
/* line 22, _TrivialReporter.scss */
|
||||
#TrivialReporter .run_spec {
|
||||
float: right;
|
||||
padding-right: 5px;
|
||||
font-size: .8em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.jasmine_reporter {
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.banner {
|
||||
/* line 29, _TrivialReporter.scss */
|
||||
#TrivialReporter .banner {
|
||||
color: #303;
|
||||
background-color: #fef;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
/* line 35, _TrivialReporter.scss */
|
||||
#TrivialReporter .logo {
|
||||
float: left;
|
||||
font-size: 1.1em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.logo .version {
|
||||
/* line 41, _TrivialReporter.scss */
|
||||
#TrivialReporter .logo .version {
|
||||
font-size: .6em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.runner.running {
|
||||
/* line 46, _TrivialReporter.scss */
|
||||
#TrivialReporter .runner.running {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
|
||||
.options {
|
||||
/* line 51, _TrivialReporter.scss */
|
||||
#TrivialReporter .options {
|
||||
text-align: right;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.suite {
|
||||
/* line 59, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite {
|
||||
border: 1px outset gray;
|
||||
margin: 5px 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.suite .suite {
|
||||
margin: 5px;
|
||||
/* line 65, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite .suite {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.suite.passed {
|
||||
/* line 69, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite.passed {
|
||||
background-color: #dfd;
|
||||
}
|
||||
|
||||
.suite.failed {
|
||||
/* line 73, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite.failed {
|
||||
background-color: #fdd;
|
||||
}
|
||||
|
||||
.spec {
|
||||
/* line 77, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec {
|
||||
margin: 5px;
|
||||
padding-left: 1em;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.spec.failed, .spec.passed, .spec.skipped {
|
||||
/* line 83, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped {
|
||||
padding-bottom: 5px;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.spec.failed {
|
||||
/* line 88, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.failed {
|
||||
background-color: #fbb;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.spec.passed {
|
||||
/* line 93, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.passed {
|
||||
background-color: #bfb;
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
.spec.skipped {
|
||||
/* line 98, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.skipped {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
.messages {
|
||||
/* line 102, _TrivialReporter.scss */
|
||||
#TrivialReporter .messages {
|
||||
border-left: 1px dashed gray;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.passed {
|
||||
/* line 108, _TrivialReporter.scss */
|
||||
#TrivialReporter .passed {
|
||||
background-color: #cfc;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.failed {
|
||||
/* line 113, _TrivialReporter.scss */
|
||||
#TrivialReporter .failed {
|
||||
background-color: #fbb;
|
||||
}
|
||||
|
||||
.skipped {
|
||||
/* line 117, _TrivialReporter.scss */
|
||||
#TrivialReporter .skipped {
|
||||
color: #777;
|
||||
background-color: #eee;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/*.resultMessage {*/
|
||||
/*white-space: pre;*/
|
||||
/*}*/
|
||||
|
||||
.resultMessage span.result {
|
||||
/* line 128, _TrivialReporter.scss */
|
||||
#TrivialReporter .resultMessage span.result {
|
||||
display: block;
|
||||
line-height: 2em;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.resultMessage .mismatch {
|
||||
/* line 134, _TrivialReporter.scss */
|
||||
#TrivialReporter .resultMessage .mismatch {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
/* line 138, _TrivialReporter.scss */
|
||||
#TrivialReporter .stackTrace {
|
||||
white-space: pre;
|
||||
font-size: .8em;
|
||||
margin-left: 10px;
|
||||
@@ -141,24 +390,22 @@ body {
|
||||
padding: 1em;
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.finished-at {
|
||||
/* line 149, _TrivialReporter.scss */
|
||||
#TrivialReporter .finished-at {
|
||||
padding-left: 1em;
|
||||
font-size: .6em;
|
||||
}
|
||||
|
||||
.show-passed .passed,
|
||||
.show-skipped .skipped {
|
||||
/* line 155, _TrivialReporter.scss */
|
||||
#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
#jasmine_content {
|
||||
position:fixed;
|
||||
/* line 160, _TrivialReporter.scss */
|
||||
#TrivialReporter #jasmine_content {
|
||||
position: fixed;
|
||||
right: 100%;
|
||||
}
|
||||
|
||||
.runner {
|
||||
/* line 165, _TrivialReporter.scss */
|
||||
#TrivialReporter .runner {
|
||||
border: 1px solid gray;
|
||||
display: block;
|
||||
margin: 5px 0;
|
||||
|
||||
@@ -2470,8 +2470,8 @@ jasmine.getGlobal().clearInterval = function(timeoutKey) {
|
||||
|
||||
jasmine.version_= {
|
||||
"major": 1,
|
||||
"minor": 1,
|
||||
"minor": 2,
|
||||
"build": 0,
|
||||
"revision": 1310556152,
|
||||
"release_candidate": 3
|
||||
"revision": 1315672648,
|
||||
"release_candidate": 1
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Jasmine
|
||||
module Core
|
||||
VERSION = "1.1.0.rc3"
|
||||
VERSION = "1.2.0.rc1"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
194
spec/html/HTMLReporterSpec.js
Normal file
194
spec/html/HTMLReporterSpec.js
Normal file
@@ -0,0 +1,194 @@
|
||||
describe("HtmlReporter", function() {
|
||||
var env;
|
||||
var htmlReporter;
|
||||
var body;
|
||||
var fakeDocument;
|
||||
|
||||
beforeEach(function() {
|
||||
env = new jasmine.Env();
|
||||
env.updateInterval = 0;
|
||||
|
||||
body = document.createElement("body");
|
||||
fakeDocument = { body: body, location: { search: "" } };
|
||||
htmlReporter = new jasmine.HtmlReporter(fakeDocument);
|
||||
});
|
||||
|
||||
function fakeSpec(name) {
|
||||
return {
|
||||
getFullName: function() {
|
||||
return name;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function findElements(divs, withClass) {
|
||||
var els = [];
|
||||
for (var i = 0; i < divs.length; i++) {
|
||||
if (divs[i].className == withClass) els.push(divs[i]);
|
||||
}
|
||||
return els;
|
||||
}
|
||||
|
||||
function findElement(divs, withClass) {
|
||||
var els = findElements(divs, withClass);
|
||||
if (els.length > 0) {
|
||||
return els[0];
|
||||
}
|
||||
throw new Error("couldn't find div with class " + withClass);
|
||||
}
|
||||
|
||||
it("should run only specs beginning with spec parameter", function() {
|
||||
fakeDocument.location.search = "?spec=run%20this";
|
||||
expect(htmlReporter.specFilter(fakeSpec("run this"))).toBeTruthy();
|
||||
expect(htmlReporter.specFilter(fakeSpec("not the right spec"))).toBeFalsy();
|
||||
expect(htmlReporter.specFilter(fakeSpec("not run this"))).toBeFalsy();
|
||||
});
|
||||
|
||||
describe('Matcher reporting', function () {
|
||||
var getResultMessageDiv = function (body) {
|
||||
var divs = body.getElementsByTagName("div");
|
||||
for (var i = 0; i < divs.length; i++) {
|
||||
if (divs[i].className.match(/resultMessage/)) {
|
||||
return divs[i];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var runner, spec, fakeTimer;
|
||||
beforeEach(function () {
|
||||
fakeTimer = new jasmine.FakeTimer();
|
||||
env.setTimeout = fakeTimer.setTimeout;
|
||||
env.clearTimeout = fakeTimer.clearTimeout;
|
||||
env.setInterval = fakeTimer.setInterval;
|
||||
env.clearInterval = fakeTimer.clearInterval;
|
||||
runner = env.currentRunner();
|
||||
var suite = new jasmine.Suite(env, 'some suite');
|
||||
runner.add(suite);
|
||||
spec = new jasmine.Spec(env, suite, 'some spec');
|
||||
suite.add(spec);
|
||||
fakeDocument.location.search = "?";
|
||||
env.addReporter(htmlReporter);
|
||||
});
|
||||
|
||||
describe('toContain', function () {
|
||||
it('should show actual and expected', function () {
|
||||
spec.runs(function () {
|
||||
this.expect('foo').toContain('bar');
|
||||
});
|
||||
runner.execute();
|
||||
fakeTimer.tick(0);
|
||||
|
||||
var resultEl = getResultMessageDiv(body);
|
||||
expect(resultEl.innerHTML).toMatch(/foo/);
|
||||
expect(resultEl.innerHTML).toMatch(/bar/);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("failure messages (integration)", function () {
|
||||
var spec, results, expectationResult;
|
||||
|
||||
it("should add the failure message to the DOM (non-toEquals matchers)", function() {
|
||||
env.describe("suite", function() {
|
||||
env.it("will have log messages", function() {
|
||||
this.expect('a').toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
var divs = body.getElementsByTagName("div");
|
||||
var errorDiv = findElement(divs, 'resultMessage fail');
|
||||
expect(errorDiv.innerHTML).toMatch(/Expected 'a' to be null/);
|
||||
});
|
||||
|
||||
it("should add the failure message to the DOM (non-toEquals matchers) html escaping", function() {
|
||||
env.describe("suite", function() {
|
||||
env.it("will have log messages", function() {
|
||||
this.expect('1 < 2').toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
var divs = body.getElementsByTagName("div");
|
||||
var errorDiv = findElement(divs, 'resultMessage fail');
|
||||
expect(errorDiv.innerHTML).toMatch(/Expected '1 < 2' to be null/);
|
||||
});
|
||||
});
|
||||
|
||||
describe("log messages", function() {
|
||||
it("should appear in the report of a failed spec", function() {
|
||||
env.describe("suite", function() {
|
||||
env.it("will have log messages", function() {
|
||||
this.log("this is a", "multipart log message");
|
||||
this.expect(true).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
var divs = body.getElementsByTagName("div");
|
||||
var errorDiv = findElement(divs, 'specDetail failed');
|
||||
expect(errorDiv.innerHTML).toMatch("this is a multipart log message");
|
||||
});
|
||||
|
||||
xit("should work on IE without console.log.apply", function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe("duplicate example names", function() {
|
||||
it("should report failures correctly", function() {
|
||||
var suite1 = env.describe("suite", function() {
|
||||
env.it("will have log messages", function() {
|
||||
this.log("this one fails!");
|
||||
this.expect(true).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
var suite2 = env.describe("suite", function() {
|
||||
env.it("will have log messages", function() {
|
||||
this.log("this one passes!");
|
||||
this.expect(true).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
var divs = body.getElementsByTagName("div");
|
||||
var failedSpecDiv = findElement(divs, 'specDetail failed');
|
||||
expect(failedSpecDiv.className).toEqual('specDetail failed');
|
||||
expect(failedSpecDiv.innerHTML).toContain("this one fails!");
|
||||
expect(failedSpecDiv.innerHTML).not.toContain("this one passes!");
|
||||
});
|
||||
});
|
||||
|
||||
describe('#reportSpecStarting', function() {
|
||||
beforeEach(function () {
|
||||
env.describe("suite 1", function() {
|
||||
env.it("spec 1", function() {
|
||||
});
|
||||
});
|
||||
spyOn(htmlReporter, 'log').andCallThrough();
|
||||
});
|
||||
|
||||
it('DOES NOT log running specs by default', function() {
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
expect(htmlReporter.log).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('logs running specs when log_running_specs is true', function() {
|
||||
htmlReporter.logRunningSpecs = true;
|
||||
env.addReporter(htmlReporter);
|
||||
env.execute();
|
||||
|
||||
expect(htmlReporter.log).toHaveBeenCalledWith('>> Jasmine Running suite 1 spec 1...');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -15,6 +15,12 @@
|
||||
|
||||
|
||||
<!-- include source files here... -->
|
||||
<script type="text/javascript" src=".././src/html/HtmlReporterHelpers.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/HtmlReporter.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/HtmlReporterHelpers.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/ReporterView.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/SpecView.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/SuiteView.js"></script>
|
||||
<script type="text/javascript" src=".././src/html/TrivialReporter.js"></script>
|
||||
<script type="text/javascript" src=".././src/console/ConsoleReporter.js"></script>
|
||||
|
||||
@@ -38,6 +44,7 @@
|
||||
<script type="text/javascript" src=".././spec/core/SuiteSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/core/UtilSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/core/WaitsForBlockSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/html/HTMLReporterSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/html/MatchersHtmlSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/html/PrettyPrintHtmlSpec.js"></script>
|
||||
<script type="text/javascript" src=".././spec/html/TrivialReporterSpec.js"></script>
|
||||
@@ -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;
|
||||
|
||||
@@ -18,12 +18,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;
|
||||
|
||||
@@ -58,7 +58,7 @@ jasmine.Env.prototype.versionString = function() {
|
||||
var version = this.version();
|
||||
var versionString = version.major + "." + version.minor + "." + version.build;
|
||||
if (version.release_candidate) {
|
||||
versionString += ".rc" + version.release_candidate
|
||||
versionString += ".rc" + version.release_candidate;
|
||||
}
|
||||
versionString += " revision " + version.revision;
|
||||
return versionString;
|
||||
|
||||
101
src/html/HtmlReporter.js
Normal file
101
src/html/HtmlReporter.js
Normal file
@@ -0,0 +1,101 @@
|
||||
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', { 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);
|
||||
60
src/html/HtmlReporterHelpers.js
Normal file
60
src/html/HtmlReporterHelpers.js
Normal file
@@ -0,0 +1,60 @@
|
||||
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];
|
||||
}
|
||||
};
|
||||
|
||||
150
src/html/ReporterView.js
Normal file
150
src/html/ReporterView.js
Normal file
@@ -0,0 +1,150 @@
|
||||
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);
|
||||
|
||||
|
||||
79
src/html/SpecView.js
Normal file
79
src/html/SpecView.js
Normal file
@@ -0,0 +1,79 @@
|
||||
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);
|
||||
22
src/html/SuiteView.js
Normal file
22
src/html/SuiteView.js
Normal file
@@ -0,0 +1,22 @@
|
||||
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);
|
||||
|
||||
@@ -2,6 +2,7 @@ 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) {
|
||||
@@ -31,7 +32,7 @@ jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarA
|
||||
jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
|
||||
var showPassed, showSkipped;
|
||||
|
||||
this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' },
|
||||
this.outerDiv = this.createDom('div', { id: 'TrivialReporter', className: 'jasmine_reporter' },
|
||||
this.createDom('div', { className: 'banner' },
|
||||
this.createDom('div', { className: 'logo' },
|
||||
this.createDom('span', { className: 'title' }, "Jasmine"),
|
||||
|
||||
325
src/html/_HTMLReporter.scss
Normal file
325
src/html/_HTMLReporter.scss
Normal file
@@ -0,0 +1,325 @@
|
||||
@import "compass";
|
||||
|
||||
|
||||
$line-height: 14px;
|
||||
$margin-unit: 14px;
|
||||
|
||||
$feint-text-color: #aaa;
|
||||
$light-text-color: #666;
|
||||
$text-color: #333;
|
||||
|
||||
$page-background-color: #eee;
|
||||
|
||||
$light-passing-color: #a6b779;
|
||||
$passing-color: #5e7d00;
|
||||
|
||||
$light-failing-color: #cf867e;
|
||||
$failing-color: #b03911;
|
||||
|
||||
$neutral-color: #bababa;
|
||||
|
||||
$font-size: 11px;
|
||||
$large-font-size: 14px;
|
||||
|
||||
|
||||
body {
|
||||
background-color: $page-background-color;
|
||||
padding: 0;
|
||||
margin: 5px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
#HTMLReporter {
|
||||
|
||||
font-size: $font-size;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
line-height: $line-height;
|
||||
color: $text-color;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
p, h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
line-height: $line-height;
|
||||
}
|
||||
|
||||
.banner,
|
||||
.symbolSummary,
|
||||
.summary,
|
||||
.resultMessage,
|
||||
.specDetail .description,
|
||||
.alert .bar,
|
||||
.stackTrace {
|
||||
padding-left: $margin-unit - 5px;
|
||||
padding-right: $margin-unit - 5px;
|
||||
}
|
||||
|
||||
// This div is available for testing elements that must be added to the DOM.
|
||||
// We position it out of view, so it doesn't obstruct the runner.
|
||||
#jasmine_content {
|
||||
position: fixed;
|
||||
right: 100%;
|
||||
}
|
||||
|
||||
.version {
|
||||
color: $feint-text-color;
|
||||
}
|
||||
|
||||
|
||||
//--- Banner ---//
|
||||
|
||||
.banner {
|
||||
margin-top: $line-height;
|
||||
}
|
||||
|
||||
.duration {
|
||||
color: $feint-text-color;
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--- Symbol summary ---//
|
||||
|
||||
.symbolSummary {
|
||||
@include clearfix;
|
||||
margin: $line-height 0;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
float: left;
|
||||
height: $line-height / 2;
|
||||
width: $line-height;
|
||||
margin-bottom: $line-height / 2;
|
||||
|
||||
//opacity: .9;
|
||||
|
||||
font-size: 16px;
|
||||
|
||||
&.passed {
|
||||
font-size: 14px;
|
||||
|
||||
&:before{
|
||||
color: $passing-color;
|
||||
content: "\02022";
|
||||
}
|
||||
}
|
||||
|
||||
&.failed {
|
||||
line-height: ($line-height / 2) + 2;
|
||||
|
||||
&:before{
|
||||
color: $failing-color;
|
||||
content: "x";
|
||||
font-weight: bold;
|
||||
margin-left: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
&.skipped {
|
||||
font-size: 14px;
|
||||
|
||||
&:before{
|
||||
color: $neutral-color;
|
||||
content: "\02022";
|
||||
}
|
||||
}
|
||||
|
||||
&.pending{
|
||||
line-height: ($line-height / 2) + 4;
|
||||
|
||||
&:before {
|
||||
color: $feint-text-color;
|
||||
content: "-";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--- Alert ---//
|
||||
|
||||
.bar {
|
||||
line-height: $line-height * 2;
|
||||
font-size: $large-font-size;
|
||||
|
||||
display: block;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
|
||||
.runningAlert {
|
||||
background-color: $light-text-color;
|
||||
}
|
||||
|
||||
.skippedAlert {
|
||||
background-color: $feint-text-color;
|
||||
|
||||
&:first-child {
|
||||
background-color: $text-color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.passingAlert {
|
||||
background-color: $light-passing-color;
|
||||
|
||||
&:first-child {
|
||||
background-color: $passing-color;
|
||||
}
|
||||
}
|
||||
|
||||
.failingAlert {
|
||||
background-color: $light-failing-color;
|
||||
|
||||
&:first-child {
|
||||
background-color: $failing-color
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//--- Results ---//
|
||||
|
||||
.results {
|
||||
margin-top: $line-height;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--- Results menu ---//
|
||||
|
||||
#details {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.resultsMenu,
|
||||
.resultsMenu a {
|
||||
background-color: #fff;
|
||||
color: $text-color;
|
||||
}
|
||||
|
||||
&.showDetails {
|
||||
|
||||
.summaryMenuItem {
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.detailsMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.summary {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#details {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.summaryMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//--- Results summary ---//
|
||||
|
||||
.summary {
|
||||
margin-top: $margin-unit;
|
||||
|
||||
.suite .suite, .specSummary {
|
||||
margin-left: $margin-unit;
|
||||
}
|
||||
|
||||
.specSummary {
|
||||
&.passed a {
|
||||
color: $passing-color;
|
||||
}
|
||||
&.failed a {
|
||||
color: $failing-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description+.suite {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.suite {
|
||||
margin-top: $margin-unit;
|
||||
|
||||
a {
|
||||
color: $text-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//--- Results details ---//
|
||||
|
||||
#details {
|
||||
.specDetail {
|
||||
margin-bottom: $line-height * 2;
|
||||
|
||||
.description {
|
||||
//line-height: $line-height * 2;
|
||||
display: block;
|
||||
|
||||
color: white;
|
||||
background-color: $failing-color;
|
||||
|
||||
//font-size: $large-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resultMessage {
|
||||
padding-top: $line-height;
|
||||
|
||||
color: $text-color;
|
||||
}
|
||||
|
||||
.resultMessage span.result {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
margin: 5px 0 0 0;
|
||||
max-height: $line-height * 16;
|
||||
overflow: auto;
|
||||
line-height: 18px;
|
||||
|
||||
color: $light-text-color;
|
||||
border: 1px solid #ddd;
|
||||
background: white;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
}
|
||||
171
src/html/_TrivialReporter.scss
Normal file
171
src/html/_TrivialReporter.scss
Normal file
@@ -0,0 +1,171 @@
|
||||
|
||||
#TrivialReporter {
|
||||
padding: 8px 13px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
overflow-y: scroll;
|
||||
|
||||
background-color: white;
|
||||
font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
|
||||
|
||||
a:visited, a {
|
||||
color: #303;
|
||||
}
|
||||
|
||||
a:hover, a:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.run_spec {
|
||||
float:right;
|
||||
padding-right: 5px;
|
||||
font-size: .8em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.banner {
|
||||
color: #303;
|
||||
background-color: #fef;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
float: left;
|
||||
font-size: 1.1em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.logo .version {
|
||||
font-size: .6em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.runner.running {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
|
||||
.options {
|
||||
text-align: right;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.suite {
|
||||
border: 1px outset gray;
|
||||
margin: 5px 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.suite .suite {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.suite.passed {
|
||||
background-color: #dfd;
|
||||
}
|
||||
|
||||
.suite.failed {
|
||||
background-color: #fdd;
|
||||
}
|
||||
|
||||
.spec {
|
||||
margin: 5px;
|
||||
padding-left: 1em;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.spec.failed, .spec.passed, .spec.skipped {
|
||||
padding-bottom: 5px;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.spec.failed {
|
||||
background-color: #fbb;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.spec.passed {
|
||||
background-color: #bfb;
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
.spec.skipped {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
.messages {
|
||||
border-left: 1px dashed gray;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
@@ -1,137 +1,386 @@
|
||||
/* line 25, _HTMLReporter.scss */
|
||||
body {
|
||||
background-color: #eeeeee;
|
||||
padding: 0;
|
||||
margin: 5px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/* line 32, _HTMLReporter.scss */
|
||||
#HTMLReporter {
|
||||
font-size: 11px;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
line-height: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 39, _HTMLReporter.scss */
|
||||
#HTMLReporter a {
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 42, _HTMLReporter.scss */
|
||||
#HTMLReporter a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 47, _HTMLReporter.scss */
|
||||
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 {
|
||||
margin: 0;
|
||||
line-height: 14px;
|
||||
}
|
||||
/* line 58, _HTMLReporter.scss */
|
||||
#HTMLReporter .banner,
|
||||
#HTMLReporter .symbolSummary,
|
||||
#HTMLReporter .summary,
|
||||
#HTMLReporter .resultMessage,
|
||||
#HTMLReporter .specDetail .description,
|
||||
#HTMLReporter .alert .bar,
|
||||
#HTMLReporter .stackTrace {
|
||||
padding-left: 9px;
|
||||
padding-right: 9px;
|
||||
}
|
||||
/* line 65, _HTMLReporter.scss */
|
||||
#HTMLReporter #jasmine_content {
|
||||
position: fixed;
|
||||
right: 100%;
|
||||
}
|
||||
/* line 70, _HTMLReporter.scss */
|
||||
#HTMLReporter .version {
|
||||
color: #aaaaaa;
|
||||
}
|
||||
/* line 77, _HTMLReporter.scss */
|
||||
#HTMLReporter .banner {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 81, _HTMLReporter.scss */
|
||||
#HTMLReporter .duration {
|
||||
color: #aaaaaa;
|
||||
float: right;
|
||||
}
|
||||
/* line 90, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
margin: 14px 0;
|
||||
}
|
||||
/* line 94, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 7px;
|
||||
width: 14px;
|
||||
margin-bottom: 7px;
|
||||
font-size: 16px;
|
||||
}
|
||||
/* line 105, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.passed {
|
||||
font-size: 14px;
|
||||
}
|
||||
/* line 108, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.passed:before {
|
||||
color: #5e7d00;
|
||||
content: "\02022";
|
||||
}
|
||||
/* line 114, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.failed {
|
||||
line-height: 9px;
|
||||
}
|
||||
/* line 117, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.failed:before {
|
||||
color: #b03911;
|
||||
content: "x";
|
||||
font-weight: bold;
|
||||
margin-left: -1px;
|
||||
}
|
||||
/* line 125, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.skipped {
|
||||
font-size: 14px;
|
||||
}
|
||||
/* line 128, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.skipped:before {
|
||||
color: #bababa;
|
||||
content: "\02022";
|
||||
}
|
||||
/* line 134, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.pending {
|
||||
line-height: 11px;
|
||||
}
|
||||
/* line 137, _HTMLReporter.scss */
|
||||
#HTMLReporter .symbolSummary li.pending:before {
|
||||
color: #aaaaaa;
|
||||
content: "-";
|
||||
}
|
||||
/* line 149, _HTMLReporter.scss */
|
||||
#HTMLReporter .bar {
|
||||
line-height: 28px;
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
color: #eee;
|
||||
}
|
||||
/* line 158, _HTMLReporter.scss */
|
||||
#HTMLReporter .runningAlert {
|
||||
background-color: #666666;
|
||||
}
|
||||
/* line 162, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert {
|
||||
background-color: #aaaaaa;
|
||||
}
|
||||
/* line 165, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert:first-child {
|
||||
background-color: #333333;
|
||||
}
|
||||
/* line 169, _HTMLReporter.scss */
|
||||
#HTMLReporter .skippedAlert:hover {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 176, _HTMLReporter.scss */
|
||||
#HTMLReporter .passingAlert {
|
||||
background-color: #a6b779;
|
||||
}
|
||||
/* line 179, _HTMLReporter.scss */
|
||||
#HTMLReporter .passingAlert:first-child {
|
||||
background-color: #5e7d00;
|
||||
}
|
||||
/* line 184, _HTMLReporter.scss */
|
||||
#HTMLReporter .failingAlert {
|
||||
background-color: #cf867e;
|
||||
}
|
||||
/* line 187, _HTMLReporter.scss */
|
||||
#HTMLReporter .failingAlert:first-child {
|
||||
background-color: #b03911;
|
||||
}
|
||||
/* line 200, _HTMLReporter.scss */
|
||||
#HTMLReporter .results {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 208, _HTMLReporter.scss */
|
||||
#HTMLReporter #details {
|
||||
display: none;
|
||||
}
|
||||
/* line 213, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultsMenu,
|
||||
#HTMLReporter .resultsMenu a {
|
||||
background-color: #fff;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 220, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summaryMenuItem {
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
/* line 224, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summaryMenuItem:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 229, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .detailsMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 234, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails .summary {
|
||||
display: none;
|
||||
}
|
||||
/* line 238, _HTMLReporter.scss */
|
||||
#HTMLReporter.showDetails #details {
|
||||
display: block;
|
||||
}
|
||||
/* line 243, _HTMLReporter.scss */
|
||||
#HTMLReporter .summaryMenuItem {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 253, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 256, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary {
|
||||
margin-left: 14px;
|
||||
}
|
||||
/* line 261, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .specSummary.passed a {
|
||||
color: #5e7d00;
|
||||
}
|
||||
/* line 264, _HTMLReporter.scss */
|
||||
#HTMLReporter .summary .specSummary.failed a {
|
||||
color: #b03911;
|
||||
}
|
||||
/* line 270, _HTMLReporter.scss */
|
||||
#HTMLReporter .description + .suite {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* line 274, _HTMLReporter.scss */
|
||||
#HTMLReporter .suite {
|
||||
margin-top: 14px;
|
||||
}
|
||||
/* line 277, _HTMLReporter.scss */
|
||||
#HTMLReporter .suite a {
|
||||
color: #333333;
|
||||
}
|
||||
/* line 288, _HTMLReporter.scss */
|
||||
#HTMLReporter #details .specDetail {
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
/* line 291, _HTMLReporter.scss */
|
||||
#HTMLReporter #details .specDetail .description {
|
||||
display: block;
|
||||
color: white;
|
||||
background-color: #b03911;
|
||||
}
|
||||
/* line 303, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultMessage {
|
||||
padding-top: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 309, _HTMLReporter.scss */
|
||||
#HTMLReporter .resultMessage span.result {
|
||||
display: block;
|
||||
}
|
||||
/* line 313, _HTMLReporter.scss */
|
||||
#HTMLReporter .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;
|
||||
}
|
||||
|
||||
/* line 2, _TrivialReporter.scss */
|
||||
#TrivialReporter {
|
||||
padding: 8px 13px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
overflow-y: scroll;
|
||||
background-color: white;
|
||||
font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
|
||||
/*.resultMessage {*/
|
||||
/*white-space: pre;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
|
||||
.jasmine_reporter a:visited, .jasmine_reporter a {
|
||||
color: #303;
|
||||
/* line 14, _TrivialReporter.scss */
|
||||
#TrivialReporter a:visited, #TrivialReporter a {
|
||||
color: #303;
|
||||
}
|
||||
|
||||
.jasmine_reporter a:hover, .jasmine_reporter a:active {
|
||||
color: blue;
|
||||
/* line 18, _TrivialReporter.scss */
|
||||
#TrivialReporter a:hover, #TrivialReporter a:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.run_spec {
|
||||
float:right;
|
||||
/* line 22, _TrivialReporter.scss */
|
||||
#TrivialReporter .run_spec {
|
||||
float: right;
|
||||
padding-right: 5px;
|
||||
font-size: .8em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.jasmine_reporter {
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.banner {
|
||||
/* line 29, _TrivialReporter.scss */
|
||||
#TrivialReporter .banner {
|
||||
color: #303;
|
||||
background-color: #fef;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
/* line 35, _TrivialReporter.scss */
|
||||
#TrivialReporter .logo {
|
||||
float: left;
|
||||
font-size: 1.1em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.logo .version {
|
||||
/* line 41, _TrivialReporter.scss */
|
||||
#TrivialReporter .logo .version {
|
||||
font-size: .6em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.runner.running {
|
||||
/* line 46, _TrivialReporter.scss */
|
||||
#TrivialReporter .runner.running {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
|
||||
.options {
|
||||
/* line 51, _TrivialReporter.scss */
|
||||
#TrivialReporter .options {
|
||||
text-align: right;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.suite {
|
||||
/* line 59, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite {
|
||||
border: 1px outset gray;
|
||||
margin: 5px 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.suite .suite {
|
||||
margin: 5px;
|
||||
/* line 65, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite .suite {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.suite.passed {
|
||||
/* line 69, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite.passed {
|
||||
background-color: #dfd;
|
||||
}
|
||||
|
||||
.suite.failed {
|
||||
/* line 73, _TrivialReporter.scss */
|
||||
#TrivialReporter .suite.failed {
|
||||
background-color: #fdd;
|
||||
}
|
||||
|
||||
.spec {
|
||||
/* line 77, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec {
|
||||
margin: 5px;
|
||||
padding-left: 1em;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.spec.failed, .spec.passed, .spec.skipped {
|
||||
/* line 83, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped {
|
||||
padding-bottom: 5px;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.spec.failed {
|
||||
/* line 88, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.failed {
|
||||
background-color: #fbb;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.spec.passed {
|
||||
/* line 93, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.passed {
|
||||
background-color: #bfb;
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
.spec.skipped {
|
||||
/* line 98, _TrivialReporter.scss */
|
||||
#TrivialReporter .spec.skipped {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
.messages {
|
||||
/* line 102, _TrivialReporter.scss */
|
||||
#TrivialReporter .messages {
|
||||
border-left: 1px dashed gray;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.passed {
|
||||
/* line 108, _TrivialReporter.scss */
|
||||
#TrivialReporter .passed {
|
||||
background-color: #cfc;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.failed {
|
||||
/* line 113, _TrivialReporter.scss */
|
||||
#TrivialReporter .failed {
|
||||
background-color: #fbb;
|
||||
}
|
||||
|
||||
.skipped {
|
||||
/* line 117, _TrivialReporter.scss */
|
||||
#TrivialReporter .skipped {
|
||||
color: #777;
|
||||
background-color: #eee;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/*.resultMessage {*/
|
||||
/*white-space: pre;*/
|
||||
/*}*/
|
||||
|
||||
.resultMessage span.result {
|
||||
/* line 128, _TrivialReporter.scss */
|
||||
#TrivialReporter .resultMessage span.result {
|
||||
display: block;
|
||||
line-height: 2em;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.resultMessage .mismatch {
|
||||
/* line 134, _TrivialReporter.scss */
|
||||
#TrivialReporter .resultMessage .mismatch {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
/* line 138, _TrivialReporter.scss */
|
||||
#TrivialReporter .stackTrace {
|
||||
white-space: pre;
|
||||
font-size: .8em;
|
||||
margin-left: 10px;
|
||||
@@ -141,24 +390,22 @@ body {
|
||||
padding: 1em;
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.finished-at {
|
||||
/* line 149, _TrivialReporter.scss */
|
||||
#TrivialReporter .finished-at {
|
||||
padding-left: 1em;
|
||||
font-size: .6em;
|
||||
}
|
||||
|
||||
.show-passed .passed,
|
||||
.show-skipped .skipped {
|
||||
/* line 155, _TrivialReporter.scss */
|
||||
#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
#jasmine_content {
|
||||
position:fixed;
|
||||
/* line 160, _TrivialReporter.scss */
|
||||
#TrivialReporter #jasmine_content {
|
||||
position: fixed;
|
||||
right: 100%;
|
||||
}
|
||||
|
||||
.runner {
|
||||
/* line 165, _TrivialReporter.scss */
|
||||
#TrivialReporter .runner {
|
||||
border: 1px solid gray;
|
||||
display: block;
|
||||
margin: 5px 0;
|
||||
|
||||
2
src/html/jasmine.scss
Normal file
2
src/html/jasmine.scss
Normal file
@@ -0,0 +1,2 @@
|
||||
@import "HTMLReporter";
|
||||
@import "TrivialReporter";
|
||||
@@ -1,7 +1,7 @@
|
||||
jasmine.version_= {
|
||||
"major": 1,
|
||||
"minor": 1,
|
||||
"minor": 2,
|
||||
"build": 0,
|
||||
"revision": 1310556152,
|
||||
"release_candidate": 3
|
||||
"revision": 1315672648,
|
||||
"release_candidate": 1
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"major": 1,
|
||||
"minor": 1,
|
||||
"minor": 2,
|
||||
"build": 0,
|
||||
"release_candidate": 3
|
||||
"release_candidate": 1
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ def core_sources
|
||||
end
|
||||
|
||||
def html_sources
|
||||
Dir.glob('./src/html/*.js')
|
||||
['./src/html/HtmlReporterHelpers.js'] + Dir.glob('./src/html/*.js')
|
||||
end
|
||||
|
||||
def console_sources
|
||||
|
||||
Reference in New Issue
Block a user