minitest-utils 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23ddba2298a0f74ee9dcc78a844c600284a53733
4
- data.tar.gz: 99b5b13394035577ba2eab4ae2515cf951d41487
3
+ metadata.gz: 6ee508923ff90b1f11e74045d7d22931fe2e4330
4
+ data.tar.gz: c082fb20a0b1e3cc782f69279f5f52ba1929bbdd
5
5
  SHA512:
6
- metadata.gz: 340f18f999a7bde3f38a69bad3d1419f090b5b7a57aff5d71fe22c951af37e4465e1960fdbe83b1ba5a010eece8a058422e297ade0356336cc7de31fdfb850d0
7
- data.tar.gz: 0313d960f7af49be353ce3f88f321c9cc8a286bc847739079e0eb5a43d5271305c3b77a9b9a93c853b87d61f78c2aa1d1840d8130586ed8cf62e15b50fe9319e
6
+ metadata.gz: 9b13c02df71f819521ec441abb59260e594c9275016f12f1891a9ae7d2f57987499484a4ff4ba915873b6d8e0cf260cea33839e75b0e2cb79b0227c99a807a8c
7
+ data.tar.gz: 2cac21f81c969458c4525258a220a95e52e1c299cc1deec6815cb10afaabd28528cfe2481c03871abfa0d732209d5b8b66853d7c29834b6b866a04439a238e6c
@@ -0,0 +1,9 @@
1
+ gem "selenium-webdriver"
2
+ gem "chromedriver-helper"
3
+
4
+ Capybara.register_driver :chrome do |app|
5
+ Capybara::Selenium::Driver.new app, browser: :chrome,
6
+ options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
7
+ end
8
+
9
+ Capybara.javascript_driver = :chrome
@@ -0,0 +1,10 @@
1
+ gem "launchy"
2
+
3
+ module Minitest
4
+ class Test
5
+ teardown do
6
+ next unless Capybara.current_driver == Capybara.javascript_driver
7
+ save_and_open_screenshot if failures.any?
8
+ end
9
+ end
10
+ end
@@ -9,10 +9,24 @@ module ActionDispatch
9
9
  Capybara.use_default_driver
10
10
  end
11
11
 
12
- def self.use_javascript!
12
+ def self.use_javascript!(raise_on_javascript_errors: true)
13
13
  setup do
14
14
  Capybara.current_driver = Capybara.javascript_driver
15
15
  end
16
+
17
+ teardown do
18
+ next if failures.any?
19
+ next unless raise_on_javascript_errors
20
+
21
+ errors = page.driver.browser.manage.logs.get(:browser).select {|log| log.level == "SEVERE" }
22
+ next unless errors.any?
23
+
24
+ messages = errors
25
+ .map(&:message)
26
+ .map {|message| message[/(\d+:\d+ .*?)$/, 1] }
27
+ .join("\n")
28
+ raise "JavaScript Errors\n#{messages}"
29
+ end
16
30
  end
17
31
  end
18
32
  end
@@ -102,10 +102,15 @@ module Minitest
102
102
  end
103
103
 
104
104
  def display_replay_command(result)
105
- location = find_test_file(result)
105
+ location, line = find_test_file(result)
106
106
  return if location.empty?
107
107
 
108
- command = %[rake TEST=#{location} TESTOPTS="--name=#{result.name}"]
108
+ command = if defined?(Rails) && Rails.version >= "5.0.0"
109
+ %[bin/rails test #{location}:#{line}]
110
+ else
111
+ %[rake TEST=#{location} TESTOPTS="--name=#{result.name}"]
112
+ end
113
+
109
114
  str = "\n"
110
115
  str << color(command, :red)
111
116
 
@@ -113,10 +118,10 @@ module Minitest
113
118
  end
114
119
 
115
120
  def find_test_file(result)
116
- filter_backtrace(result.failure.backtrace)
117
- .find {|line| line.match(%r((test|spec)/.*?_(test|spec).rb)) }
118
- .to_s
119
- .gsub(/:\d+.*?$/, "")
121
+ location, line = result.method(result.name).source_location
122
+ location = location.gsub(%r[^.*?/((?:test|spec)/.*?)$], "\\1")
123
+
124
+ [location, line]
120
125
  end
121
126
 
122
127
  def backtrace(backtrace)
@@ -1,5 +1,5 @@
1
1
  module Minitest
2
2
  module Utils
3
- VERSION = "0.3.1".freeze
3
+ VERSION = "0.4.0".freeze
4
4
  end
5
5
  end
@@ -11,16 +11,13 @@ module Minitest
11
11
  require path
12
12
  block.call if block
13
13
  rescue LoadError
14
+ return
14
15
  end
15
16
  end
16
17
 
17
18
  load_lib.call "mocha/mini_test"
18
19
  load_lib.call "capybara"
19
20
 
20
- load_lib.call("capybara/poltergeist") do
21
- require "minitest/utils/setup/poltergeist"
22
- end
23
-
24
21
  load_lib.call "webmock" do
25
22
  require "minitest/utils/setup/webmock"
26
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-29 00:00:00.000000000 Z
11
+ date: 2017-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -82,6 +82,8 @@ files:
82
82
  - bin/rake
83
83
  - bin/setup
84
84
  - lib/minitest/utils.rb
85
+ - lib/minitest/utils/capybara/chrome_headless.rb
86
+ - lib/minitest/utils/capybara/screenshot_on_failures.rb
85
87
  - lib/minitest/utils/extension.rb
86
88
  - lib/minitest/utils/rails.rb
87
89
  - lib/minitest/utils/rails/capybara.rb
@@ -90,7 +92,6 @@ files:
90
92
  - lib/minitest/utils/reporter.rb
91
93
  - lib/minitest/utils/setup/database_cleaner.rb
92
94
  - lib/minitest/utils/setup/factory_girl.rb
93
- - lib/minitest/utils/setup/poltergeist.rb
94
95
  - lib/minitest/utils/setup/webmock.rb
95
96
  - lib/minitest/utils/test_notifier_reporter.rb
96
97
  - lib/minitest/utils/version.rb
@@ -119,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  version: '0'
120
121
  requirements: []
121
122
  rubyforge_project:
122
- rubygems_version: 2.5.1
123
+ rubygems_version: 2.6.13
123
124
  signing_key:
124
125
  specification_version: 4
125
126
  summary: Some utilities for your Minitest day-to-day usage.
@@ -1 +0,0 @@
1
- Capybara.javascript_driver = :poltergeist