cornucopia 0.1.40 → 0.1.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/cornucopia.gemspec +1 -1
  4. data/lib/cornucopia.rb +7 -0
  5. data/lib/cornucopia/capybara/finder_diagnostics.rb +10 -6
  6. data/lib/cornucopia/capybara/finder_extensions.rb +24 -15
  7. data/lib/cornucopia/capybara/install_extensions.rb +44 -0
  8. data/lib/cornucopia/capybara/matcher_extensions.rb +33 -21
  9. data/lib/cornucopia/capybara/page_diagnostics.rb +44 -1
  10. data/lib/cornucopia/capybara/selectable_values.rb +47 -0
  11. data/lib/cornucopia/capybara/synchronizable.rb +24 -0
  12. data/lib/cornucopia/cucumber_hooks.rb +6 -3
  13. data/lib/cornucopia/rspec_hooks.rb +5 -4
  14. data/lib/cornucopia/site_prism/element_extensions.rb +16 -2
  15. data/lib/cornucopia/site_prism/install_extensions.rb +18 -0
  16. data/lib/cornucopia/site_prism/page_application.rb +3 -1
  17. data/lib/cornucopia/site_prism/section_extensions.rb +23 -0
  18. data/lib/cornucopia/spinach_hooks.rb +6 -3
  19. data/lib/cornucopia/util/configuration.rb +14 -6
  20. data/lib/cornucopia/util/configured_report.rb +3 -1
  21. data/lib/cornucopia/util/file_asset.rb +3 -1
  22. data/lib/cornucopia/util/generic_settings.rb +3 -1
  23. data/lib/cornucopia/util/log_capture.rb +4 -2
  24. data/lib/cornucopia/util/pretty_formatter.rb +4 -2
  25. data/lib/cornucopia/util/report_builder.rb +9 -6
  26. data/lib/cornucopia/util/report_formatters.rb +3 -1
  27. data/lib/cornucopia/util/report_table.rb +4 -2
  28. data/lib/cornucopia/util/test_helper.rb +8 -2
  29. data/lib/cornucopia/version.rb +2 -2
  30. data/spec/dummy/app/controllers/application_controller.rb +2 -0
  31. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  32. data/spec/dummy/config/application.rb +2 -0
  33. data/spec/dummy/config/boot.rb +2 -0
  34. data/spec/dummy/config/environment.rb +2 -0
  35. data/spec/dummy/config/environments/development.rb +2 -0
  36. data/spec/dummy/config/environments/production.rb +2 -0
  37. data/spec/dummy/config/environments/test.rb +2 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +2 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +2 -0
  40. data/spec/dummy/config/initializers/inflections.rb +2 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +2 -0
  42. data/spec/dummy/config/initializers/secret_token.rb +2 -0
  43. data/spec/dummy/config/initializers/session_store.rb +2 -0
  44. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -0
  45. data/spec/dummy/config/routes.rb +2 -0
  46. data/spec/dummy/db/schema.rb +2 -0
  47. data/spec/dummy/features/support/env.rb +2 -0
  48. data/spec/lib/capybara/finder_diagnostics_spec.rb +68 -58
  49. data/spec/lib/capybara/finder_extensions_spec.rb +13 -6
  50. data/spec/lib/capybara/matcher_extensions_spec.rb +2 -0
  51. data/spec/lib/capybara/page_diagnostics_spec.rb +2 -0
  52. data/spec/lib/site_prism/element_extensions_spec.rb +2 -0
  53. data/spec/lib/site_prism/page_application_spec.rb +2 -0
  54. data/spec/lib/util/configuration_spec.rb +2 -0
  55. data/spec/lib/util/configured_report_spec.rb +2 -0
  56. data/spec/lib/util/file_asset_spec.rb +2 -0
  57. data/spec/lib/util/generic_settings_spec.rb +2 -0
  58. data/spec/lib/util/log_capture_spec.rb +2 -0
  59. data/spec/lib/util/pretty_formatter_spec.rb +29 -27
  60. data/spec/lib/util/report_builder_spec.rb +5 -3
  61. data/spec/lib/util/report_formatters_spec.rb +2 -0
  62. data/spec/lib/util/report_table_exception_spec.rb +2 -0
  63. data/spec/lib/util/report_table_spec.rb +4 -2
  64. data/spec/lib/util/test_helper_spec.rb +2 -0
  65. data/spec/pages/cornucopia_report_app.rb +2 -0
  66. data/spec/pages/cornucopia_report_pages/cornucopia_report_holder_page.rb +2 -0
  67. data/spec/pages/cornucopia_report_pages/cornucopia_report_test_contents_page.rb +2 -0
  68. data/spec/pages/cornucopia_report_pages/index_page.rb +2 -0
  69. data/spec/pages/google/email_page.rb +2 -0
  70. data/spec/pages/google/login_page.rb +2 -0
  71. data/spec/rails_helper.rb +2 -0
  72. data/spec/sample_report.rb +2 -0
  73. data/spec/spec_helper.rb +2 -0
  74. metadata +11 -9
  75. data/lib/cornucopia/capybara/install_finder_extensions.rb +0 -105
  76. data/lib/cornucopia/capybara/install_matcher_extensions.rb +0 -43
  77. data/lib/cornucopia/site_prism/install_element_extensions.rb +0 -54
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cdf5e9852b45c2d624c9945619689cd4440c03a8
4
- data.tar.gz: b1c69c820ba291ea37e283e96afaef825fc4812a
3
+ metadata.gz: 6753fcbe86b5f2874825a23fa02b5d248c0aefcd
4
+ data.tar.gz: 775875061b712a821738900bb80a5c581166301e
5
5
  SHA512:
