diff --git a/spec/html/HtmlReporterSpec.js b/spec/html/HtmlReporterSpec.js index 5f6da5d2..19b06e15 100644 --- a/spec/html/HtmlReporterSpec.js +++ b/spec/html/HtmlReporterSpec.js @@ -32,6 +32,23 @@ describe("New HtmlReporter", function() { expect(versionText).toEqual(j$.version); }); + it("builds a single reporter even if initialized multiple times", function() { + var env = new j$.Env(), + container = document.createElement("div"), + getContainer = function() { return container; }, + reporter = new j$.HtmlReporter({ + env: env, + getContainer: getContainer, + createElement: function() { return document.createElement.apply(document, arguments); }, + createTextNode: function() { return document.createTextNode.apply(document, arguments); } + }); + reporter.initialize(); + reporter.initialize(); + reporter.initialize(); + + expect(container.querySelectorAll("div.html-reporter").length).toEqual(1); + }); + it("starts the timer when jasmine begins", function() { var env = new jasmine.Env(), startTimerSpy = jasmine.createSpy("start-timer-spy"), diff --git a/src/html/HtmlReporter.js b/src/html/HtmlReporter.js index e00010c4..e603dce9 100644 --- a/src/html/HtmlReporter.js +++ b/src/html/HtmlReporter.js @@ -20,6 +20,7 @@ jasmineRequire.HtmlReporter = function(j$) { symbols; this.initialize = function() { + clearPrior(); htmlReporterMain = createDom('div', {className: 'html-reporter'}, createDom('div', {className: 'banner'}, createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), @@ -220,6 +221,15 @@ jasmineRequire.HtmlReporter = function(j$) { return getContainer().querySelector('.html-reporter ' + selector); } + function clearPrior() { + // return the reporter + var oldReporter = find(''); + + if(oldReporter) { + getContainer().removeChild(oldReporter); + } + } + function createDom(type, attrs, childrenVarArgs) { var el = createElement(type);