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;
+ }
}
}