6
- metadata.gz: bc2a26d749feb4bb27c1d74127c6c4562d9a092abf1b2c7aa2e6478e4e219796e462b06d52cc92c979c4e9d53d348a8a3c7b9dad576f308f392b6c5989b1c8bb
7
- data.tar.gz: e8ad9f1b2f91c6f79383ada506378ac1bbd4910adc827a29090e3504feae9c901c6982b0b45608b3427e081c8c7d94b2f5aed76d2bc47bc0c930be6ac6387fd9
6
+ metadata.gz: bc264d044dc713fc0afa59824e1261de1f6f50ab490d82d31751fdf3343f90c0607af6d26ae190e730d7fb4793389d5b4282b7e531499b394de29cdc0852598f
7
+ data.tar.gz: 8074a81b61fc1b8a43045f21e03853d4f22bf2d25b5c627d7c5fad2ad3decb03e3494186a424c6f8ce8e55434ff515f08fc206ae319be13b628218c1c19ebbf1
data/.gitignore CHANGED
@@ -49,4 +49,5 @@ spec/dummy/sample_report/
49
49
  spec/dummy/.rspec
50
50
  test_reports/*
51
51
  .idea/
52
- **/.DS_Store
52
+ **/.DS_Store
53
+ /.ruby-version
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency "activesupport"
25
+ spec.add_dependency "activesupport", "~> 4"
26
26
 
27
27
  spec.add_development_dependency "rails"
28
28
  # spec.add_development_dependency "mysql2"
@@ -19,9 +19,16 @@ time = Benchmark.measure do
19
19
  require "cornucopia/capybara/page_diagnostics"
20
20
  require "cornucopia/capybara/finder_extensions"
21
21
  require "cornucopia/capybara/matcher_extensions"
22
+ require "cornucopia/capybara/selectable_values"
23
+ require "cornucopia/capybara/synchronizable"
22
24
  require "cornucopia/site_prism/element_extensions"
23
25
  require "cornucopia/site_prism/page_application"
26
+ require "cornucopia/site_prism/section_extensions"
27
+
28
+ require "cornucopia/capybara/install_extensions"
29
+ require "cornucopia/site_prism/install_extensions"
24
30
  end
31
+
25
32
  puts "Cornucopia load time: #{time}"
26
33
 
27
34
  module Cornucopia
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
2
4
  require ::File.expand_path("../util/report_builder", File.dirname(__FILE__))
3
5
 
@@ -26,8 +28,8 @@ module Cornucopia
26
28
  # Usage:
27
29
  # Instead of calling: <test_object>.<function> <args>
