cornucopia 0.1.29 → 0.1.30

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: f4b9cd383c66fb96a9a01c794f4882c17e785f3c
4
- data.tar.gz: 38d26bbb2ad13ca5ad5510a1c023ab7a1e2bc105
3
+ metadata.gz: d1a6bac03caafb4e19e69fd39ae9b1cae0b1f986
4
+ data.tar.gz: a3fea23935ebb26c03735bf3decc99fb78c3041b
5
5
  SHA512:
6
- metadata.gz: ff69a9aa485efcce6e34e27db89c876f7c655bb5650bcdfc27e491826e4013423a58d0cf941530bd3dd280c80aa78d45cb0ac59af548179a7dbd6033f38b77eb
7
- data.tar.gz: 7ada6b42d73b1dfaf8ad2fb5cec8289018c7011e84a3610d2de3fddb6029efd54aab9567d30ccac914940c03ac64e26368a64394c33d79eaffcad85020dc809e
6
+ metadata.gz: 1d4902517687e1cb43d80da0ab8438fea4771b1472f2d5c1e1099fde45ba7da473f58f996d9c17638131114964f6a8869d47f9f303293c1360aaf38aabcdbb69
7
+ data.tar.gz: fd5da08ffc48b432f845c717b6d5cc69896332c87c9bc2ec08c6c2c1c6c71b68d9d3223021969988de6904d6ddf2aaa400ebf2ae6b009b0470a55b0ac8719558
data/README.md CHANGED
@@ -375,6 +375,22 @@ The configuration class contains the various configurations that are used by the
375
375
  you do not specify a type of report the value you specify will be the default value used for any report that is
376
376
  generated.
377
377
 
378
+ * **record_test_start_and_end_in_log**
379
+
380
+ When true, this causes Cornucopia to output a line in the log file indicating the start and end of a test.
381
+
382
+ The default value is true.
383
+
384
+ * **record_test_start_and_end_format**
385
+
386
+ This parameter specifies the format of the message that is recorded in the log file. You can use the following
387
+ variables in the format string to get the appropriate values:
388
+
389
+ * `%{start_end}` - This will be the words "Start" or "End"
390
+ * `%{test_name}` - This will be the name of the test.
391
+
392
+ The default value is "******** %{start_end}: %{test_name}".
393
+
378
394
  * And more...
379
395
 
380
396
  There are more configurations. They are commented in the configuraiton.rb file. If I didn't include them here,
@@ -7,6 +7,7 @@ require "cornucopia/util/log_capture"
7
7
  require "cornucopia/util/pretty_formatter"
8
8
  require "cornucopia/util/report_table"
9
9
  require "cornucopia/util/report_builder"
10
+ require "cornucopia/util/test_helper"
10
11
  require "cornucopia/capybara/finder_diagnostics"
11
12
  require "cornucopia/capybara/page_diagnostics"
12
13
  require "cornucopia/capybara/finder_extensions"
@@ -335,9 +335,16 @@ module Cornucopia
335
335
  from_element = @test_object
336
336
  end
337
337
 
338
- @all_elements = from_element.all(*search_args, visible: false, __cornucopia_no_analysis: true).
339
- to_a.map do |element|
340
- FoundElement.new(element)
338
+ begin
339
+ @all_elements = from_element.all(*search_args, visible: false, __cornucopia_no_analysis: true).to_a
340
+ rescue
341
+ @all_elements = []
342
+ end
343
+
344
+ if @all_elements
345
+ @all_elements = @all_elements.map do |element|
346
+ FoundElement.new(element)
347
+ end.compact
341
348
  end
342
349
  end
343
350
 
@@ -348,13 +355,20 @@ module Cornucopia
348
355
  unless @all_other_elements
349
356
  from_element = ::Capybara::current_session
350
357
 
351
- @all_other_elements = from_element.all(*search_args, visible: false, __cornucopia_no_analysis: true).
352
- to_a.map do |element|
353
- FoundElement.new(element) unless all_elements.include?(element)
358
+ begin
359
+ @all_other_elements = from_element.all(*search_args, visible: false, __cornucopia_no_analysis: true).to_a
360
+ rescue
361
+ @all_other_elements = []
354
362
  end
355
363
 
