Skip to content

Commit 92d33c7

Browse files
SamFareSamFare
SamFare
authored and
SamFare
committed
Implemented hiding of disabled specs
1 parent ced2b11 commit 92d33c7

File tree

5 files changed

+123
-5
lines changed

5 files changed

+123
-5
lines changed

lib/jasmine-core/boot/boot.js

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656

5757
var throwingExpectationFailures = queryString.getParam("throwFailures");
5858
env.throwOnExpectationFailure(throwingExpectationFailures);
59+
60+
var hideDisabled = queryString.getParam("hideDisabled");
61+
env.hideDisabled(hideDisabled);
5962

6063
var random = queryString.getParam("random");
6164

spec/html/HtmlReporterSpec.js

+78-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ describe("HtmlReporter", function() {
103103
createTextNode: function() { return document.createTextNode.apply(document, arguments); }
104104
});
105105
reporter.initialize();
106-
107106
reporter.specDone({id: 789, status: "excluded", fullName: "symbols should have titles", passedExpectations: [], failedExpectations: []});
108107

109108
var specEl = container.querySelector('.jasmine-symbol-summary li');
@@ -696,7 +695,85 @@ describe("HtmlReporter", function() {
696695
expect(navigateHandler).toHaveBeenCalledWith('throwFailures', false);
697696
});
698697
});
698+
describe("UI for hiding disabled specs", function() {
699+
it("should be unchecked if not hiding disabled specs", function() {
700+
var env = new jasmineUnderTest.Env(),
701+
container = document.createElement("div"),
702+
getContainer = function() {
703+
return container;
704+
},
705+
reporter = new jasmineUnderTest.HtmlReporter({
706+
env: env,
707+
getContainer: getContainer,
708+
createElement: function() {
709+
return document.createElement.apply(document, arguments);
710+
},
711+
createTextNode: function() {
712+
return document.createTextNode.apply(document, arguments);
713+
}
714+
});
715+
716+
env.hideDisabled(false);
717+
reporter.initialize();
718+
reporter.jasmineDone({});
719+
720+
var disabledUI = container.querySelector(".jasmine-disabled");
721+
expect(disabledUI.checked).toBe(false);
722+
});
723+
724+
it("should be checked if hiding disabled", function() {
725+
var env = new jasmineUnderTest.Env(),
726+
container = document.createElement("div"),
727+
getContainer = function() {
728+
return container;
729+
},
730+
reporter = new jasmineUnderTest.HtmlReporter({
731+
env: env,
732+
getContainer: getContainer,
733+
createElement: function() {
734+
return document.createElement.apply(document, arguments);
735+
},
736+
createTextNode: function() {
737+
return document.createTextNode.apply(document, arguments);
738+
}
739+
});
699740

741+
env.hideDisabled(true);
742+
reporter.initialize();
743+
reporter.jasmineDone({});
744+
745+
var disabledUI = container.querySelector(".jasmine-disabled");
746+
expect(disabledUI.checked).toBe(true);
747+
});
748+
749+
it("should not display specs that have been disabled", function() {
750+
var env = new jasmineUnderTest.Env(),
751+
container = document.createElement('div'),
752+
753+
getContainer = function() {return container;},
754+
755+
reporter = new jasmineUnderTest.HtmlReporter({
756+
env: env,
757+
getContainer: getContainer,
758+
createElement: function() { return document.createElement.apply(document, arguments); },
759+
createTextNode: function() { return document.createTextNode.apply(document, arguments); }
760+
});
761+
env.hideDisabled(true);
762+
reporter.initialize();
763+
reporter.specDone({
764+
id: 789,
765+
status: "excluded",
766+
fullName: "symbols should have titles",
767+
passedExpectations: [],
768+
failedExpectations: []
769+
});
770+
771+
772+
773+
var specEl = container.querySelector('.jasmine-symbol-summary li');
774+
expect(specEl.getAttribute("class")).toEqual("jasmine-excluded-no-display");
775+
});
776+
});
700777
describe("UI for running tests in random order", function() {
701778
it("should be unchecked if not randomizing", function() {
702779
var env = new jasmineUnderTest.Env(),

src/core/Env.js

+9
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ getJasmineRequireObj().Env = function(j$) {
2626
var throwOnExpectationFailure = false;
2727
var stopOnSpecFailure = false;
2828
var random = true;
29+
var hidingDisabled = false;
2930
var seed = null;
3031
var handlingLoadErrors = true;
3132
var hasFailures = false;
@@ -194,6 +195,14 @@ getJasmineRequireObj().Env = function(j$) {
194195
random = !!value;
195196
};
196197

198+
this.hidingDisabled = function(value) {
199+
return hidingDisabled;
200+
};
201+
202+
this.hideDisabled = function(value) {
203+
hidingDisabled = !!value;
204+
};
205+
197206
this.randomTests = function() {
198207
return random;
199208
};

src/html/HtmlReporter.js

+26-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ jasmineRequire.HtmlReporter = function(j$) {
119119
}
120120

121121
symbols.appendChild(createDom('li', {
122-
className: noExpectations(result) ? 'jasmine-empty' : 'jasmine-' + result.status,
122+
className: this.displaySpecInCorrectFormat(result),
123123
id: 'spec_' + result.id,
124124
title: result.fullName
125125
}
@@ -132,6 +132,17 @@ jasmineRequire.HtmlReporter = function(j$) {
132132
addDeprecationWarnings(result);
133133
};
134134

135+
this.displaySpecInCorrectFormat = function(result) {
136+
return noExpectations(result) ? 'jasmine-empty' : this.resultStatus(result.status);
137+
};
138+
139+
this.resultStatus = function(status) {
140+
if(status === 'excluded') {
141+
return env.hidingDisabled() ? 'jasmine-excluded-no-display' : 'jasmine-excluded';
142+
}
143+
return 'jasmine-' + status;
144+
};
145+
135146
this.jasmineDone = function(doneResult) {
136147
var banner = find('.jasmine-banner');
137148
var alert = find('.jasmine-alert');
@@ -323,7 +334,14 @@ jasmineRequire.HtmlReporter = function(j$) {
323334
id: 'jasmine-random-order',
324335
type: 'checkbox'
325336
}),
326-
createDom('label', { className: 'jasmine-label', 'for': 'jasmine-random-order' }, 'run tests in random order'))
337+
createDom('label', { className: 'jasmine-label', 'for': 'jasmine-random-order' }, 'run tests in random order')),
338+
createDom('div', { className: 'jasmine-hide-disabled' },
339+
createDom('input', {
340+
className: 'jasmine-disabled',
341+
id: 'jasmine-hide-disabled',
342+
type: 'checkbox'
343+
}),
344+
createDom('label', { className: 'jasmine-label', 'for': 'jasmine-hide-disabled' }, 'hide disabled tests'))
327345
)
328346
);
329347

@@ -345,6 +363,12 @@ jasmineRequire.HtmlReporter = function(j$) {
345363
navigateWithNewParam('random', !env.randomTests());
346364
};
347365

366+
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled');
367+
hideDisabled.checked = env.hidingDisabled();
368+
hideDisabled.onclick = function() {
369+
navigateWithNewParam('hideDisabled', !env.hidingDisabled());
370+
};
371+
348372
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
349373
optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'),
350374
isOpen = /\bjasmine-open\b/;

src/html/_HTMLReporter.scss

+7-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ body {
135135
}
136136
}
137137

138-
&.jasmine-excluded {
138+
&.jasmine-excluded {
139139
font-size: 14px;
140140

141141
&:before {
@@ -144,6 +144,11 @@ body {
144144
}
145145
}
146146

147+
&.jasmine-excluded-no-display {
148+
font-size: 14px;
149+
display: none;
150+
}
151+
147152
&.jasmine-pending {
148153
line-height: 17px;
149154
&:before {
@@ -294,7 +299,7 @@ body {
294299

295300
&.jasmine-excluded a {
296301
color: $neutral-color;
297-
}
302+
}
298303
}
299304
}
300305

0 commit comments

Comments
 (0)