pludoni_rspec 0.11 → 0.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile.lock +1 -6
- data/lib/pludoni_rspec/cuprite.rb +1 -0
- data/lib/pludoni_rspec/formatter.rb +48 -0
- data/lib/pludoni_rspec/spec_helper.rb +39 -3
- data/lib/pludoni_rspec/version.rb +1 -1
- data/lib/pludoni_rspec.rb +5 -7
- data/pludoni_rspec.gemspec +1 -1
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 897a5ac1427f82428f620f7d860ae26c1f2d17ba654f656baa646f26d42876fc
|
4
|
+
data.tar.gz: 6e3bd7d8bdf3292ea15c071115d09c5b1caa2f96d9a505088d649f7efcf2b7f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06ffcb0a2cd67c7cc7af74cf96c10eb18a575c59e23b22300fb3031426179cc2e866d6afb9cc943badb5ce46f3b7297de902b09afaa3160982bf0f44cee9d783
|
7
|
+
data.tar.gz: f72de2ea77aaf4f182a376f6ab35a9bcec5f16128c9ddd1778f79a0511945b7cb3bf06545b69e053858fc60b24fad8812a04f42379a92dfadaad0874213ee0d6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### 0.20
|
2
|
+
|
3
|
+
- Added new default custom formatter instead of fuubar - Documentation based,
|
4
|
+
but prints out duration and file paths of the group
|
5
|
+
- Disable Smooth Scrolling for Cuprite
|
6
|
+
- Fix: Rails 7.1 `fixture_path` or `fixture_paths`
|
7
|
+
- Add: 3 new global helpers:
|
8
|
+
- ``only_run_when_single_spec_and_local!``
|
9
|
+
skip this example, only run if you are working on it and skip it later like special customers bugs etc.,
|
10
|
+
long running crawler etc. that you want to run occasionally
|
11
|
+
- ``local!``
|
12
|
+
For System specs:
|
13
|
+
prints the instructions to open the current page in your local browser if
|
14
|
+
you run the specs remotely, create a SSH tunnel to the server during
|
15
|
+
system specs and open the brOwser on your local machine
|
16
|
+
|
1
17
|
### 0.11
|
2
18
|
|
3
19
|
- Rails 7.1 fixture_paths deprecation
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pludoni_rspec (0.
|
4
|
+
pludoni_rspec (0.20)
|
5
5
|
capybara (>= 3.13.2)
|
6
6
|
cuprite
|
7
|
-
fuubar (>= 2.3.1)
|
8
7
|
headless (>= 2.3.1)
|
9
8
|
pry-rails
|
10
9
|
puma
|
@@ -37,9 +36,6 @@ GEM
|
|
37
36
|
concurrent-ruby (~> 1.1)
|
38
37
|
webrick (~> 1.7)
|
39
38
|
websocket-driver (>= 0.6, < 0.8)
|
40
|
-
fuubar (2.5.1)
|
41
|
-
rspec-core (~> 3.0)
|
42
|
-
ruby-progressbar (~> 1.4)
|
43
39
|
headless (2.3.1)
|
44
40
|
matrix (0.4.2)
|
45
41
|
method_source (1.0.0)
|
@@ -69,7 +65,6 @@ GEM
|
|
69
65
|
rspec-support (3.12.0)
|
70
66
|
rspec_junit_formatter (0.6.0)
|
71
67
|
rspec-core (>= 2, < 4, != 2.12.0)
|
72
|
-
ruby-progressbar (1.13.0)
|
73
68
|
simplecov (0.22.0)
|
74
69
|
docile (~> 1.1)
|
75
70
|
simplecov-html (~> 0.11)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rspec/core'
|
2
|
+
require 'rspec/core/formatters/documentation_formatter'
|
3
|
+
|
4
|
+
class EnhancedDocumentationFormatter < RSpec::Core::Formatters::DocumentationFormatter
|
5
|
+
RSpec::Core::Formatters.register self, :example_group_started, :example_group_finished,
|
6
|
+
:example_passed, :example_pending, :example_failed
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_accessor :threshold_for_good, :threshold_for_bad
|
10
|
+
end
|
11
|
+
self.threshold_for_good = 0.2
|
12
|
+
self.threshold_for_bad = 2
|
13
|
+
|
14
|
+
def example_group_started(notification)
|
15
|
+
output.puts if @group_level == 0
|
16
|
+
filename = if @group_level == 0
|
17
|
+
RSpec::Core::Formatters::ConsoleCodes.wrap(notification.group.file_path, :gray)
|
18
|
+
end
|
19
|
+
output.puts "#{current_indentation}#{notification.group.description.strip} #{filename}"
|
20
|
+
|
21
|
+
@group_level += 1
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def passed_output(example)
|
27
|
+
super + " " + duration(example)
|
28
|
+
end
|
29
|
+
|
30
|
+
def failure_output(example)
|
31
|
+
super + " " + duration(example)
|
32
|
+
end
|
33
|
+
|
34
|
+
def pending_output(example, message)
|
35
|
+
super + " " + duration(example)
|
36
|
+
end
|
37
|
+
|
38
|
+
def duration(example)
|
39
|
+
time = example.metadata[:execution_result][:run_time]
|
40
|
+
if time < self.class.threshold_for_good
|
41
|
+
RSpec::Core::Formatters::ConsoleCodes.wrap("#{(time * 1000).round}ms", :black)
|
42
|
+
elsif time > self.class.threshold_for_bad
|
43
|
+
RSpec::Core::Formatters::ConsoleCodes.wrap("#{time.round(2)}s", :red)
|
44
|
+
else
|
45
|
+
RSpec::Core::Formatters::ConsoleCodes.wrap("#{time.round(2)}s", :yellow)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
|
+
config.before(:each) do
|
3
|
+
ActiveSupport::CurrentAttributes.reset_all if defined?(ActiveSupport::CurrentAttributes)
|
4
|
+
end
|
2
5
|
config.example_status_persistence_file_path = 'tmp/rspec.failed.txt'
|
3
6
|
config.expect_with :rspec do |expectations|
|
4
7
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
5
8
|
end
|
6
|
-
config.include RSpec::Rails::RequestExampleGroup, type: :request, file_path: /
|
9
|
+
config.include RSpec::Rails::RequestExampleGroup, type: :request, file_path: %r{spec/api}
|
7
10
|
config.before do
|
8
11
|
I18n.locale = I18n.default_locale
|
9
12
|
if defined?(Fabrication)
|
@@ -21,7 +24,7 @@ RSpec.configure do |config|
|
|
21
24
|
|
22
25
|
config.bisect_runner = :shell
|
23
26
|
config.order = :defined
|
24
|
-
if
|
27
|
+
if config.respond_to?(:fixture_paths)
|
25
28
|
config.fixture_paths ||= []
|
26
29
|
config.fixture_paths << "#{::Rails.root}/spec/fixtures"
|
27
30
|
else
|
@@ -57,9 +60,42 @@ RSpec.configure do |config|
|
|
57
60
|
end
|
58
61
|
|
59
62
|
config.around(:each, :timeout) do |example|
|
60
|
-
time = 10 unless time.
|
63
|
+
time = 10 unless time.is_a?(Numeric)
|
61
64
|
Timeout.timeout(time) do
|
62
65
|
example.run
|
63
66
|
end
|
64
67
|
end
|
68
|
+
|
69
|
+
# helper method for below
|
70
|
+
def current_file_is_the_only_spec?
|
71
|
+
file = caller.find { |c| c =~ /_spec\.rb/ }.split(':').first
|
72
|
+
file = Pathname.new(file).relative_path_from(Rails.root).to_s
|
73
|
+
ARGV.any? { |arg| arg.include?(file) }
|
74
|
+
end
|
75
|
+
|
76
|
+
# skip this example, only run if you are working on it and skip it later
|
77
|
+
# like special customers bugs etc.
|
78
|
+
def only_run_when_single_spec_and_local!
|
79
|
+
if ENV['CI'] || !current_file_is_the_only_spec?
|
80
|
+
skip "Only run when run as a single spec and not CI set"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# For System specs:
|
85
|
+
# prints the instructions to open the current page in your local browser
|
86
|
+
# if you run the specs remotely, create a SSH tunnel to the server during system specs
|
87
|
+
# and open the brOwser on your local machine
|
88
|
+
def local!
|
89
|
+
uri = URI.parse(page.current_url)
|
90
|
+
puts "--- Connect with local browser:"
|
91
|
+
puts " 1. Open a SSH tunnel with port forwarding to the test server:"
|
92
|
+
puts "\nssh #{ENV['LOGNAME']}@pludoni.com -L 8080:localhost:#{uri.port}\n"
|
93
|
+
puts " 2. Open in Browser: "
|
94
|
+
uri.port = nil
|
95
|
+
uri.scheme = nil
|
96
|
+
uri.host = nil
|
97
|
+
puts "\nhttp://localhost:8080#{uri}\n"
|
98
|
+
puts " Afterwards, you can close the SSH session"
|
99
|
+
end
|
100
|
+
|
65
101
|
end
|
data/lib/pludoni_rspec.rb
CHANGED
@@ -1,15 +1,10 @@
|
|
1
1
|
require "pludoni_rspec/version"
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
# rubocop:disable Rails/FilePath
|
5
4
|
module PludoniRspec
|
6
5
|
class Config
|
7
6
|
class << self
|
8
|
-
attr_accessor :destroy_headless
|
9
|
-
attr_accessor :wrap_js_spec_in_headless
|
10
|
-
attr_accessor :chrome_arguments
|
11
|
-
attr_accessor :capybara_timeout
|
12
|
-
attr_accessor :coverage_enabled
|
7
|
+
attr_accessor :destroy_headless, :wrap_js_spec_in_headless, :chrome_arguments, :capybara_timeout, :coverage_enabled
|
13
8
|
end
|
14
9
|
# self.chrome_driver_version = "2.36"
|
15
10
|
self.destroy_headless = false
|
@@ -18,6 +13,7 @@ module PludoniRspec
|
|
18
13
|
self.capybara_timeout = ENV['CI'] == '1' ? 30 : 5
|
19
14
|
self.coverage_enabled = true
|
20
15
|
end
|
16
|
+
|
21
17
|
def self.run
|
22
18
|
ENV["RAILS_ENV"] ||= 'test'
|
23
19
|
coverage! if Config.coverage_enabled
|
@@ -29,6 +25,8 @@ module PludoniRspec
|
|
29
25
|
require 'pludoni_rspec/cuprite'
|
30
26
|
require 'pludoni_rspec/freeze_time'
|
31
27
|
require 'pludoni_rspec/shared_context'
|
28
|
+
require 'pludoni_rspec/formatter'
|
29
|
+
RSpec.configuration.default_formatter = 'EnhancedDocumentationFormatter'
|
32
30
|
if defined?(VCR)
|
33
31
|
require 'pludoni_rspec/vcr'
|
34
32
|
end
|
@@ -43,7 +41,7 @@ module PludoniRspec
|
|
43
41
|
if File.exist?('coverage/.resultset.json') && (
|
44
42
|
File.ctime('coverage/.resultset.json') < (Time.now - 900) ||
|
45
43
|
(JSON.parse(File.read('coverage/.resultset.json')).keys.length > 4)
|
46
|
-
|
44
|
+
)
|
47
45
|
File.unlink('coverage/.resultset.json')
|
48
46
|
if File.exist?('coverage/.resultset.json.lock')
|
49
47
|
File.unlink('coverage/.resultset.json.lock')
|
data/pludoni_rspec.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
# spec.add_dependency "vcr", ">= 3.0.0"
|
24
24
|
# spec.add_dependency "geckodriver-helper", ">= 0.23.0"
|
25
25
|
spec.add_dependency 'capybara', ">= 3.13.2"
|
26
|
-
spec.add_dependency 'fuubar', '>= 2.3.1'
|
26
|
+
# spec.add_dependency 'fuubar', '>= 2.3.1'
|
27
27
|
spec.add_dependency 'headless', ">= 2.3.1"
|
28
28
|
spec.add_dependency 'pry-rails'
|
29
29
|
spec.add_dependency 'puma'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pludoni_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.20'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Wienert
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.13.2
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: fuubar
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.3.1
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 2.3.1
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: headless
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,6 +173,7 @@ files:
|
|
187
173
|
- lib/pludoni_rspec.rb
|
188
174
|
- lib/pludoni_rspec/cuprite.rb
|
189
175
|
- lib/pludoni_rspec/devise.rb
|
176
|
+
- lib/pludoni_rspec/formatter.rb
|
190
177
|
- lib/pludoni_rspec/freeze_time.rb
|
191
178
|
- lib/pludoni_rspec/shared_context.rb
|
192
179
|
- lib/pludoni_rspec/spec_helper.rb
|