minitest-utils 0.3.1 → 0.4.0

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: 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