cornucopia 0.1.14 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2682bd2d0aef45b217d6232d738f47f3e263a84
4
- data.tar.gz: 6421bfd30df02f3374930bbc9fde78e96503d8a2
3
+ metadata.gz: 3bbf7f8abccf3fce5d307ac06dd1215471b3b3a0
4
+ data.tar.gz: 32a60a2590a58d37617092b6fef5961f1cf05e14
5
5
  SHA512:
6
- metadata.gz: 8b236913bc33aa3af05bddf15938f360e59032615891215d7e8a3f47045d50ed10a589580cfb6e9d92ba5b52cbe561326910123e116dfa46495a0c90f9aa83a7
7
- data.tar.gz: 45552b891a827b6a5e8a7f73bbd0a172058c0121959374681167444d9ff8b86a90c6863c349eb1c52bedca07ff717c0750800a74c422b19e4b4bccef68e02ef2
6
+ metadata.gz: 16810c0c3b197e50db0bb2331492786af365d607fadd96d6f2ad91687304128b8577d938cfdb2857ac5c63c3ba074c4e5f8fd0eb6bb1175a9d0dd71a5c1a5c8f
7
+ data.tar.gz: db32c9f9023bec3fdf6cd404c0d43d0c7fa8e0ab6893dc5f2a49e7ef50ed0b98a7005b4bf34b9bf9c50295fc7b845f10e0913e38b115206b9ca1c3aaf7dc54ac
data/README.md CHANGED
@@ -360,22 +360,12 @@ report files.
360
360
 
361
361
  ## Todos...
362
362
 
363
- ReportBuilder - delayed reports
364
- @delayed_reports = { key: { report_name: "", report_table: ReportTable.new do || end} }
365
- finder diagnostics - within sub-report. delayed_report?
366
- ReportBuilder - reports by test with multiple sub-reports
367
- Instead of delayed reports?
368
- ReportBuilder - reformat and styling of report?
369
- ReportBuilder - Each test in separate files so we can create a report with a list of failed tests in case there are a
370
- lot of them.
371
- Instead of delayed reports?
372
- Hooks to add stuff to reports
373
- Add own section to report for test
374
- Option/way to make new section a more-details section
375
363
  SitePrism override section, element, sections and elements command to allow parameters to be passed in as additional
376
364
  options.
377
365
  functions to override:
378
366
  main function (name)
379
367
  has_
380
368
  ???
381
- Make configuration a singleton
369
+ Make configuration a singleton
370
+ SitePrism work with Capybara::Node::Simple
371
+ ReportBuilder - reformat and styling of report?
@@ -10,7 +10,9 @@ Around do |scenario, block|
10
10
 
11
11
  Cornucopia::Capybara::FinderDiagnostics::FindAction.start_test
12
12
 
13
- block.call
13
+ Cornucopia::Util::ReportBuilder.current_report.within_test("#{scenario.feature.title} : #{scenario.title}") do
14
+ block.call
15
+ end
14
16
 
15
17
  if scenario.failed?
16
18
  seed_value = scenario.instance_variable_get(:@seed_value)
@@ -22,19 +22,22 @@ RSpec.configure do |config|
22
22
 
23
23
  Cornucopia::Capybara::FinderDiagnostics::FindAction.start_test
24
24
 
25
- example.run
26
-
27
25
  test_example = example.example if example.respond_to?(:example)
28
26
  test_example ||= self.example if self.respond_to?(:example)
29
- if (test_example.exception)
30
- puts ("random seed for testing was: #{@seed_value}")
31
27
 
