jasmine-core 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/lib/console/console.js +54 -24
  3. data/lib/jasmine-core/__init__.py +1 -0
  4. data/lib/jasmine-core/boot/boot.js +2 -63
  5. data/lib/jasmine-core/boot/node_boot.js +19 -0
  6. data/lib/jasmine-core/boot.js +3 -64
  7. data/lib/jasmine-core/core.py +60 -0
  8. data/lib/jasmine-core/example/node_example/spec/PlayerSpec.js +60 -0
  9. data/lib/jasmine-core/example/node_example/spec/SpecHelper.js +15 -0
  10. data/lib/jasmine-core/example/node_example/src/Player.js +24 -0
  11. data/lib/jasmine-core/example/node_example/src/Song.js +9 -0
  12. data/lib/jasmine-core/jasmine-html.js +119 -74
  13. data/lib/jasmine-core/jasmine.css +61 -54
  14. data/lib/jasmine-core/jasmine.js +961 -456
  15. data/lib/jasmine-core/json2.js +73 -62
  16. data/lib/jasmine-core/node_boot.js +41 -0
  17. data/lib/jasmine-core/spec/console/ConsoleReporterSpec.js +52 -8
  18. data/lib/jasmine-core/spec/core/AnySpec.js +1 -0
  19. data/lib/jasmine-core/spec/core/ClockSpec.js +122 -18
  20. data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +14 -1
  21. data/lib/jasmine-core/spec/core/EnvSpec.js +0 -63
  22. data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +7 -0
  23. data/lib/jasmine-core/spec/core/ExceptionsSpec.js +2 -2
  24. data/lib/jasmine-core/spec/core/ExpectationSpec.js +46 -50
  25. data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +37 -0
  26. data/lib/jasmine-core/spec/core/MockDateSpec.js +200 -0
  27. data/lib/jasmine-core/spec/core/ObjectContainingSpec.js +6 -0
  28. data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +49 -12
  29. data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +184 -60
  30. data/lib/jasmine-core/spec/core/SpecSpec.js +46 -108
  31. data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +55 -0
  32. data/lib/jasmine-core/spec/core/SpySpec.js +10 -0
  33. data/lib/jasmine-core/spec/core/SpyStrategySpec.js +13 -0
  34. data/lib/jasmine-core/spec/core/SuiteSpec.js +143 -11
  35. data/lib/jasmine-core/spec/core/TimerSpec.js +18 -0
  36. data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +34 -32
  37. data/lib/jasmine-core/spec/core/integration/EnvSpec.js +969 -36
  38. data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +279 -3
  39. data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +18 -1
  40. data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +2 -1
  41. data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +3 -2
  42. data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +2 -1
  43. data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +4 -2
  44. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +2 -1
  45. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +17 -3
  46. data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +14 -14
  47. data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +5 -5
  48. data/lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js +7 -0
  49. data/lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js +33 -0
  50. data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +183 -35
  51. data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +1 -1
  52. data/lib/jasmine-core/spec/node_suite.js +9 -1
  53. data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +104 -0
  54. data/lib/jasmine-core/spec/performance/large_object_test.js +36 -0
  55. data/lib/jasmine-core/version.rb +1 -1
  56. data/lib/jasmine-core.js +37 -0
  57. data/lib/jasmine-core.rb +6 -2
  58. metadata +23 -9
  59. data/lib/jasmine-core/spec/support/dev_boot.js +0 -124
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2008-2013 Pivotal Labs
2
+ Copyright (c) 2008-2014 Pivotal Labs
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
5
5
  a copy of this software and associated documentation files (the
@@ -46,23 +46,25 @@ jasmineRequire.HtmlReporter = function(j$) {
46
46
  failureCount = 0,
47
47
  pendingSpecCount = 0,
48
48
  htmlReporterMain,
49
- symbols;
49
+ symbols,
50
+ failedSuites = [];
50
51
 
51
52
  this.initialize = function() {
52
- htmlReporterMain = createDom("div", {className: "html-reporter"},
53
- createDom("div", {className: "banner"},
54
- createDom("span", {className: "title"}, "Jasmine"),
55
- createDom("span", {className: "version"}, j$.version)
53
+ clearPrior();
54
+ htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'},
55
+ createDom('div', {className: 'banner'},
56
+ createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}),
57
+ createDom('span', {className: 'version'}, j$.version)
56
58
  ),
57
- createDom("ul", {className: "symbol-summary"}),
58
- createDom("div", {className: "alert"}),
59
- createDom("div", {className: "results"},
60
- createDom("div", {className: "failures"})
59
+ createDom('ul', {className: 'symbol-summary'}),
60
+ createDom('div', {className: 'alert'}),
61
+ createDom('div', {className: 'results'},
62
+ createDom('div', {className: 'failures'})
61
63
  )
62
64
  );
63
65
  getContainer().appendChild(htmlReporterMain);
64
66
 
65
- symbols = find(".symbol-summary");
67
+ symbols = find('.symbol-summary');
66
68
  };
67
69
 
68
70
  var totalSpecsDefined;
@@ -71,17 +73,21 @@ jasmineRequire.HtmlReporter = function(j$) {
71
73
  timer.start();
72
74
  };
73
75
 
74
- var summary = createDom("div", {className: "summary"});
76
+ var summary = createDom('div', {className: 'summary'});
75
77
 
76
- var topResults = new j$.ResultsNode({}, "", null),
78
+ var topResults = new j$.ResultsNode({}, '', null),
77
79
  currentParent = topResults;
78
80
 
79
81
  this.suiteStarted = function(result) {
80
- currentParent.addChild(result, "suite");
82
+ currentParent.addChild(result, 'suite');
81
83
  currentParent = currentParent.last();
82
84
  };
83
85
 
84
86
  this.suiteDone = function(result) {
87
+ if (result.status == 'failed') {
88
+ failedSuites.push(result);
89
+ }
90
+
85
91
  if (currentParent == topResults) {
86
92
  return;
87
93
  }
@@ -90,82 +96,103 @@ jasmineRequire.HtmlReporter = function(j$) {
90
96
  };
91
97
 
92
98
  this.specStarted = function(result) {
93
- currentParent.addChild(result, "spec");
99
+ currentParent.addChild(result, 'spec');
94
100
  };
95
101
 
96
102
  var failures = [];
97
103
  this.specDone = function(result) {
98
- if (result.status != "disabled") {
104
+ if(noExpectations(result) && typeof console !== 'undefined' && typeof console.error !== 'undefined') {
105
+ console.error('Spec \'' + result.fullName + '\' has no expectations.');
106
+ }
107
+
108
+ if (result.status != 'disabled') {
99
109
  specsExecuted++;
100
110
  }
101
111
 
102
- symbols.appendChild(createDom("li", {
103
- className: result.status,
104
- id: "spec_" + result.id,
112
+ symbols.appendChild(createDom('li', {
113
+ className: noExpectations(result) ? 'empty' : result.status,
114
+ id: 'spec_' + result.id,
105
115
  title: result.fullName
106
116
  }
107
117
  ));
108
118
 
109
- if (result.status == "failed") {
119
+ if (result.status == 'failed') {
110
120
  failureCount++;
111
121
 
112
122
  var failure =
113
- createDom("div", {className: "spec-detail failed"},
114
- createDom("div", {className: "description"},
115
- createDom("a", {title: result.fullName, href: specHref(result)}, result.fullName)
123
+ createDom('div', {className: 'spec-detail failed'},
124
+ createDom('div', {className: 'description'},
125
+ createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName)
116
126
  ),
117
- createDom("div", {className: "messages"})
127
+ createDom('div', {className: 'messages'})
118
128
  );
119
129
  var messages = failure.childNodes[1];
120
130
 
121
131
  for (var i = 0; i < result.failedExpectations.length; i++) {
122
132
  var expectation = result.failedExpectations[i];
123
- messages.appendChild(createDom("div", {className: "result-message"}, expectation.message));
124
- messages.appendChild(createDom("div", {className: "stack-trace"}, expectation.stack));
133
+ messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message));
134
+ messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack));
125
135
  }
126
136
 
127
137
  failures.push(failure);
128
138
  }
129
139
 
130
- if (result.status == "pending") {
140
+ if (result.status == 'pending') {
131
141
  pendingSpecCount++;
132
142
  }
133
143
  };
134
144
 
135
145
  this.jasmineDone = function() {
136
- var banner = find(".banner");
137
- banner.appendChild(createDom("span", {className: "duration"}, "finished in " + timer.elapsed() / 1000 + "s"));
146
+ var banner = find('.banner');
147
+ banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));
138
148
 
139
- var alert = find(".alert");
149
+ var alert = find('.alert');
140
150
 
141
- alert.appendChild(createDom("span", { className: "exceptions" },
142
- createDom("label", { className: "label", 'for': "raise-exceptions" }, "raise exceptions"),
143
- createDom("input", {
144
- className: "raise",
145
- id: "raise-exceptions",
146
- type: "checkbox"
151
+ alert.appendChild(createDom('span', { className: 'exceptions' },
152
+ createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'),
153
+ createDom('input', {
154
+ className: 'raise',
155
+ id: 'raise-exceptions',
156
+ type: 'checkbox'
147
157
  })
148
158
  ));
149
- var checkbox = find("input");
159
+ var checkbox = find('#raise-exceptions');
150
160
 
151
161
  checkbox.checked = !env.catchingExceptions();
152
162
  checkbox.onclick = onRaiseExceptionsClick;
153
163
 
154
164
  if (specsExecuted < totalSpecsDefined) {
155
- var skippedMessage = "Ran " + specsExecuted + " of " + totalSpecsDefined + " specs - run all";
165
+ var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all';
156
166
  alert.appendChild(
157
- createDom("span", {className: "bar skipped"},
158
- createDom("a", {href: "?", title: "Run all specs"}, skippedMessage)
167
+ createDom('span', {className: 'bar skipped'},
168
+ createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage)
159
169
  )
160
170
  );
161
171
  }
162
- var statusBarMessage = "" + pluralize("spec", specsExecuted) + ", " + pluralize("failure", failureCount);
163
- if (pendingSpecCount) { statusBarMessage += ", " + pluralize("pending spec", pendingSpecCount); }
172
+ var statusBarMessage = '';
173
+ var statusBarClassName = 'bar ';
174
+
175
+ if (totalSpecsDefined > 0) {
176
+ statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount);
177
+ if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); }
178
+ statusBarClassName += (failureCount > 0) ? 'failed' : 'passed';
179
+ } else {
180
+ statusBarClassName += 'skipped';
181
+ statusBarMessage += 'No specs found';
182
+ }
183
+
184
+ alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage));
164
185
 
165
- var statusBarClassName = "bar " + ((failureCount > 0) ? "failed" : "passed");
166
- alert.appendChild(createDom("span", {className: statusBarClassName}, statusBarMessage));
186
+ for(i = 0; i < failedSuites.length; i++) {
187
+ var failedSuite = failedSuites[i];
188
+ for(var j = 0; j < failedSuite.failedExpectations.length; j++) {
189
+ var errorBarMessage = 'AfterAll ' + failedSuite.failedExpectations[j].message;
190
+ var errorBarClassName = 'bar errored';
191
+ alert.appendChild(createDom('span', {className: errorBarClassName}, errorBarMessage));
192
+ }
193
+ }
167
194
 
168
- var results = find(".results");
195
+ var results = find('.results');
169
196
  results.appendChild(summary);
170
197
 
171
198
  summaryList(topResults, summary);
@@ -174,27 +201,31 @@ jasmineRequire.HtmlReporter = function(j$) {
174
201
  var specListNode;
175
202
  for (var i = 0; i < resultsTree.children.length; i++) {
176
203
  var resultNode = resultsTree.children[i];
177
- if (resultNode.type == "suite") {
178
- var suiteListNode = createDom("ul", {className: "suite", id: "suite-" + resultNode.result.id},
179
- createDom("li", {className: "suite-detail"},
180
- createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description)
204
+ if (resultNode.type == 'suite') {
205
+ var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id},
206
+ createDom('li', {className: 'suite-detail'},
207
+ createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description)
181
208
  )
182
209
  );
183
210
 
184
211
  summaryList(resultNode, suiteListNode);
185
212
  domParent.appendChild(suiteListNode);
186
213
  }
187
- if (resultNode.type == "spec") {
188
- if (domParent.getAttribute("class") != "specs") {
189
- specListNode = createDom("ul", {className: "specs"});
214
+ if (resultNode.type == 'spec') {
215
+ if (domParent.getAttribute('class') != 'specs') {
216
+ specListNode = createDom('ul', {className: 'specs'});
190
217
  domParent.appendChild(specListNode);
191
218
  }
219
+ var specDescription = resultNode.result.description;
220
+ if(noExpectations(resultNode.result)) {
221
+ specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription;
222
+ }
192
223
  specListNode.appendChild(
193
- createDom("li", {
224
+ createDom('li', {
194
225
  className: resultNode.result.status,
195
- id: "spec-" + resultNode.result.id
226
+ id: 'spec-' + resultNode.result.id
196
227
  },
197
- createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description)
228
+ createDom('a', {href: specHref(resultNode.result)}, specDescription)
198
229
  )
199
230
  );
200
231
  }
@@ -203,24 +234,24 @@ jasmineRequire.HtmlReporter = function(j$) {
203
234
 
204
235
  if (failures.length) {
205
236
  alert.appendChild(
206
- createDom('span', {className: "menu bar spec-list"},
207
- createDom("span", {}, "Spec List | "),
208
- createDom('a', {className: "failures-menu", href: "#"}, "Failures")));
237
+ createDom('span', {className: 'menu bar spec-list'},
238
+ createDom('span', {}, 'Spec List | '),
239
+ createDom('a', {className: 'failures-menu', href: '#'}, 'Failures')));
209
240
  alert.appendChild(
210
- createDom('span', {className: "menu bar failure-list"},
211
- createDom('a', {className: "spec-list-menu", href: "#"}, "Spec List"),
212
- createDom("span", {}, " | Failures ")));
241
+ createDom('span', {className: 'menu bar failure-list'},
242
+ createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'),
243
+ createDom('span', {}, ' | Failures ')));
213
244
 
214
- find(".failures-menu").onclick = function() {
245
+ find('.failures-menu').onclick = function() {
215
246
  setMenuModeTo('failure-list');
216
247
  };
217
- find(".spec-list-menu").onclick = function() {
248
+ find('.spec-list-menu').onclick = function() {
218
249
  setMenuModeTo('spec-list');
219
250
  };
220
251
 
221
252
  setMenuModeTo('failure-list');
222
253
 
223
- var failureNode = find(".failures");
254
+ var failureNode = find('.failures');
224
255
  for (var i = 0; i < failures.length; i++) {
225
256
  failureNode.appendChild(failures[i]);
226
257
  }
@@ -230,7 +261,16 @@ jasmineRequire.HtmlReporter = function(j$) {
230
261
  return this;
231
262
 
232
263
  function find(selector) {
233
- return getContainer().querySelector(selector);
264
+ return getContainer().querySelector('.jasmine_html-reporter ' + selector);
265
+ }
266
+
267
+ function clearPrior() {
268
+ // return the reporter
269
+ var oldReporter = find('');
270
+
271
+ if(oldReporter) {
272
+ getContainer().removeChild(oldReporter);
273
+ }
234
274
  }
235
275
 
236
276
  function createDom(type, attrs, childrenVarArgs) {
@@ -249,7 +289,7 @@ jasmineRequire.HtmlReporter = function(j$) {
249
289
  }
250
290
 
251
291
  for (var attr in attrs) {
252
- if (attr == "className") {
292
+ if (attr == 'className') {
253
293
  el[attr] = attrs[attr];
254
294
  } else {
255
295
  el.setAttribute(attr, attrs[attr]);
@@ -260,17 +300,22 @@ jasmineRequire.HtmlReporter = function(j$) {
260
300
  }
261
301
 
262
302
  function pluralize(singular, count) {
263
- var word = (count == 1 ? singular : singular + "s");
303
+ var word = (count == 1 ? singular : singular + 's');
264
304
 
265
- return "" + count + " " + word;
305
+ return '' + count + ' ' + word;
266
306
  }
267
307
 
268
308
  function specHref(result) {
269
- return "?spec=" + encodeURIComponent(result.fullName);
309
+ return '?spec=' + encodeURIComponent(result.fullName);
270
310
  }
271
311
 
272
312
  function setMenuModeTo(mode) {
273
- htmlReporterMain.setAttribute("class", "html-reporter " + mode);
313
+ htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode);
314
+ }
315
+
316
+ function noExpectations(result) {
317
+ return (result.failedExpectations.length + result.passedExpectations.length) === 0 &&
318
+ result.status === 'passed';
274
319
  }
275
320
  }
276
321
 
@@ -279,7 +324,7 @@ jasmineRequire.HtmlReporter = function(j$) {
279
324
 
280
325
  jasmineRequire.HtmlSpecFilter = function() {
281
326
  function HtmlSpecFilter(options) {
282
- var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
327
+ var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
283
328
  var filterPattern = new RegExp(filterString);
284
329
 
285
330
  this.matches = function(specName) {
@@ -328,9 +373,9 @@ jasmineRequire.QueryString = function() {
328
373
  function toQueryString(paramMap) {
329
374
  var qStrPairs = [];
330
375
  for (var prop in paramMap) {
331
- qStrPairs.push(encodeURIComponent(prop) + "=" + encodeURIComponent(paramMap[prop]));
376
+ qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop]));
332
377
  }
333
- return "?" + qStrPairs.join('&');
378
+ return '?' + qStrPairs.join('&');
334
379
  }
335
380
 
336
381
  function queryStringToParamMap() {
@@ -343,7 +388,7 @@ jasmineRequire.QueryString = function() {
343
388
  for (var i = 0; i < params.length; i++) {
344
389
  var p = params[i].split('=');
345
390
  var value = decodeURIComponent(p[1]);
346
- if (value === "true" || value === "false") {
391
+ if (value === 'true' || value === 'false') {
347
392
  value = JSON.parse(value);
348
393
  }
349
394
  paramMap[decodeURIComponent(p[0])] = value;
@@ -1,55 +1,62 @@
1
- body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
1
+ body { overflow-y: scroll; }
2
2
 
3
- .html-reporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
4
- .html-reporter a { text-decoration: none; }
5
- .html-reporter a:hover { text-decoration: underline; }
6
- .html-reporter p, .html-reporter h1, .html-reporter h2, .html-reporter h3, .html-reporter h4, .html-reporter h5, .html-reporter h6 { margin: 0; line-height: 14px; }
7
- .html-reporter .banner, .html-reporter .symbol-summary, .html-reporter .summary, .html-reporter .result-message, .html-reporter .spec .description, .html-reporter .spec-detail .description, .html-reporter .alert .bar, .html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; }
8
- .html-reporter .banner .version { margin-left: 14px; }
9
- .html-reporter #jasmine_content { position: fixed; right: 100%; }
10
- .html-reporter .version { color: #aaaaaa; }
11
- .html-reporter .banner { margin-top: 14px; }
12
- .html-reporter .duration { color: #aaaaaa; float: right; }
13
- .html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; }
14
- .html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; }
15
- .html-reporter .symbol-summary li.passed { font-size: 14px; }
16
- .html-reporter .symbol-summary li.passed:before { color: #5e7d00; content: "\02022"; }
17
- .html-reporter .symbol-summary li.failed { line-height: 9px; }
18
- .html-reporter .symbol-summary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
19
- .html-reporter .symbol-summary li.disabled { font-size: 14px; }
20
- .html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; }
21
- .html-reporter .symbol-summary li.pending { line-height: 17px; }
22
- .html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; }
23
- .html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
24
- .html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
25
- .html-reporter .bar.failed { background-color: #b03911; }
26
- .html-reporter .bar.passed { background-color: #a6b779; }
27
- .html-reporter .bar.skipped { background-color: #bababa; }
28
- .html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; }
29
- .html-reporter .bar.menu a { color: #333333; }
30
- .html-reporter .bar a { color: white; }
31
- .html-reporter.spec-list .bar.menu.failure-list, .html-reporter.spec-list .results .failures { display: none; }
32
- .html-reporter.failure-list .bar.menu.spec-list, .html-reporter.failure-list .summary { display: none; }
33
- .html-reporter .running-alert { background-color: #666666; }
34
- .html-reporter .results { margin-top: 14px; }
35
- .html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
36
- .html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
37
- .html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
38
- .html-reporter.showDetails .summary { display: none; }
39
- .html-reporter.showDetails #details { display: block; }
40
- .html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
41
- .html-reporter .summary { margin-top: 14px; }
42
- .html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; }
43
- .html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; }
44
- .html-reporter .summary li.passed a { color: #5e7d00; }
45
- .html-reporter .summary li.failed a { color: #b03911; }
46
- .html-reporter .summary li.pending a { color: #ba9d37; }
47
- .html-reporter .description + .suite { margin-top: 0; }
48
- .html-reporter .suite { margin-top: 14px; }
49
- .html-reporter .suite a { color: #333333; }
50
- .html-reporter .failures .spec-detail { margin-bottom: 28px; }
51
- .html-reporter .failures .spec-detail .description { background-color: #b03911; }
52
- .html-reporter .failures .spec-detail .description a { color: white; }
53
- .html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; }
54
- .html-reporter .result-message span.result { display: block; }
55
- .html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
3
+ .jasmine_html-reporter { background-color: #eee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333; }
4
+ .jasmine_html-reporter a { text-decoration: none; }
5
+ .jasmine_html-reporter a:hover { text-decoration: underline; }
6
+ .jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; }
7
+ .jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; }
8
+ .jasmine_html-reporter .banner { position: relative; }
9
+ .jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -moz-background-size: 100%; -o-background-size: 100%; -webkit-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; }
10
+ .jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; }
11
+ .jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; }
12
+ .jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; }
13
+ .jasmine_html-reporter .version { color: #aaa; }
14
+ .jasmine_html-reporter .banner { margin-top: 14px; }
15
+ .jasmine_html-reporter .duration { color: #aaa; float: right; }
16
+ .jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; }
17
+ .jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; }
18
+ .jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; }
19
+ .jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; }
20
+ .jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; }
21
+ .jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; }
22
+ .jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; }
23
+ .jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; }
24
+ .jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; }
25
+ .jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; }
26
+ .jasmine_html-reporter .symbol-summary li.empty { font-size: 14px; }
27
+ .jasmine_html-reporter .symbol-summary li.empty:before { color: #ba9d37; content: "\02022"; }
28
+ .jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
29
+ .jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
30
+ .jasmine_html-reporter .bar.failed { background-color: #ca3a11; }
31
+ .jasmine_html-reporter .bar.passed { background-color: #007069; }
32
+ .jasmine_html-reporter .bar.skipped { background-color: #bababa; }
33
+ .jasmine_html-reporter .bar.errored { background-color: #ca3a11; }
34
+ .jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaa; }
35
+ .jasmine_html-reporter .bar.menu a { color: #333; }
36
+ .jasmine_html-reporter .bar a { color: white; }
37
+ .jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; }
38
+ .jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; }
39
+ .jasmine_html-reporter .running-alert { background-color: #666; }
40
+ .jasmine_html-reporter .results { margin-top: 14px; }
41
+ .jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
42
+ .jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
43
+ .jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
44
+ .jasmine_html-reporter.showDetails .summary { display: none; }
45
+ .jasmine_html-reporter.showDetails #details { display: block; }
46
+ .jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
47
+ .jasmine_html-reporter .summary { margin-top: 14px; }
48
+ .jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; }
49
+ .jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; }
50
+ .jasmine_html-reporter .summary li.passed a { color: #007069; }
51
+ .jasmine_html-reporter .summary li.failed a { color: #ca3a11; }
52
+ .jasmine_html-reporter .summary li.empty a { color: #ba9d37; }
53
+ .jasmine_html-reporter .summary li.pending a { color: #ba9d37; }
54
+ .jasmine_html-reporter .description + .suite { margin-top: 0; }
55
+ .jasmine_html-reporter .suite { margin-top: 14px; }
56
+ .jasmine_html-reporter .suite a { color: #333; }
57
+ .jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; }
58
+ .jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; }
59
+ .jasmine_html-reporter .failures .spec-detail .description a { color: white; }
60
+ .jasmine_html-reporter .result-message { padding-top: 14px; color: #333; white-space: pre; }
61
+ .jasmine_html-reporter .result-message span.result { display: block; }
62
+ .jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666; border: 1px solid #ddd; background: white; white-space: pre; }