28
30
  # you would call: test_finder <test_object>, :<function>, <args>
29
- def self.test_finder(test_object, function_name, *args)
30
- Cornucopia::Capybara::FinderDiagnostics::FindAction.new(test_object, {}, {}, function_name, *args).run
31
+ def self.test_finder(test_object, function_name, *args, &block)
32
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.new(test_object, {}, {}, function_name, *args, &block).run
31
33
  end
32
34
 
33
35
  # This takes the same arguments as the #test_finder function, but
@@ -36,10 +38,11 @@ module Cornucopia
36
38
  # This is for the times when the finder finds something, but you
37
39
  # think that it may be wrong, or for whatever reason, you want
38
40
  # more information about it to be output.
39
- def self.diagnose_finder(test_object, function_name, *args)
40
- find_action = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(test_object, {}, {}, function_name, *args)
41
+ def self.diagnose_finder(test_object, function_name, *args, &block)
42
+ find_action = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(test_object, {}, {}, function_name, *args, &block)
41
43
 
42
44
  results = find_action.run
45
+ results = results.to_a if function_name == :all
43
46
  find_action.generate_report "Diagnostic report on \"#{function_name.to_s}\":", nil
44
47
 
45
48
  results
@@ -92,10 +95,11 @@ module Cornucopia
92
95
  attr_accessor :return_value
93
96
  attr_accessor :support_options
94
97
 
95
- def initialize(test_object, report_options, support_options, function_name, *args)
98
+ def initialize(test_object, report_options, support_options, function_name, *args, &block)
96
99
  @test_object = test_object
97
100
  @function_name = function_name
98
101
  @args = args
102
+ @block = block
99
103
  @support_options = support_options
100
104
  @report_options = report_options || {}
101
105
 
@@ -564,4 +568,4 @@ return attrib_list;"
564
568
  end
565
569
  end
566
570
  end
567
- end
571
+ end
@@ -1,32 +1,43 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
2
4
  require ::File.expand_path("finder_diagnostics", File.dirname(__FILE__))
3
5
 
6
+ require "active_support/concern"
7
+
4
8
  module Cornucopia
5
9
  module Capybara
6
10
  module FinderExtensions
7
- def find(*args)
8
- __cornucopia_finder_function(:find, *args)
9
- end
11
+ extend ActiveSupport::Concern
12
+
13
+ included do
14
+ alias_method :__cornucopia_orig_find, :find
15
+ alias_method :__cornucopia_orig_all, :all
10
16
 
11
- def all(*args)
12
- __cornucopia_finder_function(:all, *args)
17
+ define_method :find do |*args, &block|
18
+ __cornucopia_finder_function(:find, *args, &block)
19
+ end
20
+
21
+ define_method :all do |*args, &block|
22
+ __cornucopia_finder_function(:all, *args, &block)
23
+ end
13
24
  end
14
25
 
15
- def __cornucopia_finder_function(finder_function, *args)
26
+ def __cornucopia_finder_function(finder_function, *args, &block)
16
27
  retry_count = 0
17
28
  result = nil
18
29
 
19
- support_options = __cornucopia__extract_support_options(*args)
30
+ support_options = __cornucopia__extract_support_options(*args, &block)
20
31
 
21
32
  begin
22
33
  retry_count += 1
23
- result = send("__cornucopia_orig_#{finder_function}", *args)
34
+ result = send("__cornucopia_orig_#{finder_function}", *args, &block)
24
35
  rescue Selenium::WebDriver::Error::StaleElementReferenceError
25
36
  retry if __cornucopia__retry_finder(retry_count, support_options)
26
37
 
27
- result = __cornucopia__analyze_finder(finder_function, support_options, *args)
38
+ result = __cornucopia__analyze_finder(finder_function, support_options, *args, &block)
28
39
  rescue Exception
29
- result = __cornucopia__analyze_finder(finder_function, support_options, *args)
40
+ result = __cornucopia__analyze_finder(finder_function, support_options, *args, &block)
30
41
  end
31
42
 
32
43
  result
@@ -34,7 +45,7 @@ module Cornucopia
34
45
 
35
46
  private
36
47
 