356
- @all_other_elements = @all_other_elements - @all_elements
357
- @all_other_elements.compact!
364
+ if @all_other_elements
365
+ @all_other_elements = @all_other_elements.map do |element|
366
+ FoundElement.new(element) unless all_elements.include?(element)
367
+ end
368
+
369
+ @all_other_elements = @all_other_elements - @all_elements
370
+ @all_other_elements.compact!
371
+ end
358
372
  end
359
373
 
360
374
  @all_other_elements
@@ -5,18 +5,16 @@ load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname
5
5
  if Cucumber::VERSION.split[0].to_i >= 2
6
6
  After do |scenario, block|
7
7
  if scenario.failed?
8
- report_name = "Page Dump for: Unknown"
9
- if scenario.respond_to?(:feature)
10
- report_name = "Page Dump for: #{scenario.feature.title}:#{scenario.title}"
11
- else
12
- report_name = "Page Dump for: Line - #{scenario.line}"
13
- end
8
+ report_name = "Page Dump for: #{Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)}"
14
9
 
15
10
  Cornucopia::Capybara::PageDiagnostics.dump_details(section_label: report_name)
16
11
  end
17
12
  end
18
13
 
19
14
  Around do |scenario, block|
15
+ test_name = Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)
16
+ Cornucopia::Util::TestHelper.instance.record_test_start(test_name)
17
+
20
18
  seed_value = Cornucopia::Util::Configuration.seed ||
21
19
  100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
22
20
 
@@ -25,15 +23,7 @@ if Cucumber::VERSION.split[0].to_i >= 2
25
23
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
26
24
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
27
25
 
28
- test_name = ""
29
- if scenario.respond_to?(:feature)
30
- test_name = "#{scenario.feature.title} : #{scenario.title}"
31
- elsif scenario.respond_to?(:line)
32
- test_name = "Scenario - Line: #{scenario.line}"
33
- else
34
- test_name = "Scenario - Unknown"
35
- end
36
- Cornucopia::Util::ReportBuilder.current_report.within_test(test_name) do
26
+ Cornucopia::Util::ReportBuilder.current_report.within_test("Scenario - #{test_name}") do
37
27
  block.call
38
28
  end
39
29
 
@@ -41,13 +31,7 @@ if Cucumber::VERSION.split[0].to_i >= 2
41
31
  seed_value = scenario.instance_variable_get(:@seed_value)
42
32
  puts ("random seed for testing was: #{seed_value}")
43
33
 
44
- report_name = ""
45
- if scenario.respond_to?(:feature)
46
- report_name = "Test Error: #{scenario.feature.title}:#{scenario.title}"
47
- else
48
- report_name = "Line - #{scenario.line}"
49
- end
50
- Cornucopia::Util::ReportBuilder.current_report.within_section(report_name) do |report|
34
+ Cornucopia::Util::ReportBuilder.current_report.within_section("Test Error: #{test_name}") do |report|
51
35
  configured_report = nil
52
36
  if scenario.respond_to?(:feature)
53
37
  configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
@@ -64,9 +48,14 @@ if Cucumber::VERSION.split[0].to_i >= 2
64
48
 
65
49
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
66
50
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
51
+
52
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
67
53
  end
68
54
  else
69
55
  Before do |scenario, block|
56
+ test_name = Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)
57
+ Cornucopia::Util::TestHelper.instance.record_test_start(test_name)
58
+
70
59
  seed_value = Cornucopia::Util::Configuration.seed ||
71
60
  100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
72
61
 
@@ -75,29 +64,17 @@ else
75
64
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
76
65
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
77
66
 
78
- test_name = ""
79
- if scenario.respond_to?(:feature)
80
- test_name = "#{scenario.feature.title} : #{scenario.title}"
81
- elsif scenario.respond_to?(:line)
82
- test_name = "Scenario - Line: #{scenario.line}"
83
- else
84
- test_name = "Scenario - Unknown"
85
- end
86
- Cornucopia::Util::ReportBuilder.current_report.start_test(scenario, test_name)
67
+ Cornucopia::Util::ReportBuilder.current_report.start_test(scenario, "Scenario - #{test_name}")
87
68
  end
88
69
 
89
70
  After do |scenario, block|
71
+ test_name = Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)
72
+
90
73
  if scenario.failed?
91
74
  seed_value = scenario.instance_variable_get(:@seed_value)
92
75
  puts ("random seed for testing was: #{seed_value}")
93
76
 
