diff --git a/lib/jasmine-core/jasmine-html.js b/lib/jasmine-core/jasmine-html.js
index 40d2811f..5c068e9d 100644
--- a/lib/jasmine-core/jasmine-html.js
+++ b/lib/jasmine-core/jasmine-html.js
@@ -62,7 +62,7 @@ jasmine.HtmlReporterHelpers.addHelpers = function(ctor) {
}
};
-jasmine.HtmlReporter = function(_doc, jasmine) {
+jasmine.HtmlReporter = function(_doc, jasmine, yieldForRender) {
var self = this;
this.jasmine = jasmine || window.jasmine;
var doc = _doc || window.document;
@@ -99,8 +99,20 @@ jasmine.HtmlReporter = function(_doc, jasmine) {
self.reportSpecStarting = function(spec) {
};
+ var lastYieldForRender = 0;
+ var refreshInterval = 250;
+ yieldForRender = yieldForRender || function(fn) {
+ var now = Date.now();
+ var delta = (now - lastYieldForRender);
+ if (delta > refreshInterval) {
+ lastYieldForRender = now;
+ setTimeout(fn, 0);
+ } else {
+ fn();
+ }
+ }
self.reportSpecResults = function(result) {
- reporterView.specComplete(result);
+ yieldForRender(function() {reporterView.specComplete(result) });
};
self.log = function() {
diff --git a/spec/html/HTMLReporterSpec.js b/spec/html/HTMLReporterSpec.js
index 69232388..65424bc9 100644
--- a/spec/html/HTMLReporterSpec.js
+++ b/spec/html/HTMLReporterSpec.js
@@ -8,9 +8,10 @@ describe("HtmlReporter", function() {
env = new jasmine.Env();
env.updateInterval = 0;
+
body = document.createElement("body");
fakeDocument = { body: body, location: { search: "" } };
- htmlReporter = new jasmine.HtmlReporter(fakeDocument);
+ htmlReporter = new jasmine.HtmlReporter(fakeDocument, null, function(fn) { fn() });
});
function fakeSpec(name) {
diff --git a/src/html/HtmlReporter.js b/src/html/HtmlReporter.js
index 09abcab5..7b31b500 100644
--- a/src/html/HtmlReporter.js
+++ b/src/html/HtmlReporter.js
@@ -1,4 +1,4 @@
-jasmine.HtmlReporter = function(_doc, jasmine) {
+jasmine.HtmlReporter = function(_doc, jasmine, yieldForRender) {
var self = this;
this.jasmine = jasmine || window.jasmine;
var doc = _doc || window.document;
@@ -35,8 +35,20 @@ jasmine.HtmlReporter = function(_doc, jasmine) {
self.reportSpecStarting = function(spec) {
};
+ var lastYieldForRender = 0;
+ var refreshInterval = 250;
+ yieldForRender = yieldForRender || function(fn) {
+ var now = Date.now();
+ var delta = (now - lastYieldForRender);
+ if (delta > refreshInterval) {
+ lastYieldForRender = now;
+ setTimeout(fn, 0);
+ } else {
+ fn();
+ }
+ }
self.reportSpecResults = function(result) {
- reporterView.specComplete(result);
+ yieldForRender(function() {reporterView.specComplete(result) });
};
self.log = function() {