37
- def __cornucopia__extract_support_options(*args)
48
+ def __cornucopia__extract_support_options(*args, &block)
38
49
  support_options = {}
39
50
 
40
51
  if args[-1].is_a?(Hash)
@@ -46,7 +57,7 @@ module Cornucopia
46
57
  support_options
47
58
  end
48
59
 
49
- def __cornucopia__analyze_finder(function_name, support_options, *args)
60
+ def __cornucopia__analyze_finder(function_name, support_options, *args, &block)
50
61
  return_value = nil
51
62
  error = $!
52
63
 
@@ -60,7 +71,7 @@ module Cornucopia
60
71
  {},
61
72
  support_options,
62
73
  function_name,
63
- *args)
74
+ *args, &block)
64
75
 
65
76
  if find_action.perform_analysis(Cornucopia::Util::Configuration.retry_with_found ||
66
77
  support_options[:__cornucopia_retry_with_found])
@@ -85,5 +96,3 @@ module Cornucopia
85
96
  end
86
97
  end
87
98
  end
88
-
89
- load ::File.expand_path("install_finder_extensions.rb", File.dirname(__FILE__))
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ if Object.const_defined?("Capybara") &&
4
+ Capybara.const_defined?("Node") &&
5
+ Capybara::Node.const_defined?("Document")
6
+ unless Capybara::Node::Document.included_modules.include?(Cornucopia::Capybara::FinderExtensions)
7
+ Capybara::Node::Document.include Cornucopia::Capybara::FinderExtensions
8
+ end
9
+ unless Capybara::Node::Document.included_modules.include?(Cornucopia::Capybara::MatcherExtensions)
10
+ Capybara::Node::Document.include Cornucopia::Capybara::MatcherExtensions
11
+ end
12
+ end
13
+
14
+ if Object.const_defined?("Capybara") &&
15
+ Capybara.const_defined?("Node") &&
16
+ Capybara::Node.const_defined?("Simple")
17
+ unless Capybara::Node::Simple.included_modules.include?(Cornucopia::Capybara::FinderExtensions)
18
+ Capybara::Node::Simple.include Cornucopia::Capybara::FinderExtensions
19
+ end
20
+ unless Capybara::Node::Simple.included_modules.include?(Cornucopia::Capybara::MatcherExtensions)
21
+ Capybara::Node::Simple.include Cornucopia::Capybara::MatcherExtensions
22
+ end
23
+ end
24
+
25
+ if Object.const_defined?("Capybara") &&
26
+ Capybara.const_defined?("Node") &&
27
+ Capybara::Node.const_defined?("Element")
28
+ unless Capybara::Node::Element.included_modules.include?(Cornucopia::Capybara::FinderExtensions)
29
+ Capybara::Node::Element.include Cornucopia::Capybara::FinderExtensions
30
+ end
31
+ unless Capybara::Node::Element.included_modules.include?(Cornucopia::Capybara::MatcherExtensions)
32
+ Capybara::Node::Element.include Cornucopia::Capybara::MatcherExtensions
33
+ end
34
+ unless Capybara::Node::Element.included_modules.include?(Cornucopia::Capybara::SelectableValues)
35
+ Capybara::Node::Element.include Cornucopia::Capybara::SelectableValues
36
+ end
37
+ end
38
+
39
+ if Object.const_defined?("Capybara") &&
40
+ Capybara.const_defined?("Session")
41
+ unless Capybara::Session.included_modules.include?(Cornucopia::Capybara::Synchronizable)
42
+ Capybara::Session.include Cornucopia::Capybara::Synchronizable
43
+ end
44
+ end
@@ -1,38 +1,52 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
2
4
  require ::File.expand_path("finder_diagnostics", File.dirname(__FILE__))
3
5
 
6
+ require "active_support/concern"
7
+
4
8
  module Cornucopia
5
9
  module Capybara
6
10
  module MatcherExtensions
7
- def assert_selector(*args)
8
- __cornucopia_assert_selector_function(:assert_selector, *args)
9
- end
11
+ extend ActiveSupport::Concern
10
12
 