94
- report_name = ""
95
- if scenario.respond_to?(:feature)
96
- report_name = "Test Error: #{scenario.feature.title}:#{scenario.title}"
97
- else
98
- report_name = "Line - #{scenario.line}"
99
- end
100
- Cornucopia::Util::ReportBuilder.current_report.within_section(report_name) do |report|
77
+ Cornucopia::Util::ReportBuilder.current_report.within_section("Test Error: #{test_name}") do |report|
101
78
  configured_report = nil
102
79
  if scenario.respond_to?(:feature)
103
80
  configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
@@ -116,6 +93,8 @@ else
116
93
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
117
94
 
118
95
  Cornucopia::Util::ReportBuilder.current_report.end_test(scenario)
96
+
97
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
119
98
  end
120
99
  end
121
100
 
@@ -34,6 +34,12 @@ RSpec.configure do |config|
34
34
  end
35
35
 
36
36
  config.around(:each) do |example|
37
+ test_example = example.example if example.respond_to?(:example)
38
+ test_example ||= self.example if self.respond_to?(:example)
39
+ test_example ||= example
40
+
41
+ Cornucopia::Util::TestHelper.instance.record_test_start(test_example.full_description)
42
+
37
43
  @seed_value = Cornucopia::Util::Configuration.seed ||
38
44
  100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
39
45
 
@@ -42,10 +48,6 @@ RSpec.configure do |config|
42
48
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
43
49
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
44
50
 
45
- test_example = example.example if example.respond_to?(:example)
46
- test_example ||= self.example if self.respond_to?(:example)
47
- test_example ||= example
48
-
49
51
  Cornucopia::Util::ReportBuilder.current_report.within_test(test_example.full_description) do
50
52
  example.run
51
53
 
@@ -66,5 +68,7 @@ RSpec.configure do |config|
66
68
 
67
69
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
68
70
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
71
+
72
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_example.full_description)
69
73
  end
70
74
  end
@@ -3,35 +3,36 @@ load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__
3
3
  load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
4
4
 
5
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
-
11
- Spinach.hooks.around_scenario do |scenario_data, step_definitions, &block|
12
- @reported_error = false
13
- @running_scenario = scenario_data
14
- seed_value = Cornucopia::Util::Configuration.seed ||
15
- 100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
6
+ test_name = Cornucopia::Util::TestHelper.spinach_name(scenario_data)
7
+ Cornucopia::Util::TestHelper.instance.record_test_start(test_name)
16
8
 
17
- scenario_data.instance_variable_set :@seed_value, seed_value
9
+ Cornucopia::Util::ReportBuilder.current_report.within_test(test_name) do
10
+ Cornucopia::Util::TestHelper.instance.spinach_reported_error = false
11
+ Cornucopia::Util::TestHelper.instance.spinach_running_scenario = scenario_data
12
+ seed_value = Cornucopia::Util::Configuration.seed ||
13
+ 100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
18
14
 
19
- Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
20
- Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
21
-
22
- begin
23
- block.call
24
- ensure
25
- @running_scenario = nil
15
+ scenario_data.instance_variable_set :@seed_value, seed_value
26
16
 
27
17
  Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
28
18
  Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
29
19
 
30
- unless @reported_error
31
- Cornucopia::Util::ReportBuilder.current_report.test_succeeded
20
+ begin
21
+ block.call
22
+ ensure
23
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
24
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
25
+
26
+ unless Cornucopia::Util::TestHelper.instance.spinach_reported_error
27
+ Cornucopia::Util::ReportBuilder.current_report.test_succeeded
28
+ end
29
+
30
+ Cornucopia::Util::TestHelper.instance.spinach_running_scenario = nil
31
+ Cornucopia::Util::TestHelper.instance.spinach_reported_error = false
32
32
  end
33
- @reported_error = false
34
33
  end
34
+
35
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
35
36
  end
36
37
 
37
38
  Spinach.hooks.on_failed_step do |step_data, exception, location, step_definitions|
@@ -43,17 +44,17 @@ Spinach.hooks.on_error_step do |step_data, exception, location, step_definitions
43
44
  end
44
45
 
45
46
  def debug_failed_step(failure_description, step_data, exception, location, step_definitions)
46
- @reported_error = true
47
+ Cornucopia::Util::TestHelper.instance.spinach_reported_error = true
47
48
 
