diff --git a/lib/jasmine-core/boot/boot.js b/lib/jasmine-core/boot/boot.js index 57f52e5e..97a04f85 100644 --- a/lib/jasmine-core/boot/boot.js +++ b/lib/jasmine-core/boot/boot.js @@ -56,6 +56,9 @@ var throwingExpectationFailures = queryString.getParam("throwFailures"); env.throwOnExpectationFailure(throwingExpectationFailures); + + var hideDisabled = queryString.getParam("hideDisabled"); + env.hideDisabled(hideDisabled); var random = queryString.getParam("random"); diff --git a/spec/html/HtmlReporterSpec.js b/spec/html/HtmlReporterSpec.js index 21108fc5..2e92684c 100644 --- a/spec/html/HtmlReporterSpec.js +++ b/spec/html/HtmlReporterSpec.js @@ -103,7 +103,6 @@ describe("HtmlReporter", function() { createTextNode: function() { return document.createTextNode.apply(document, arguments); } }); reporter.initialize(); - reporter.specDone({id: 789, status: "excluded", fullName: "symbols should have titles", passedExpectations: [], failedExpectations: []}); var specEl = container.querySelector('.jasmine-symbol-summary li'); @@ -696,7 +695,85 @@ describe("HtmlReporter", function() { expect(navigateHandler).toHaveBeenCalledWith('throwFailures', false); }); }); + describe("UI for hiding disabled specs", function() { + it("should be unchecked if not hiding disabled specs", function() { + var env = new jasmineUnderTest.Env(), + container = document.createElement("div"), + getContainer = function() { + return container; + }, + reporter = new jasmineUnderTest.HtmlReporter({ + env: env, + getContainer: getContainer, + createElement: function() { + return document.createElement.apply(document, arguments); + }, + createTextNode: function() { + return document.createTextNode.apply(document, arguments); + } + }); + env.hideDisabled(false); + reporter.initialize(); + reporter.jasmineDone({}); + + var disabledUI = container.querySelector(".jasmine-disabled"); + expect(disabledUI.checked).toBe(false); + }); + + it("should be checked if hiding disabled", function() { + var env = new jasmineUnderTest.Env(), + container = document.createElement("div"), + getContainer = function() { + return container; + }, + reporter = new jasmineUnderTest.HtmlReporter({ + env: env, + getContainer: getContainer, + createElement: function() { + return document.createElement.apply(document, arguments); + }, + createTextNode: function() { + return document.createTextNode.apply(document, arguments); + } + }); + + env.hideDisabled(true); + reporter.initialize(); + reporter.jasmineDone({}); + + var disabledUI = container.querySelector(".jasmine-disabled"); + expect(disabledUI.checked).toBe(true); + }); + + it("should not display specs that have been disabled", function() { + var env = new jasmineUnderTest.Env(), + container = document.createElement('div'), + + getContainer = function() {return container;}, + + reporter = new jasmineUnderTest.HtmlReporter({ + env: env, + getContainer: getContainer, + createElement: function() { return document.createElement.apply(document, arguments); }, + createTextNode: function() { return document.createTextNode.apply(document, arguments); } + }); + env.hideDisabled(true); + reporter.initialize(); + reporter.specDone({ + id: 789, + status: "excluded", + fullName: "symbols should have titles", + passedExpectations: [], + failedExpectations: [] + }); + + + + var specEl = container.querySelector('.jasmine-symbol-summary li'); + expect(specEl.getAttribute("class")).toEqual("jasmine-excluded-no-display"); + }); + }); describe("UI for running tests in random order", function() { it("should be unchecked if not randomizing", function() { var env = new jasmineUnderTest.Env(), diff --git a/src/core/Env.js b/src/core/Env.js index 9caaacd4..9d87d26c 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -26,6 +26,7 @@ getJasmineRequireObj().Env = function(j$) { var throwOnExpectationFailure = false; var stopOnSpecFailure = false; var random = true; + var hidingDisabled = false; var seed = null; var handlingLoadErrors = true; var hasFailures = false; @@ -194,6 +195,14 @@ getJasmineRequireObj().Env = function(j$) { random = !!value; }; + this.hidingDisabled = function(value) { + return hidingDisabled; + }; + + this.hideDisabled = function(value) { + hidingDisabled = !!value; + }; + this.randomTests = function() { return random; }; diff --git a/src/html/HtmlReporter.js b/src/html/HtmlReporter.js index 0a2f4e5c..99f3213e 100644 --- a/src/html/HtmlReporter.js +++ b/src/html/HtmlReporter.js @@ -119,7 +119,7 @@ jasmineRequire.HtmlReporter = function(j$) { } symbols.appendChild(createDom('li', { - className: noExpectations(result) ? 'jasmine-empty' : 'jasmine-' + result.status, + className: this.displaySpecInCorrectFormat(result), id: 'spec_' + result.id, title: result.fullName } @@ -132,6 +132,17 @@ jasmineRequire.HtmlReporter = function(j$) { addDeprecationWarnings(result); }; + this.displaySpecInCorrectFormat = function(result) { + return noExpectations(result) ? 'jasmine-empty' : this.resultStatus(result.status); + }; + + this.resultStatus = function(status) { + if(status === 'excluded') { + return env.hidingDisabled() ? 'jasmine-excluded-no-display' : 'jasmine-excluded'; + } + return 'jasmine-' + status; + }; + this.jasmineDone = function(doneResult) { var banner = find('.jasmine-banner'); var alert = find('.jasmine-alert'); @@ -323,7 +334,14 @@ jasmineRequire.HtmlReporter = function(j$) { id: 'jasmine-random-order', type: 'checkbox' }), - createDom('label', { className: 'jasmine-label', 'for': 'jasmine-random-order' }, 'run tests in random order')) + createDom('label', { className: 'jasmine-label', 'for': 'jasmine-random-order' }, 'run tests in random order')), + createDom('div', { className: 'jasmine-hide-disabled' }, + createDom('input', { + className: 'jasmine-disabled', + id: 'jasmine-hide-disabled', + type: 'checkbox' + }), + createDom('label', { className: 'jasmine-label', 'for': 'jasmine-hide-disabled' }, 'hide disabled tests')) ) ); @@ -345,6 +363,12 @@ jasmineRequire.HtmlReporter = function(j$) { navigateWithNewParam('random', !env.randomTests()); }; + var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled'); + hideDisabled.checked = env.hidingDisabled(); + hideDisabled.onclick = function() { + navigateWithNewParam('hideDisabled', !env.hidingDisabled()); + }; + var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'), optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'), isOpen = /\bjasmine-open\b/; diff --git a/src/html/_HTMLReporter.scss b/src/html/_HTMLReporter.scss index 4d53ee9d..1dd30315 100644 --- a/src/html/_HTMLReporter.scss +++ b/src/html/_HTMLReporter.scss @@ -135,7 +135,7 @@ body { } } - &.jasmine-excluded { + &.jasmine-excluded { font-size: 14px; &:before { @@ -144,6 +144,11 @@ body { } } + &.jasmine-excluded-no-display { + font-size: 14px; + display: none; + } + &.jasmine-pending { line-height: 17px; &:before { @@ -294,7 +299,7 @@ body { &.jasmine-excluded a { color: $neutral-color; - } + } } }