11
- def assert_no_selector(*args)
12
- __cornucopia_assert_selector_function(:assert_no_selector, *args)
13
- end
13
+ included do
14
+ alias_method :__cornucopia_orig_assert_selector, :assert_selector
15
+ alias_method :__cornucopia_orig_assert_no_selector, :assert_no_selector
16
+ alias_method :__cornucopia_orig_has_selector?, :has_selector?
17
+ alias_method :__cornucopia_orig_has_no_selector?, :has_no_selector?
14
18
 
15
- def has_selector?(*args)
16
- new_args = args.dup
17
- options = (new_args.pop if new_args.length > 1 && new_args[-1].is_a?(Hash)) || {}
19
+ define_method :assert_selector do |*args|
20
+ __cornucopia_assert_selector_function(:assert_selector, *args)
21
+ end
18
22
 
19
- if Cornucopia::Util::Configuration.ignore_has_selector_errors
20
- options = { __cornucopia_no_analysis: true }.merge options
23
+ define_method :assert_no_selector do |*args|
24
+ __cornucopia_assert_selector_function(:assert_no_selector, *args)
21
25
  end
22
26
 
23
- __cornucopia_assert_selector_function(:has_selector?, *new_args, options)
24
- end
27
+ define_method :has_selector? do |*args|
28
+ new_args = args.dup
29
+ options = (new_args.pop if new_args.length > 1 && new_args[-1].is_a?(Hash)) || {}
25
30
 
26
- def has_no_selector?(*args)
27
- new_args = args.dup
28
- options = (new_args.pop if new_args.length > 1 && new_args[-1].is_a?(Hash)) || {}
31
+ if Cornucopia::Util::Configuration.ignore_has_selector_errors
32
+ options = { __cornucopia_no_analysis: true }.merge options
33
+ end
29
34
 
30
- if Cornucopia::Util::Configuration.ignore_has_selector_errors
31
- options = { __cornucopia_no_analysis: true }.merge options
35
+ __cornucopia_assert_selector_function(:has_selector?, *new_args, options)
36
+ end
37
+
38
+ define_method :has_no_selector? do |*args|
39
+ new_args = args.dup
40
+ options = (new_args.pop if new_args.length > 1 && new_args[-1].is_a?(Hash)) || {}
41
+
42
+ if Cornucopia::Util::Configuration.ignore_has_selector_errors
43
+ options = { __cornucopia_no_analysis: true }.merge options
44
+ end
45
+ __cornucopia_assert_selector_function(:has_no_selector?, *new_args, options)
32
46
  end
33
- __cornucopia_assert_selector_function(:has_no_selector?, *new_args, options)
34
47
  end
35
48
 
49
+
36
50
  def __cornucopia_assert_selector_function(assert_selector_function, *args)
37
51
  retry_count = 0
38
52
  result = nil
@@ -104,5 +118,3 @@ module Cornucopia
104
118
  end
105
119
  end
106
120
  end
107
-
108
- load ::File.expand_path("install_matcher_extensions.rb", File.dirname(__FILE__))
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "digest"
2
4
  # require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
3
5
  require ::File.expand_path("../util/report_builder", File.dirname(__FILE__))
@@ -47,6 +49,9 @@ module Cornucopia
47
49
  @html_frame = "use accessor"
48
50
  @screen_shot = "use accessor"
49
51
  @html_file = "use accessor"
52
+ @browser_logs = "use accessor"
53
+ @browser_info = "use accessor"
54
+ @all_cookies = "use accessor"
50
55
  end
51
56
 
52
57
  def can_dump_details?
@@ -148,6 +153,44 @@ module Cornucopia
148
153
  value
149
154
  end
150
155
 
