cornucopia 0.1.40 → 0.1.41

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 (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)