diff --git a/lib/jasmine-core/jasmine-html.js b/lib/jasmine-core/jasmine-html.js index 102eaee0..e90c362e 100644 --- a/lib/jasmine-core/jasmine-html.js +++ b/lib/jasmine-core/jasmine-html.js @@ -557,6 +557,11 @@ jasmineRequire.HtmlReporter = function(j$) { 'a', { href: specHref(resultNode.result) }, specDescription + ), + createDom( + 'span', + { className: 'jasmine-spec-duration' }, + '(' + resultNode.result.duration + 'ms)' ) ) ); diff --git a/lib/jasmine-core/jasmine.css b/lib/jasmine-core/jasmine.css index 2b6c81c7..5443a225 100644 --- a/lib/jasmine-core/jasmine.css +++ b/lib/jasmine-core/jasmine.css @@ -229,6 +229,9 @@ body { .jasmine_html-reporter .jasmine-specs li.jasmine-excluded a:before { content: "• "; } +.jasmine_html-reporter .jasmine-specs li .jasmine-spec-duration { + margin-left: 14px; +} .jasmine_html-reporter .jasmine-description + .jasmine-suite { margin-top: 0; } diff --git a/spec/html/HtmlReporterSpec.js b/spec/html/HtmlReporterSpec.js index 5e36d830..9e552f8d 100644 --- a/spec/html/HtmlReporterSpec.js +++ b/spec/html/HtmlReporterSpec.js @@ -499,7 +499,7 @@ describe('HtmlReporter', function() { expect(duration.innerHTML).toMatch(/finished in 0.1s/); }); - it('reports the suite and spec names with status', function() { + it('reports the suite names with status, and spec names with status and duration', function() { const container = document.createElement('div'), getContainer = function() { return container; @@ -532,7 +532,8 @@ describe('HtmlReporter', function() { fullName: 'A Suite with a spec', status: 'passed', failedExpectations: [], - passedExpectations: [{ passed: true }] + passedExpectations: [{ passed: true }], + duration: 1230 }; reporter.specStarted(specResult); reporter.specDone(specResult); @@ -549,7 +550,8 @@ describe('HtmlReporter', function() { fullName: 'A Suite inner suite with another spec', status: 'passed', failedExpectations: [], - passedExpectations: [{ passed: true }] + passedExpectations: [{ passed: true }], + duration: 1240 }; reporter.specStarted(specResult); reporter.specDone(specResult); @@ -567,7 +569,8 @@ describe('HtmlReporter', function() { fullName: 'A Suite inner with a failing spec', status: 'failed', failedExpectations: [{}], - passedExpectations: [] + passedExpectations: [], + duration: 2090 }; reporter.specStarted(specResult); reporter.specDone(specResult); @@ -614,6 +617,9 @@ describe('HtmlReporter', function() { expect(specLink.getAttribute('href')).toEqual( '/?foo=bar&spec=A Suite with a spec' ); + + const specDuration = spec.childNodes[1]; + expect(specDuration.innerHTML).toEqual('(1230ms)'); }); it('has an options menu', function() { diff --git a/src/html/HtmlReporter.js b/src/html/HtmlReporter.js index 63c5813e..a96599cd 100644 --- a/src/html/HtmlReporter.js +++ b/src/html/HtmlReporter.js @@ -523,6 +523,11 @@ jasmineRequire.HtmlReporter = function(j$) { 'a', { href: specHref(resultNode.result) }, specDescription + ), + createDom( + 'span', + { className: 'jasmine-spec-duration' }, + '(' + resultNode.result.duration + 'ms)' ) ) ); diff --git a/src/html/_HTMLReporter.scss b/src/html/_HTMLReporter.scss index 836ffb5f..b6527830 100644 --- a/src/html/_HTMLReporter.scss +++ b/src/html/_HTMLReporter.scss @@ -331,6 +331,10 @@ body { &.jasmine-excluded a:before { content: $passing-mark + $space; } + + .jasmine-spec-duration { + margin-left: $margin-unit; + } } }