156
+ def execute_browser_function(function_symbol, unsupported_value, *args)
157
+ value = unsupported_value
158
+
159
+ unless @driver.browser.respond_to?(function_symbol) ||
160
+ @driver.browser.manage.respond_to?(function_symbol)
161
+ @unsupported_list << function_symbol unless @driver.browser.respond_to?(function_symbol)
162
+ end
163
+
164
+ begin
165
+ unless @unsupported_list.include?(function_symbol)
166
+ value = if @driver.browser.respond_to?(function_symbol)
167
+ @driver.browser.send(function_symbol, *args)
168
+ else
169
+ @driver.browser.manage.send(function_symbol, *args)
170
+ end
171
+ end
172
+ rescue ::Capybara::NotSupportedByDriverError
173
+ @unsupported_list << function_symbol
174
+ end
175
+
176
+ value
177
+ end
178
+
179
+ def browser_logs
180
+ value = execute_browser_function(:logs, nil)
181
+
182
+ types = value.available_types
183
+ types.each_with_object({}) { |type, hash| hash[type] = value.get(type) }
184
+ end
185
+
186
+ def browser_info
187
+ execute_browser_function(:logs, nil)
188
+ end
189
+
190
+ def all_cookies
191
+ execute_browser_function(:all_cookies, nil)
192
+ end
193
+
151
194
  def page_url
152
195
  execute_driver_function(:current_url, nil)
153
196
  end
@@ -225,4 +268,4 @@ module Cornucopia
225
268
  end
226
269
  end
227
270
  end
228
- end
271
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
4
+ require ::File.expand_path("finder_diagnostics", File.dirname(__FILE__))
5
+
6
+ require "active_support/concern"
7
+
8
+ module Cornucopia
9
+ module Capybara
10
+ module SelectableValues
11
+ extend ActiveSupport::Concern
12
+
13
+ # select_value finds the option with the value #value then calls select_option on that item.
14
+ #
15
+ # select_value only works on select boxes.
16
+ def select_value(values)
17
+ raise "select_value is only valid for select items" unless self.tag_name == "select"
18
+
19
+ if values.is_a?(Array)
20
+ values.each do |value|
21
+ html_safe_value = "".html_safe + value.to_s
22
+ self.find("option[value=\"#{html_safe_value}\"]", visible: false).select_option
23
+ end
24
+ else
25
+ html_safe_value = "".html_safe + values.to_s
26
+ self.find("option[value=\"#{html_safe_value}\"]", visible: false).select_option
27
+ end
28
+ end
29
+
30
+ # value_text returns the text for the selected items in the select box instead of the value(s)
31
+ #
32
+ # value_text only works on select boxes.
33
+ def value_text
34
+ raise "value_text is only valid for select items" unless self.tag_name == "select"
35
+
36
+ values = self.value
37
+ if values.is_a?(Array)
38
+ values.map do |value|
39
+ self.find("option[value=\"#{value}\"]", visible: false).text
40
+ end
41
+ else
42
+ self.find("option[value=\"#{values}\"]", visible: false).text
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../util/configuration", File.dirname(__FILE__))
4
+ require ::File.expand_path("finder_diagnostics", File.dirname(__FILE__))
5
+
6
+ require "active_support/concern"
7
+
8
+ module Cornucopia
9
+ module Capybara
10
+ module Synchronizable
11
+ extend ActiveSupport::Concern
12
+
13
+ # This function uses Capybara's synchronize function to evaluate a block until
14
+ # it becomes true.
15
+ def synchronize_test(seconds = nil, options = {}, &block)
16
+ seconds ||= ::Capybara.respond_to?(:default_max_wait_time) ? ::Capybara.default_max_wait_time : ::Capybara.default_wait_time
17
+
18
+ document.synchronize(seconds, options) do
19
+ raise ::Capybara::ElementNotFound unless block.yield
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require ::File.expand_path("../cornucopia", File.dirname(__FILE__))
2
- load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__FILE__))
3
- load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
4
+
5
+ load ::File.expand_path("capybara/install_extensions.rb", File.dirname(__FILE__))
6
+ load ::File.expand_path("site_prism/install_extensions.rb", File.dirname(__FILE__))
4
7
 
5
8
  require "singleton"
6
9
 
@@ -31,7 +34,7 @@ if Cucumber::VERSION.split[0].to_i >= 2
31
34
  test_name = nil
32
35
 
33
36
  scenario = scenario_proxy
34
- time = Benchmark.measure do
37
+ time = Benchmark.measure do
35
38
  puts "Cornucopia::Hook::before test" if Cornucopia::Util::Configuration.benchmark
36
39
 
37
40
  test_name = Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)