48
- seed_value = @running_scenario.instance_variable_get(:@seed_value)
49
+ seed_value = Cornucopia::Util::TestHelper.instance.spinach_running_scenario.instance_variable_get(:@seed_value)
49
50
  puts ("random seed for testing was: #{seed_value}")
50
51
 
51
52
  Cornucopia::Util::ReportBuilder.current_report.
52
- within_section("Test Error: #{@running_scenario.feature.name}") do |report|
53
+ within_section("Test Error: #{Cornucopia::Util::TestHelper.instance.spinach_running_scenario.feature.name}") do |report|
53
54
  configured_report = Cornucopia::Util::Configuration.report_configuration :spinach
54
55
 
55
56
  configured_report.add_report_objects failure_description: "#{failure_description} at:, #{location[0]}:#{location[1]}",
56
- running_scenario: @running_scenario,
57
+ running_scenario: Cornucopia::Util::TestHelper.instance.spinach_running_scenario,
57
58
  step_data: step_data,
58
59
  exception: exception,
59
60
  location: location,
@@ -13,27 +13,29 @@ module Cornucopia
13
13
  def initialize
14
14
  @configurations = Cornucopia::Util::GenericSettings.new
15
15
 
16
- configurations.order_seed = nil
17
- configurations.rand_seed = nil
18
- configurations.rand_context_seed = nil
19
- configurations.user_log_files = {}
20
- configurations.default_num_lines = 500
21
- configurations.grab_logs = true
22
- configurations.backup_logs_on_failure = true
23
- configurations.print_timeout_min = 10
24
- configurations.selenium_cache_retry_count = 5
25
- configurations.analyze_find_exceptions = true
26
- configurations.analyze_selector_exceptions = true
27
- configurations.ignore_finder_errors_on_success = true
28
- configurations.ignore_has_selector_errors = true
29
- configurations.retry_with_found = false
30
- configurations.retry_match_with_found = false
31
- configurations.open_report_settings = { default: false }
32
- configurations.base_folder = "cornucopia_report"
16
+ configurations.order_seed = nil
17
+ configurations.rand_seed = nil
18
+ configurations.rand_context_seed = nil
19
+ configurations.user_log_files = {}
20
+ configurations.default_num_lines = 500
21
+ configurations.grab_logs = true
22
+ configurations.backup_logs_on_failure = true
23
+ configurations.print_timeout_min = 10
24
+ configurations.selenium_cache_retry_count = 5
25
+ configurations.analyze_find_exceptions = true
26
+ configurations.analyze_selector_exceptions = true
27
+ configurations.ignore_finder_errors_on_success = true
28
+ configurations.ignore_has_selector_errors = true
29
+ configurations.record_test_start_and_end_in_log = true
30
+ configurations.record_test_start_and_end_format = "******** %{start_end}: %{test_name}"
31
+ configurations.retry_with_found = false
32
+ configurations.retry_match_with_found = false
33
+ configurations.open_report_settings = { default: false }
34
+ configurations.base_folder = "cornucopia_report"
33
35
 
34
36
  # configurations.alternate_retry = false
35
37
 