32
- Cornucopia::Util::ReportBuilder.current_report.
33
- within_section("Test Error: #{test_example.full_description}") do |report|
34
- configured_report = Cornucopia::Util::Configuration.report_configuration :rspec
28
+ Cornucopia::Util::ReportBuilder.current_report.within_test(test_example.full_description) do
29
+ example.run
30
+
31
+ if (test_example.exception)
32
+ puts ("random seed for testing was: #{@seed_value}")
33
+
34
+ Cornucopia::Util::ReportBuilder.current_report.
35
+ within_section("Test Error: #{test_example.full_description}") do |report|
36
+ configured_report = Cornucopia::Util::Configuration.report_configuration :rspec
35
37
 
36
- configured_report.add_report_objects example: test_example, rspec: RSpec
37
- configured_report.generate_report(report)
38
+ configured_report.add_report_objects example: test_example, rspec: RSpec
39
+ configured_report.generate_report(report)
40
+ end
38
41
  end
39
42
  end
40
43
  end
@@ -36,12 +36,14 @@
36
36
  display: table-row;
37
37
  }
38
38
 
39
- .cornucopia-section:nth-child(2n)
39
+ /*.cornucopia-section:nth-child(2n),*/
40
+ .cornucopia-section.cornucopia-even
40
41
  {
41
42
  background-color: steelblue;
42
43
  }
43
44
 
44
- .cornucopia-section:nth-child(2n +1)
45
+ /*.cornucopia-section:nth-child(2n +1),*/
46
+ .cornucopia-section.cornucopia-odd
45
47
  {
46
48
  background-color: powderblue;
47
49
  }
@@ -113,6 +115,11 @@
113
115
  position: relative;
114
116
  }
115
117
 
118
+ .cornucopia-end-section
119
+ {
120
+ clear: left;
121
+ }
122
+
116
123
  .cornucopia-section-image
117
124
  {
118
125
  margin-bottom: 10px;
@@ -149,6 +156,27 @@
149
156
  color: red
150
157
  }
151
158
 
159
+ .report-index-list li
160
+ {
161
+ padding-bottom: 5px;
162
+ margin-bottom: 5px;
163
+ border-bottom-style: solid;
164
+ border-bottom-color: lightgrey;
165
+ border-bottom-width: thin;
166
+ }
167
+
168
+ .report-index-list li:last-child
169
+ {
170
+ border-bottom-style: none;
171
+ }
172
+
173
+ .report-index-list
174
+ {
175
+ list-style-type: none;
176
+ margin-bottom: 10px;
177
+ padding-left: 5px;
178
+ }
179
+
152
180
  .index-list
153
181
  {
154
182
  list-style-type: none;
@@ -159,4 +187,47 @@
159
187
  .padded-frame
160
188
  {
161
189
  padding-right: 10px;
190
+ }
191
+
192
+ .coruncopia-report-holder-table
193
+ {
194
+ display: table;
195
+ height: 100%;
196
+ width: 100%;
197
+ }
198
+
199
+ .coruncopia-report-holder-row
200
+ {
201
+ display: table-row;
202
+ height: 100%;
203
+ }
204
+
205
+ .coruncopia-report-holder-list-cell
206
+ {
207
+ display: table-cell;
208
+ height: 100%;
209
+ vertical-align: top;
210
+ padding-right: 5px;
211
+ }
212
+
213
+ .coruncopia-report-holder-list-holder
214
+ {
215
+ margin: 0px;
216
+ padding: 0px;
217
+ overflow-y: scroll;
218
+ }
219
+
220
+ .coruncopia-report-body-cell
221
+ {
222
+ display: table-cell;
223
+ width: 100%;
224
+ height: 100%;
225
+ }
226
+
227
+ .coruncopia-report-body-frame
228
+ {
229
+ float: right;
230
+ width: 100%;
231
+ height: 100%;
232
+ border-style: none;
162
233
  }
@@ -0,0 +1,17 @@
1
+ last_scroll_top = null;
2
+
3
+ function show_sub_report (event_obj)
4
+ {
5
+ if (!(event_obj.shiftKey || event_obj.ctrlKey || event_obj.metaKey || event_obj.altKey))
6
+ {
7
+ link_item = $ (event_obj.target);
8
+ $("#report-display-document").attr("src", link_item.attr ("href"))
9
+ event_obj.preventDefault();
10
+ }
11
+ }
12
+
13
+ $ (document).ready (function ()
14
+ {
15
+ $ (document).on ("click", "a.coruncopia-report-link", {}, show_sub_report);
16
+ }
17
+ );
@@ -0,0 +1,22 @@
1
+ <html>
2
+ <header><title>%{report_title}</title></header>
3
+ <body>
4
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
5
+ <link href="cornucopia.css" rel="stylesheet" type="text/css" />
6
+ <div class="coruncopia-report-holder-table">
7
+ <div class="coruncopia-report-holder-row">
8
+ <div class="coruncopia-report-holder-list-cell">
9
+ <!--<div class=".coruncopia-report-holder-list-holder">-->
10
+ <ul class="report-index-list">
11
+ %{report_list}
12
+ </ul>
13
+ <!--</div>-->
14
+ </div>
15
+ <div class="coruncopia-report-body-cell">
16
+ <iframe class="coruncopia-report-body-frame" id="report-display-document" src=""></iframe>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ <script src="report.js"></script>
21
+ </body>
22
+ </html>
@@ -2,6 +2,12 @@ require ::File.expand_path("../cornucopia", File.dirname(__FILE__))
2
2
  load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__FILE__))
3
3
  load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
4
4
 
5
+ Spinach.hooks.around_scenario do |scenario_data, step_definitions, &block|
6
+ Cornucopia::Util::ReportBuilder.current_report.within_test("#{scenario_data.feature.name} : #{scenario_data.name}") do
7
+ block.call
8
+ end
9
+ end
10
+
5
11
  Spinach.hooks.before_scenario do |scenario, step_definitions|
6
12
  @running_scenario = scenario
7
13
  seed_value = Cornucopia::Util::Configuration.seed ||
@@ -159,34 +159,20 @@ module Cornucopia
159
159
  options_report_table = options.delete(:report_table)
160
160
  [@min_fields, @more_info_fields].each do |export_field_list|
161
161
  if export_field_list
162
- table_pre = nil
163
- table_post = nil
164
-
162
+ table_pre = false
163
+ table_function = :within_table
165
164
  if @min_fields != export_field_list && !options_report_table
166
165
  options_report_table = nil
166
+ table_pre = true
167
167
 
168
- table_pre = "<div class=\"cornucopia-show-hide-section\">\n"
169
- table_pre << " <div class=\"cornucopia-table\">\n"
170
- table_pre << " <div class=\"cornucopia-row\">\n"
171
- table_pre << " <div class=\"cornucopia-cell-data\">\n"
172
- table_pre << " <a class =\"cornucopia-additional-details\" href=\"#\">More Details...</a>\n"
173
- table_pre << " </div>\n"
174
- table_pre << " </div>\n"
175
- table_pre << " </div>\n"
176
- table_pre << " <div class=\"cornucopia-additional-details hidden\">\n"
177
- table_pre.html_safe
178
- table_post = " </div>\n"
179
- table_post << "</div>\n"
180
- table_post.html_safe
168
+ table_function = :within_hidden_table
181
169
  end
182
170
 