36
- configurations.default_configuration = {
38
+ configurations.default_configuration = {
37
39
  rspec: {
38
40
  min_fields: [
39
41
  :example__full_description,
@@ -681,6 +683,33 @@ module Cornucopia
681
683
  def base_folder=(value)
682
684
  Cornucopia::Util::Configuration.instance.configurations.base_folder = value
683
685
  end
686
+
687
+ # This setting is used by the test system hooks.
688
+ #
689
+ # If true (the default) this will cause the system to output a line to the Rails log indicating when a test
690
+ # starts and when it ends.
691
+ def record_test_start_and_end_in_log
692
+ Cornucopia::Util::Configuration.instance.configurations.record_test_start_and_end_in_log
693
+ end
694
+
695
+ def record_test_start_and_end_in_log=(value)
696
+ Cornucopia::Util::Configuration.instance.configurations.record_test_start_and_end_in_log = value
697
+ end
698
+
699
+ # This setting is used by the test system hooks.
700
+ #
701
+ # This value specifies the text that is output into the log file at the start/end of a test.
702
+ # Two variables are passed into the format string to be inserted into the text:
703
+ #
704
+ # * %{start_end} - This will be either "Start" or "End"
705
+ # * %{test_name} - This will the the name of the test.
706
+ def record_test_start_and_end_format
707
+ Cornucopia::Util::Configuration.instance.configurations.record_test_start_and_end_format
708
+ end
709
+
710
+ def record_test_start_and_end_format=(value)
711
+ Cornucopia::Util::Configuration.instance.configurations.record_test_start_and_end_format = value
712
+ end
684
713
  end
685
714
  end
686
715
  end
@@ -0,0 +1,51 @@
1
+ require "singleton"
2
+
3
+ module Cornucopia
4
+ module Util
5
+ class TestHelper
6
+ include Singleton
7
+
8
+ attr_accessor :spinach_reported_error, :spinach_running_scenario
9
+
10
+ def cucumber_name(scenario)
11
+ report_name = "Unknown"
12
+ if scenario.respond_to?(:feature)
13
+ report_name = "#{scenario.feature.title}:#{scenario.title}"
14
+ elsif scenario.respond_to?(:line)
15
+ report_name = "Line - #{scenario.line}"
16
+ end
17
+
18
+ report_name
19
+ end
20
+
21
+ def spinach_name(scenario_data)
22
+ "#{scenario_data.feature.name} : #{scenario_data.name}"
23
+ end
24
+
25
+ def rspec_name(example)
26
+ example.full_description
27
+ end
28
+
29
+ def record_test_start(test_name)
30
+ record_test("Start", test_name)
31
+ end
32
+
33
+ def record_test_end(test_name)
34
+ record_test("End", test_name)
35
+ end
36
+
37
+ def test_message(start_end, test_name)
38
+ Cornucopia::Util::Configuration.record_test_start_and_end_format % {
39
+ start_end: start_end,
40
+ test_name: test_name
41
+ }
42
+ end
43
+
44
+ def record_test(start_end, test_name)
45
+ if Cornucopia::Util::Configuration.record_test_start_and_end_in_log
46
+ Rails.logger.error(test_message(start_end, test_name))
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.29"
2
+ VERSION = "0.1.30"
3
3
  end
@@ -79,7 +79,7 @@
79
79
  </div>
80
80
 
81
81
  <a class="a-class b-class c-class" id="hidden-cool-link" href="#" onclick="alert('cool!');">Cool alert!</a>
82
- <input class="a-class b-class c-class" id="hidden-cool-button" type="button" value="Still cool!" onclick="alert('still cool!');" />
82
+ <input class="a-class b-class c-class" id="hidden-cool-button" type="button" value="Still cool!" aria-meta-data='This is some meta-data; function("call");' onclick="alert('still cool!');" />
83
83
  <label>text box</label><input id="hidden-text-box" type="text" />
84
84
 
85
85
  <div class="radio-container">
@@ -118,7 +118,7 @@
118
118
  </div>
119
119
 
120
120
  <a id="cool-link" href="#" onclick="alert('cool!');">Cool alert!</a>
121
- <input id="cool-button" type="button" value="Still cool!" onclick="alert('still cool!');" />
121
+ <input id="cool-button" type="button" value="Still cool!" onclick="alert('still cool!');" aria-meta-data='This is some meta-data; function("call");' />
122
122
  <label>text box</label><input id="text-box" type="text" />
123
123
 
124
124
  <div class="radio-container">
@@ -307,6 +307,36 @@ describe Cornucopia::Capybara::FinderDiagnostics, type: :feature do
307
307
  ::Capybara.current_session.visit("/sample_report/sample_file.html")
308
308
  end
309
309
 
310
+ it "creates a report even with an invalid finder" do
311
+ expect { ::Capybara.current_session.find(:css, "a:invalid('finder')") }.
312
+ to raise_exception(Selenium::WebDriver::Error::InvalidSelectorError)
313
+
314
+ report_page = CornucopiaReportApp.cornucopia_report_holder_page
315
+ report_page.load(report_name: "cornucopia_report", base_folder: "cornucopia_report")
316
+
317
+ expect(report_page.tests.length).to be >= 1
318
+ report_page.tests[0].click
319
+ report_page.displayed_test do |test_page|
320
+ test_page.contents do |contents_frame|
321
+ expect(contents_frame.errors.length).to be == 1
322
+ contents_frame.errors[0].more_details.show_hide.click
323
+ expect(contents_frame.errors[0].more_details.details.rows.length).to eq 13
324
+ expect(contents_frame.errors[0].more_details.details.row(0).labels[0].text).to eq "name"
325
+ expect(contents_frame.errors[0].more_details.details.row(1).labels[0].text).to eq "args"
326
+ expect(contents_frame.errors[0].more_details.details.row(2).labels[0].text).to eq "guessed_types"
327
+ expect(contents_frame.errors[0].more_details.details.row(3).labels[0].text).to eq "support_options"
328
+ expect(contents_frame.errors[0].more_details.details.row(4).labels[0].text).to eq "page_url"
329
+ expect(contents_frame.errors[0].more_details.details.row(5).labels[0].text).to eq "title"
330
+ expect(contents_frame.errors[0].more_details.details.row(6).labels[0].text).to eq "screen_shot"
331
+ expect(contents_frame.errors[0].more_details.details.row(7).labels[0].text).to eq "html_file"
332
+ expect(contents_frame.errors[0].more_details.details.row(8).labels[0].text).to eq "html_frame"
333
+ expect(contents_frame.errors[0].more_details.details.row(9).labels[0].text).to eq "html_source"
334
+ expect(contents_frame.errors[0].more_details.details.row(10).labels[0].text).to eq "page_height"
335
+ expect(contents_frame.errors[0].more_details.details.row(11).labels[0].text).to eq "page_width"
336
+ end
337
+ end
338
+ end
339
+
310
340
  it "finds hidden elements during analysis" do
311
341
  base_object = ::Capybara.current_session.find(:css, "#hidden-div", visible: false)
312
342
  expect { base_object.find("input[type=button]") }.to raise_error(Capybara::ElementNotFound)
@@ -335,13 +365,14 @@ describe Cornucopia::Capybara::FinderDiagnostics, type: :feature do
335
365
  expect(hidden_row_specs[8].labels[0].text).to be == "elem_value"
336
366
  expect(hidden_row_specs[9].labels[0].text).to be == "elem_visible"
337
367
  expect(hidden_row_specs[9].values[0].text).to be == "false"
338
- expect(hidden_row_specs[10].labels[0].text).to be == "native_class"
339
- expect(hidden_row_specs[11].labels[0].text).to be == "native_onclick"
340
- expect(hidden_row_specs[12].labels[0].text).to be == "native_size"
341
- expect(hidden_row_specs[13].labels[0].text).to be == "width"
342
- expect(hidden_row_specs[14].labels[0].text).to be == "height"
343
- expect(hidden_row_specs[15].labels[0].text).to be == "native_type"
344
- expect(hidden_row_specs[15].values[0].text).to be == "button"
368
+ expect(hidden_row_specs[10].labels[0].text).to be == "native_aria_meta_data"
369
+ expect(hidden_row_specs[11].labels[0].text).to be == "native_class"
370
+ expect(hidden_row_specs[12].labels[0].text).to be == "native_onclick"
371
+ expect(hidden_row_specs[13].labels[0].text).to be == "native_size"
372
+ expect(hidden_row_specs[14].labels[0].text).to be == "width"
373
+ expect(hidden_row_specs[15].labels[0].text).to be == "height"
374
+ expect(hidden_row_specs[16].labels[0].text).to be == "native_type"
375
+ expect(hidden_row_specs[16].values[0].text).to be == "button"
345
376
  end
346
377
  end
347
378
  end
@@ -551,7 +582,6 @@ describe Cornucopia::Capybara::FinderDiagnostics, type: :feature do
551
582
  end
552
583
 
553
584
  it "works with assert_no_selector" do
554
- # 621023375412314903581404663773388410917
555
585
  begin
556
586
  Cornucopia::Util::Configuration.retry_match_with_found = true
557
587
 
@@ -457,6 +457,44 @@ describe "Cornucopia::Util::Configuration" do
457
457
  end
458
458
  end
459
459
 
460
+ describe "#record_test_start_and_end_in_log" do
461
+ it "has a default value" do
462
+ expect(Cornucopia::Util::Configuration.record_test_start_and_end_in_log).to be_truthy
463
+ end
464
+
465
+ it "can set the value" do
466
+ begin
467
+ new_value = false
468
+
469
+ Cornucopia::Util::Configuration.record_test_start_and_end_in_log = new_value
470
+
471
+ expect(Cornucopia::Util::Configuration.record_test_start_and_end_in_log).to be_falsey
472
+ ensure
473
+ Cornucopia::Util::Configuration.record_test_start_and_end_in_log = true
474
+ end
475
+ end
476
+ end
477
+
478
+ describe "#record_test_start_and_end_format" do
479
+ it "has a default value" do
480
+ expect(Cornucopia::Util::Configuration.record_test_start_and_end_format).to eq "******** %{start_end}: %{test_name}"
481
+ end
482
+
483
+ it "can set the value" do
484
+ orig_value = Cornucopia::Util::Configuration.record_test_start_and_end_format
485
+
486
+ begin
487
+ new_value = Faker::Lorem.sentence
488
+
489
+ Cornucopia::Util::Configuration.record_test_start_and_end_format = new_value
490
+
491
+ expect(Cornucopia::Util::Configuration.record_test_start_and_end_format).to eq new_value
492
+ ensure
493
+ Cornucopia::Util::Configuration.record_test_start_and_end_format = orig_value
494
+ end
495
+ end
496
+ end
497
+
460
498
  # describe "#alternate_retry" do
461
499
  # it "#can read the default" do
462
500
  # expect(Cornucopia::Util::Configuration.alternate_retry).to be_falsy
@@ -0,0 +1,166 @@
1
+ require "rails_helper"
2
+
3
+ class FakeFeature
4
+ attr_accessor :feature_name
5
+
6
+ def initialize(feature_name)
7
+ @feature_name = feature_name
8
+ end
9
+
10
+ def name
11
+ feature_name
12
+ end
13
+
14
+ def title
15
+ feature_name
16
+ end
17
+ end
18
+
19
+ class OtherFakeScenario
20
+ attr_accessor :scenario_title
21
+ attr_accessor :line_number
22
+
23
+ def initialize(line_number, scenario_title)
24
+ @line_number = line_number
25
+ @scenario_title = scenario_title
26
+ end
27
+
28
+ def line
29
+ line_number
30
+ end
31
+ end
32
+
33
+ class FakeScenario
34
+ attr_accessor :scenario_title
35
+ attr_accessor :feature
36
+
37
+ def initialize(feature_name, scenario_title)
38
+ @feature = FakeFeature.new(feature_name)
39
+ @scenario_title = scenario_title
40
+ end
41
+
42
+ def full_description
43
+ scenario_title
44
+ end
45
+
46
+ def name
47
+ scenario_title
48
+ end
49
+
50
+ def title
51
+ scenario_title
52
+ end
53
+ end
54
+
55
+ RSpec.describe Cornucopia::Util::TestHelper do
56
+ let(:test_name) { Faker::Lorem.sentence }
57
+
58
+ describe "#cucumber_name" do
59
+ it "uses the name Unknown if the name cannot be determined" do
60
+ expect(Cornucopia::Util::TestHelper.instance.cucumber_name("fred")).to eq "Unknown"
61
+ end
62
+
63
+ it "uses the feature title and scenario title if known" do
64
+ feature_name = Faker::Lorem.sentence
65
+ scenario_name = Faker::Lorem.sentence
66
+ scenario = FakeScenario.new(feature_name, scenario_name)
67
+
68
+ expect(Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)).to eq "#{feature_name}:#{scenario_name}"
69
+ end
70
+
71
+ it "uses the line number if the feature name is not known" do
72
+ line_num = rand(0..5_000_000_000_000)
73
+ scenario_name = Faker::Lorem.sentence
74
+ scenario = OtherFakeScenario.new(line_num, scenario_name)
75
+
76
+ expect(Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)).to eq "Line - #{line_num}"
77
+ end
78
+ end
79
+
80
+ describe "#spinach_name" do
81
+ it "uses the feature name and the scenario title" do
82
+ feature_name = Faker::Lorem.sentence
83
+ scenario_name = Faker::Lorem.sentence
84
+ scenario = FakeScenario.new(feature_name, scenario_name)
85
+
86
+ expect(Cornucopia::Util::TestHelper.instance.spinach_name(scenario)).to eq "#{feature_name} : #{scenario_name}"
87
+ end
88
+ end
89
+
90
+ describe "#example_name" do
91
+ it "uses the full_description" do
92
+ feature_name = Faker::Lorem.sentence
93
+ scenario_name = Faker::Lorem.sentence
94
+ scenario = FakeScenario.new(feature_name, scenario_name)
95
+
96
+ expect(Cornucopia::Util::TestHelper.instance.rspec_name(scenario)).to eq scenario_name
97
+ end
98
+ end
99
+
100
+ describe "#record_test_start" do
101
+ it "calls record_test with 'Start'" do
102
+ test_name = Faker::Lorem.sentence
103
+ expect(Cornucopia::Util::TestHelper.instance).to receive(:record_test).with("Start", test_name)
104
+
105
+ Cornucopia::Util::TestHelper.instance.record_test_start(test_name)
106
+ end
107
+ end
108
+
109
+ describe "#record_test_end" do
110
+ it "calls record_test with 'End'" do
111
+ expect(Cornucopia::Util::TestHelper.instance).to receive(:record_test).with("End", test_name)
112
+
113
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
114
+ end
115
+ end
116
+
117
+ describe "#record_test" do
118
+ around(:each) do |example|
119
+ orig_record_test_start_and_end_in_log = Cornucopia::Util::Configuration.record_test_start_and_end_in_log
120
+ orig_record_test_start_and_end_format = Cornucopia::Util::Configuration.record_test_start_and_end_format
121
+
122
+ begin
123
+ example.run
124
+ ensure
125
+ Cornucopia::Util::Configuration.record_test_start_and_end_in_log = orig_record_test_start_and_end_in_log
126
+ Cornucopia::Util::Configuration.record_test_start_and_end_format = orig_record_test_start_and_end_format
127
+ end
128
+ end
129
+
130
+ context "record_test_start_and_end_in_log is false" do
131
+ before(:each) do
132
+ Cornucopia::Util::Configuration.record_test_start_and_end_in_log = false
133
+ end
134
+
135
+ it "does not log anything" do
136
+ allow(Rails.logger).to receive(:error).and_call_original
137
+ expect(Rails.logger).not_to receive(:error).with("******** Start: #{test_name}", )
138
+
139
+ Cornucopia::Util::TestHelper.instance.record_test("Start", test_name)
140
+ end
141
+ end
142
+
143
+ context "record_test_start_and_end_in_log is true" do
144
+ before(:each) do
145
+ Cornucopia::Util::Configuration.record_test_start_and_end_in_log = true
146
+ end
147
+
148
+ it "records a log message" do
149
+ allow(Rails.logger).to receive(:error).and_call_original
150
+ expect(Rails.logger).to receive(:error).with("******** Start: #{test_name}",)
151
+
152
+ Cornucopia::Util::TestHelper.instance.record_test("Start", test_name)
153
+ end
154
+
155
+ it "uses a custom format" do
156
+ some_text = Faker::Lorem.sentence
157
+
158
+ Cornucopia::Util::Configuration.record_test_start_and_end_format = "%{start_end} #{some_text} %{test_name}"
159
+ allow(Rails.logger).to receive(:error).and_call_original
160
+ expect(Rails.logger).to receive(:error).with("Start #{some_text} #{test_name}",)
161
+
162
+ Cornucopia::Util::TestHelper.instance.record_test("Start", test_name)
163
+ end
164
+ end
165
+ end
166
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cornucopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealNobody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-12 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -254,6 +254,7 @@ files:
254
254
  - lib/cornucopia/util/report_builder.rb
255
255
  - lib/cornucopia/util/report_formatters.rb
256
256
  - lib/cornucopia/util/report_table.rb
257
+ - lib/cornucopia/util/test_helper.rb
257
258
  - lib/cornucopia/version.rb
258
259
  - lib/tasks/cornucopia_tasks.rake
259
260
  - spec/dummy/README.rdoc
@@ -315,6 +316,7 @@ files:
315
316
  - spec/lib/util/report_formatters_spec.rb
316
317
  - spec/lib/util/report_table_exception_spec.rb
317
318
  - spec/lib/util/report_table_spec.rb
319
+ - spec/lib/util/test_helper_spec.rb
318
320
  - spec/pages/cornucopia_report_app.rb
319
321
  - spec/pages/google/email_page.rb
320
322
  - spec/pages/google/login_page.rb
@@ -405,6 +407,7 @@ test_files:
405
407
  - spec/lib/util/report_formatters_spec.rb
406
408
  - spec/lib/util/report_table_exception_spec.rb
407
409
  - spec/lib/util/report_table_spec.rb
410
+ - spec/lib/util/test_helper_spec.rb
408
411
  - spec/pages/cornucopia_report_app.rb
409
412
  - spec/pages/google/email_page.rb
410
413
  - spec/pages/google/login_page.rb