183
- report.within_table(table_prefix: table_pre,
184
- table_postfix: table_post,
185
- report_table: options_report_table,
186
- nested_table: options.delete(:nested_table),
187
- nested_table_label: options.delete(:nested_table_label),
188
- not_a_table: table_pre,
189
- suppress_blank_table: table_pre) do |outer_report_table|
171
+ report.send(table_function,
172
+ report_table: options_report_table,
173
+ nested_table: options.delete(:nested_table),
174
+ nested_table_label: options.delete(:nested_table_label)
175
+ ) do |outer_report_table|
190
176
  Cornucopia::Util::ReportTable.new(
191
177
  report_table: table_pre ? nil : outer_report_table,
192
178
  nested_table: outer_report_table,
@@ -17,6 +17,14 @@ module Cornucopia
17
17
  @asset_body = asset_body
18
18
  end
19
19
 
20
+ def body
21
+ unless @asset_body
22
+ self.source_file = path
23
+ end
24
+
25
+ @asset_body
26
+ end
27
+
20
28
  def source_file=(source_file_name)
21
29
  # We read the file into memory in case the file moves or is temporary.
22
30
  @asset_body = File.read(source_file_name)
@@ -152,7 +152,8 @@ module Cornucopia
152
152
  section << "</h4>\n".html_safe
153
153
  section << " <ul class=\"index-list\">\n".html_safe
154
154
 
155
- section_items.each do |section_item|
155
+ section << Cornucopia::Util::ReportBuilder.build_index_section_item(section_items.shift)
156
+ section_items.reverse.each do |section_item|
156
157
  section << Cornucopia::Util::ReportBuilder.build_index_section_item(section_item)
157
158
  end
158
159
 
@@ -193,6 +194,11 @@ module Cornucopia
193
194
  def initialize(folder_name = nil, parent_folder = nil)
194
195
  @parent_folder_name = parent_folder || Cornucopia::Util::Configuration.base_folder
195
196
  @base_folder_name = folder_name || Cornucopia::Util::Configuration.base_folder
197
+ @report_title = folder_name || Cornucopia::Util::Configuration.base_folder
198
+ @test_name = "unknown_test"
199
+ @section_number = 0
200
+ @test_number = 0
201
+ @report_body = "".html_safe
196
202
  end
197
203
 
198
204
  # This does nothing in a normal report because reports are built as you go.
@@ -211,14 +217,13 @@ module Cornucopia
211
217
  end
212
218
  end
213
219
 
214
- if File.exists?(report_contents_page_name)
220
+ if File.exists?(report_base_page_name)
215
221
  if Cornucopia::Util::Configuration.open_report_after_generation(@base_folder_name)
216
222
  # `open #{report_base_page_name}` rescue nil
217
223
  system("open #{report_base_page_name}") rescue nil
218
224
  end
219
225
  else
220
- initialize_report_files
221
- File.open(report_contents_page_name, "a:UTF-8") do |write_file|
226
+ open_report_contents_file do |write_file|
222
227
  write_file.write %Q[<p class=\"cornucopia-no-errors\">No Errors to report</p>]
223
228
  write_file.write "\n"
224
229
  end
@@ -244,6 +249,15 @@ module Cornucopia
244
249
  @report_folder_name
245
250
  end
246
251
 
252
+ def report_test_folder_name
253
+ unless @report_test_folder_name
254
+ @test_number += 1
255
+ @report_test_folder_name = File.join(report_folder_name, "test_#{@test_number}")
256
+ end
257
+
258
+ @report_test_folder_name
259
+ end
260
+
247
261
  def index_folder_name
248
262
  unless @index_folder_name
249
263
  @index_folder_name = File.join(Cornucopia::Util::ReportBuilder.root_folder, "#{@parent_folder_name}/")
@@ -342,6 +356,23 @@ module Cornucopia
342
356
  end
343
357
  end
344
358
 
359
+ def rebuild_report_holder_page
360
+ initialize_report_files
361
+
362
+ report_folder = report_folder_name
363
+
364
+ FileUtils.mkdir_p report_folder_name
365
+ FileUtils.rm_rf report_base_page_name
366
+
367
+ report_holder_body = FileAsset.asset("report_holder.html").body
368
+ FileAsset.asset("report.js").add_file(File.join(report_folder, "report.js"))
369
+ FileAsset.asset("cornucopia.css").add_file(File.join(report_folder, "cornucopia.css"))
370
+
371
+ File.open(File.join(report_folder, "index.html"), "w+") do |write_file|
372
+ write_file << report_holder_body % { report_list: @report_body, report_title: @report_title }
373
+ end
374
+ end
375
+
345
376
  def report_base_page_name
346
377
  File.join(report_folder_name, "index.html")
347
378
  end
@@ -350,6 +381,14 @@ module Cornucopia
350
381
  File.join(report_folder_name, "report_contents.html")
351
382
  end
352
383
 
384
+ def report_test_base_page_name
385
+ File.join(report_test_folder_name, "index.html")
386
+ end
387
+
388
+ def report_test_contents_page_name
389
+ File.join(report_test_folder_name, "report_contents.html")
390
+ end
391
+
353
392
  def index_base_page_name
354
393
  File.join(index_folder_name, "index.html")
355
394
  end
@@ -358,12 +397,28 @@ module Cornucopia
358
397
  File.join(index_folder_name, "report_contents.html")
359
398
  end
360
399
 
361
- def initialize_report_files()
400
+ def initialize_report_files
401
+ support_folder_name = report_folder_name
402
+
403
+ FileUtils.mkdir_p @report_folder_name
404
+
405
+ unless File.exists?(report_base_page_name)
406
+ # use a different base index file.
407
+ FileAsset.asset("report_holder.html").add_file(File.join(support_folder_name, "index.html"))
408
+ rebuild_index_page
409
+ end
410
+
411
+ FileAsset.asset("report.js").add_file(File.join(support_folder_name, "report.js"))
412
+ FileAsset.asset("cornucopia.css").add_file(File.join(support_folder_name, "cornucopia.css"))
413
+ end
414
+
415
+ def initialize_basic_report_files
362
416
  support_folder_name = report_folder_name
363
417
 
364
418
  FileUtils.mkdir_p @report_folder_name
365
419
 
366
420
  unless File.exists?(report_base_page_name)
421
+ # use a different base index file.
367
422
  FileAsset.asset("report_base.html").add_file(File.join(support_folder_name, "index.html"))
368
423
  rebuild_index_page
369
424
  end
@@ -375,27 +430,117 @@ module Cornucopia
375
430
  FileAsset.asset("cornucopia.css").add_file(File.join(support_folder_name, "cornucopia.css"))
376
431
  end
377
432
 
433
+ def test_list_item
434
+ if @test_list_item
435
+ nil
436
+ else
437
+ folder_name = File.basename(report_test_folder_name)
438
+
439
+ @test_list_item = "<li>\n".html_safe
440
+ @test_list_item += "<a class=\"coruncopia-report-link\" href=\"#{folder_name}/index.html\" target=\"_blank\">".html_safe
441
+ @test_list_item += @test_name
442
+ @test_list_item += "</a>\n".html_safe
443
+ @test_list_item += "</li>\n".html_safe
444
+
445
+ @test_list_item
446
+ end
447
+ end
448
+
449
+ def initialize_report_test_files
450
+ @report_body += test_list_item
451
+
452
+ support_folder_name = report_test_folder_name
453
+
454
+ FileUtils.mkdir_p @report_test_folder_name
455
+
456
+ unless File.exists?(report_test_base_page_name)
457
+ FileAsset.asset("report_base.html").add_file(File.join(support_folder_name, "index.html"))
458
+ rebuild_report_holder_page
459
+ end
460
+
461
+ FileAsset.asset("report_contents.html").add_file(File.join(support_folder_name, "report_contents.html"))
462
+ FileAsset.asset("collapse.gif").add_file(File.join(support_folder_name, "collapse.gif"))
463
+ FileAsset.asset("expand.gif").add_file(File.join(support_folder_name, "expand.gif"))
464
+ FileAsset.asset("more_info.js").add_file(File.join(support_folder_name, "more_info.js"))
465
+ FileAsset.asset("cornucopia.css").add_file(File.join(support_folder_name, "cornucopia.css"))
466
+ end
467
+
378
468
  def open_report_contents_file(&block)
379
- initialize_report_files
469
+ initialize_basic_report_files
380
470
 
381
471
  File.open(report_contents_page_name, "a:UTF-8", &block)
382
472
  end
383
473
 
474
+ def open_report_test_contents_file(&block)
475
+ initialize_report_test_files
476
+
477
+ File.open(report_test_contents_page_name, "a:UTF-8", &block)
478
+ end
479
+
480
+ def within_test(test_name, &block)
481
+ orig_test_name = @test_name
482
+ orig_test_folder = @report_test_folder_name
483
+ orig_test_list_item = @test_list_item
484
+ orig_section_number = @section_number
485
+
486
+ begin
487
+ @test_name = test_name
488
+ @report_test_folder_name = nil
489
+ @test_list_item = nil
490
+ @section_number = 0
491
+
492
+ block.yield
493
+ ensure
494
+ @section_number = orig_section_number
495
+ @test_name = orig_test_name
496
+ @report_test_folder_name = orig_test_folder
497
+ @test_list_item = orig_test_list_item
498
+ end
499
+ end
500
+
384
501
  def within_section(section_text, &block)
385
502
  begin
386
- open_report_contents_file do |write_file|
387
- write_file.write "<div class=\"cornucopia-section\">\n"
503
+ open_report_test_contents_file do |write_file|
504
+ write_file.write "<div class=\"cornucopia-section #{((@section_number += 1) % 2) == 1 ? "cornucopia-even" : "cornucopia-odd"}\">\n"
388
505
  write_file.write "<p class=\"cornucopia-section-label\">#{Cornucopia::Util::ReportBuilder.escape_string(section_text)}</p>\n".
389
506
  force_encoding("UTF-8")
390
507
  end
391
508
  block.yield self
392
509
  ensure
393
- open_report_contents_file do |write_file|
510
+ open_report_test_contents_file do |write_file|
394
511
  write_file.write "</div>\n"
512
+ write_file.write "<div class=\"cornucopia-end-section\" />\n"
395
513
  end
396
514
  end
397
515
  end
398
516
 
517
+ def within_hidden_table(options={}, &block)
518
+ table_pre = "<div class=\"cornucopia-show-hide-section\">\n"
519
+ table_pre << " <div class=\"cornucopia-table\">\n"
520
+ table_pre << " <div class=\"cornucopia-row\">\n"
521
+ table_pre << " <div class=\"cornucopia-cell-data\">\n"
522
+ table_pre << " <a class =\"cornucopia-additional-details\" href=\"#\">More Details...</a>\n"
523
+ table_pre << " </div>\n"
524
+ table_pre << " </div>\n"
525
+ table_pre << " </div>\n"
526
+ table_pre << " <div class=\"cornucopia-additional-details hidden\">\n"
527
+ table_pre = table_pre.html_safe
528
+
529
+ table_post = " </div>\n"
530
+ table_post << "</div>\n"
531
+ table_post = table_post.html_safe
532
+
533
+ within_table(table_prefix: table_pre,
534
+ table_postfix: table_post,
535
+ report_table: nil,
536
+ nested_table: options.delete(:nested_table),
537
+ nested_table_label: options.delete(:nested_table_label),
538
+ not_a_table: table_pre,
539
+ suppress_blank_table: table_pre) do |outer_report_table|
540
+ block.yield outer_report_table
541
+ end
542
+ end
543
+
399
544
  def within_table(options = {}, &block)
400
545
  report_table = nil
401
546
  options_report_table = options[:report_table]
@@ -407,7 +552,7 @@ module Cornucopia
407
552
  end
408
553
  ensure
409
554
  if report_table && !options_report_table
410
- open_report_contents_file do |write_file|
555
+ open_report_test_contents_file do |write_file|
411
556
  write_file.write report_table.full_table.force_encoding("UTF-8")
412
557
  end
413
558
  end