percy-capybara 3.1.1 → 3.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -87
- data/Gemfile +0 -5
- data/lib/percy/capybara/client.rb +1 -1
- data/lib/percy/capybara/client/user_agent.rb +1 -1
- data/lib/percy/capybara/httpfetcher.rb +1 -1
- data/lib/percy/capybara/loaders/native_loader.rb +2 -2
- data/lib/percy/capybara/loaders/sprockets_loader.rb +2 -2
- data/lib/percy/capybara/version.rb +1 -1
- data/percy-capybara.gemspec +3 -0
- data/spec/lib/percy/capybara/client/builds_spec.rb +2 -2
- data/spec/lib/percy/capybara/client/rails_public_test_data/symlink_to_images +1 -0
- data/spec/lib/percy/capybara/client/snapshots_spec.rb +1 -1
- data/spec/lib/percy/capybara/client/user_agent_spec.rb +1 -1
- data/spec/lib/percy/capybara/client_spec.rb +59 -3
- data/spec/lib/percy/capybara/loaders/base_loader_spec.rb +16 -15
- data/spec/lib/percy/capybara/loaders/ember_cli_rails_loader_spec.rb +9 -6
- data/spec/lib/percy/capybara/loaders/filesystem_loader_spec.rb +33 -7
- data/spec/lib/percy/capybara/loaders/native_loader_spec.rb +13 -11
- data/spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb +7 -5
- data/spec/lib/percy/capybara_spec.rb +8 -8
- data/spec/spec_helper.rb +1 -1
- data/spec/support/test_helpers.rb +1 -1
- metadata +47 -4
- data/.rubocop_todo.yml +0 -86
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58f05b4af92c2331c4f96ea61734cb56240a847f
|
4
|
+
data.tar.gz: ecb08a90a16eb404f2815c849162ff467935560e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db7827c87c482dab2e0a1e8852ba3c7d67f60d87954e799ceb1eb3001d7bbb09a54da74a7f18cd6e46686f0f9fefbec47820470c581cbc96d8c91d5634896c5a
|
7
|
+
data.tar.gz: 27ad4037efaae00d19654a9409992e08297864eac2bdd3482502f676e48480744a644c1b8f169e7fc274e958a004d3a25249556ca31e69eabc1498d66c1330f8
|
data/.rubocop.yml
CHANGED
@@ -1,92 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
Include:
|
5
|
-
- Rakefile
|
6
|
-
- lib/**/*.rake
|
7
|
-
|
8
|
-
Lint/EndAlignment:
|
9
|
-
EnforcedStyleAlignWith: variable
|
10
|
-
|
11
|
-
Metrics/LineLength:
|
12
|
-
Max: 100
|
13
|
-
|
14
|
-
Style/CaseIndentation:
|
15
|
-
EnforcedStyle: end
|
16
|
-
|
17
|
-
Style/AlignParameters:
|
18
|
-
EnforcedStyle: with_fixed_indentation
|
19
|
-
|
20
|
-
Style/Documentation:
|
21
|
-
Enabled: false
|
22
|
-
|
23
|
-
Style/DoubleNegation:
|
24
|
-
Enabled: false
|
25
|
-
|
26
|
-
Style/IndentArray:
|
27
|
-
EnforcedStyle: consistent
|
28
|
-
|
29
|
-
Style/MultilineMethodCallIndentation:
|
30
|
-
EnforcedStyle: indented
|
31
|
-
|
32
|
-
Style/MultilineOperationIndentation:
|
33
|
-
EnforcedStyle: indented
|
34
|
-
|
35
|
-
# Disable Style/NumericLiterals so numbers don't need underscores
|
36
|
-
Style/NumericLiterals:
|
37
|
-
Enabled: false
|
38
|
-
|
39
|
-
Style/NumericPredicate:
|
40
|
-
EnforcedStyle: comparison
|
41
|
-
|
42
|
-
Style/RedundantBegin:
|
43
|
-
Enabled: false
|
1
|
+
inherit_gem:
|
2
|
+
percy-style:
|
3
|
+
- default.yml
|
44
4
|
|
45
|
-
Style/RegexpLiteral:
|
46
|
-
EnforcedStyle: slashes
|
47
|
-
AllowInnerSlashes: true
|
48
5
|
|
49
|
-
|
50
|
-
EnforcedStyle: no_space
|
51
|
-
|
52
|
-
Style/TrailingCommaInArguments:
|
53
|
-
EnforcedStyleForMultiline: consistent_comma
|
54
|
-
|
55
|
-
Style/TrailingCommaInLiteral:
|
56
|
-
EnforcedStyleForMultiline: consistent_comma
|
57
|
-
|
58
|
-
RSpec/MessageSpies:
|
59
|
-
EnforcedStyle: receive
|
60
|
-
|
61
|
-
RSpec/ExampleLength:
|
62
|
-
Enabled: false
|
63
|
-
|
64
|
-
Style/FileName:
|
65
|
-
Exclude:
|
66
|
-
- 'Gemfile'
|
67
|
-
- 'Guardfile'
|
68
|
-
- 'percy-capybara.gemspec'
|
69
|
-
|
70
|
-
Style/EmptyLineAfterMagicComment:
|
6
|
+
RSpec/InstanceVariable:
|
71
7
|
Exclude:
|
72
|
-
-
|
8
|
+
- spec/lib/percy/capybara_spec.rb
|
73
9
|
|
74
|
-
|
75
|
-
|
76
|
-
- 'percy-capybara.gemspec'
|
77
|
-
|
78
|
-
Style/UnneededPercentQ:
|
79
|
-
Exclude:
|
80
|
-
- 'percy-capybara.gemspec'
|
81
|
-
|
82
|
-
Style/RegexpLiteral:
|
83
|
-
Exclude:
|
84
|
-
- 'percy-capybara.gemspec'
|
85
|
-
|
86
|
-
Style/SymbolArray:
|
87
|
-
Exclude:
|
88
|
-
- 'spec/spec_helper.rb'
|
10
|
+
RSpec/ContextWording:
|
11
|
+
Enabled: false
|
89
12
|
|
90
|
-
|
91
|
-
|
92
|
-
# EnforcedStyle: explicit
|
13
|
+
AllCops:
|
14
|
+
TargetRubyVersion: 2.1
|
data/Gemfile
CHANGED
@@ -34,7 +34,7 @@ module Percy
|
|
34
34
|
@client = options[:client] || \
|
35
35
|
Percy.client(client_info: _client_info, environment_info: _environment_info)
|
36
36
|
|
37
|
-
return unless defined?(Rails)
|
37
|
+
return unless defined?(Rails) && defined?(Sprockets::Rails)
|
38
38
|
|
39
39
|
@sprockets_environment = options[:sprockets_environment] || Rails.application.assets
|
40
40
|
@sprockets_options = options[:sprockets_options] || Rails.application.config.assets
|
@@ -8,8 +8,8 @@ module Percy
|
|
8
8
|
# Resource loader that uses the native Capybara browser interface to discover resources.
|
9
9
|
# This loader uses JavaScript to discover page resources, so specs must be tagged with
|
10
10
|
# "js: true" because the default Rack::Test driver does not support executing JavaScript.
|
11
|
-
class NativeLoader < BaseLoader
|
12
|
-
PATH_REGEX =
|
11
|
+
class NativeLoader < BaseLoader
|
12
|
+
PATH_REGEX = /\A\/[^\\s\"']*/
|
13
13
|
DATA_URL_REGEX = /\Adata:/
|
14
14
|
LOCAL_HOSTNAMES = [
|
15
15
|
'localhost',
|
@@ -2,7 +2,7 @@ require 'percy/capybara/loaders/base_loader'
|
|
2
2
|
require 'digest'
|
3
3
|
require 'find'
|
4
4
|
require 'set'
|
5
|
-
require 'uri'
|
5
|
+
require 'addressable/uri'
|
6
6
|
|
7
7
|
module Percy
|
8
8
|
module Capybara
|
@@ -52,7 +52,7 @@ module Percy
|
|
52
52
|
# TODO: more robust support for Sprockets usage outside Rails, ie Sinatra.
|
53
53
|
# How do we find the correct path in that case?
|
54
54
|
path = sprockets_options.digest ? asset.digest_path : logical_path
|
55
|
-
resource_url = URI.escape("/assets/#{path}")
|
55
|
+
resource_url = Addressable::URI.escape("/assets/#{path}")
|
56
56
|
end
|
57
57
|
|
58
58
|
next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(resource_url))
|
data/percy-capybara.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency 'percy-client', '~> 1.13'
|
22
|
+
spec.add_dependency 'addressable', '~> 2'
|
22
23
|
|
23
24
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
24
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -29,5 +30,7 @@ Gem::Specification.new do |spec|
|
|
29
30
|
spec.add_development_dependency 'webmock', '~> 1'
|
30
31
|
spec.add_development_dependency 'mime-types', '< 3' # For Ruby 1.9 testing support.
|
31
32
|
spec.add_development_dependency 'faraday', '>= 0.8'
|
33
|
+
spec.add_development_dependency 'httpclient', '~> 2.8'
|
32
34
|
spec.add_development_dependency 'sprockets', '>= 3.2.0'
|
35
|
+
spec.add_development_dependency 'percy-style'
|
33
36
|
end
|
@@ -6,7 +6,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
describe '#initialize_build', type: :feature, js: true do
|
9
|
-
before { setup_sprockets(capybara_client) }
|
9
|
+
before(:each) { setup_sprockets(capybara_client) }
|
10
10
|
|
11
11
|
context 'percy is not enabled' do
|
12
12
|
let(:enabled) { false }
|
@@ -152,7 +152,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
|
|
152
152
|
end
|
153
153
|
end
|
154
154
|
describe '#_upload_missing_build_resources', type: :feature, js: true do
|
155
|
-
before { setup_sprockets(capybara_client) }
|
155
|
+
before(:each) { setup_sprockets(capybara_client) }
|
156
156
|
|
157
157
|
it 'returns 0 if there are no missing build resources to upload' do
|
158
158
|
mock_response = {
|
@@ -0,0 +1 @@
|
|
1
|
+
spec/lib/percy/capybara/client/rails_public_test_data/../symlink_test_data
|
@@ -27,7 +27,7 @@ RSpec.describe Percy::Capybara::Client::UserAgent do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'a loader is configured' do
|
30
|
-
before { client.loader = :sprockets_loader }
|
30
|
+
before(:each) { client.loader = :sprockets_loader }
|
31
31
|
|
32
32
|
it 'includes loader information' do
|
33
33
|
expect(environment_info).to eq('percy-capybara-loader/sprockets_loader')
|
@@ -1,8 +1,8 @@
|
|
1
1
|
RSpec.describe Percy::Capybara::Client do
|
2
2
|
describe '#enabled?' do
|
3
3
|
context 'when required environment variables set' do
|
4
|
-
before { set_required_env_variables }
|
5
|
-
after { clear_percy_env_variables }
|
4
|
+
before(:each) { set_required_env_variables }
|
5
|
+
after(:each) { clear_percy_env_variables }
|
6
6
|
|
7
7
|
it 'is true when PERCY_ENABLE is 1' do
|
8
8
|
ENV['PERCY_ENABLE'] = '1'
|
@@ -26,7 +26,7 @@ RSpec.describe Percy::Capybara::Client do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
context 'when required environment variables not set' do
|
29
|
-
before { clear_percy_env_variables }
|
29
|
+
before(:each) { clear_percy_env_variables }
|
30
30
|
|
31
31
|
it 'is false' do
|
32
32
|
ENV.delete 'PERCY_ENABLE'
|
@@ -114,6 +114,62 @@ RSpec.describe Percy::Capybara::Client do
|
|
114
114
|
it 'passes client info down to the lower level Percy client' do
|
115
115
|
expect(capybara_client.client.client_info).to eq("percy-capybara/#{Percy::Capybara::VERSION}")
|
116
116
|
end
|
117
|
+
|
118
|
+
context 'when Rails and Sprockets::Rails is defined' do
|
119
|
+
let(:environment) { double('environment') }
|
120
|
+
let(:options) { double('options') }
|
121
|
+
|
122
|
+
before(:each) do
|
123
|
+
rails = double(version: 5)
|
124
|
+
|
125
|
+
stub_const('Sprockets::Rails', double)
|
126
|
+
stub_const('Rails', rails)
|
127
|
+
|
128
|
+
allow(rails).to receive(:application) do
|
129
|
+
double(
|
130
|
+
assets: environment,
|
131
|
+
config: double(assets: options),
|
132
|
+
)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'assigns sprockets_environment to Rails.application.assets' do
|
137
|
+
expect(capybara_client.sprockets_environment).to eq environment
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'assigns sprockets_options to Rails.application.config.assets' do
|
141
|
+
expect(capybara_client.sprockets_options).to eq options
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'when sprockets_environment is passed' do
|
145
|
+
let(:passed_environment) { double('passed-environment') }
|
146
|
+
let(:capybara_client) do
|
147
|
+
Percy::Capybara::Client.new(
|
148
|
+
sprockets_environment: passed_environment,
|
149
|
+
)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'assigns sprockets_environment to the passed environment' do
|
153
|
+
expect(capybara_client.sprockets_environment).to eq passed_environment
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context 'when sprockets_options is passed' do
|
158
|
+
let(:passed_options) { double('passed-options') }
|
159
|
+
let(:capybara_client) { Percy::Capybara::Client.new(sprockets_options: passed_options) }
|
160
|
+
|
161
|
+
it 'assigns sprockets_options to the passed options' do
|
162
|
+
expect(capybara_client.sprockets_options).to eq passed_options
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context 'when Rails or Sprockets::Rails is not defined' do
|
168
|
+
it 'does not assign sprockets_environment or sprockets_options' do
|
169
|
+
expect(capybara_client.sprockets_environment).to_not be
|
170
|
+
expect(capybara_client.sprockets_options).to_not be
|
171
|
+
end
|
172
|
+
end
|
117
173
|
end
|
118
174
|
|
119
175
|
describe '#initialize_loader' do
|
@@ -7,13 +7,13 @@ class RackAppWithIframe
|
|
7
7
|
end
|
8
8
|
|
9
9
|
RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
10
|
-
let(:loader) {
|
10
|
+
let(:loader) { Percy::Capybara::Loaders::BaseLoader.new }
|
11
11
|
|
12
12
|
describe '#root_html_resource', type: :feature, js: true do
|
13
13
|
it 'includes the root DOM HTML' do
|
14
14
|
visit '/'
|
15
15
|
|
16
|
-
loader =
|
16
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page)
|
17
17
|
resource = loader.root_html_resource
|
18
18
|
|
19
19
|
expect(resource.is_root).to be_truthy
|
@@ -27,7 +27,7 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
27
27
|
it 'excludes the iframe by default' do
|
28
28
|
visit '/test-iframe.html'
|
29
29
|
|
30
|
-
loader =
|
30
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page)
|
31
31
|
resources = loader.iframes_resources
|
32
32
|
expect(resources).to eq([])
|
33
33
|
end
|
@@ -35,7 +35,7 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
35
35
|
it 'includes the iframe with DOM HTML when include_iframes true' do
|
36
36
|
visit '/test-iframe.html'
|
37
37
|
|
38
|
-
loader =
|
38
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page, include_iframes: true)
|
39
39
|
resources = loader.iframes_resources
|
40
40
|
|
41
41
|
expect(resources.size).to eq(1) # doesn't include iframe to remote host
|
@@ -49,7 +49,7 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
49
49
|
|
50
50
|
expect(page).to receive(:within_frame).twice
|
51
51
|
.and_raise(Capybara::Poltergeist::FrameNotFound, 'Hi')
|
52
|
-
loader =
|
52
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page, include_iframes: true)
|
53
53
|
resources = loader.iframes_resources
|
54
54
|
expect(resources.size).to eq(0)
|
55
55
|
end
|
@@ -58,7 +58,7 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
58
58
|
|
59
59
|
expect(page).to receive(:within_frame).twice
|
60
60
|
.and_raise(Capybara::Poltergeist::TimeoutError, 'Hi')
|
61
|
-
loader =
|
61
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page, include_iframes: true)
|
62
62
|
resources = loader.iframes_resources
|
63
63
|
expect(resources.size).to eq(0)
|
64
64
|
end
|
@@ -78,36 +78,36 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
78
78
|
page_double = double('page')
|
79
79
|
|
80
80
|
expect(page_double).to receive(:current_url).and_return('/')
|
81
|
-
loader =
|
81
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page_double)
|
82
82
|
expect(loader.current_path).to eq('/')
|
83
83
|
|
84
84
|
expect(page_double).to receive(:current_url).and_return('/test')
|
85
|
-
loader =
|
85
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page_double)
|
86
86
|
expect(loader.current_path).to eq('/test')
|
87
87
|
|
88
88
|
expect(page_double).to receive(:current_url).and_return('/test/a')
|
89
|
-
loader =
|
89
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page_double)
|
90
90
|
expect(loader.current_path).to eq('/test/a')
|
91
91
|
|
92
92
|
# Rack::Test returns a full example.com URL, so we want to make sure it is stripped:
|
93
93
|
expect(page_double).to receive(:current_url).and_return('http://www.example.com/')
|
94
|
-
loader =
|
94
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page_double)
|
95
95
|
expect(loader.current_path).to eq('/')
|
96
96
|
|
97
97
|
expect(page_double).to receive(:current_url).and_return('about:srcdoc')
|
98
|
-
loader =
|
98
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page_double)
|
99
99
|
expect(loader.current_path).to eq('/about:srcdoc')
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
103
|
context 'Rack::Test', type: :feature do
|
104
|
-
before { Capybara.app = RackAppWithIframe }
|
105
|
-
after { Capybara.app = nil }
|
104
|
+
before(:each) { Capybara.app = RackAppWithIframe }
|
105
|
+
after(:each) { Capybara.app = nil }
|
106
106
|
|
107
107
|
describe '#iframes_resources' do
|
108
108
|
it 'is silently ignored' do
|
109
109
|
visit '/test-iframe.html'
|
110
|
-
loader =
|
110
|
+
loader = Percy::Capybara::Loaders::BaseLoader.new(page: page)
|
111
111
|
expect(loader.iframes_resources).to eq([])
|
112
112
|
end
|
113
113
|
end
|
@@ -115,7 +115,8 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
|
|
115
115
|
|
116
116
|
describe '#_uri_join' do
|
117
117
|
it 'joins files into a uri' do
|
118
|
-
expect(
|
118
|
+
expect(Percy::Capybara::Loaders::BaseLoader.new.send(:_uri_join, 'foo/', '/bar', 'baz'))
|
119
|
+
.to eq('foo/bar/baz')
|
119
120
|
end
|
120
121
|
end
|
121
122
|
end
|
@@ -12,7 +12,7 @@ RSpec.describe Percy::Capybara::Loaders::EmberCliRailsLoader do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
let(:loader) do
|
15
|
-
|
15
|
+
Percy::Capybara::Loaders::EmberCliRailsLoader.new(
|
16
16
|
mounted_apps,
|
17
17
|
sprockets_environment: environment,
|
18
18
|
sprockets_options: sprockets_options,
|
@@ -23,7 +23,7 @@ RSpec.describe Percy::Capybara::Loaders::EmberCliRailsLoader do
|
|
23
23
|
options = instance_double('options')
|
24
24
|
# Set specific files we want to compile. In normal use, this would be all asset files.
|
25
25
|
# For this test we just use .svg files
|
26
|
-
precompile_list = [
|
26
|
+
precompile_list = [/(?:\/|\\|\A)\.svg/]
|
27
27
|
allow(options).to receive(:precompile).and_return(precompile_list)
|
28
28
|
allow(options).to receive(:digest).and_return(digest_enabled)
|
29
29
|
options
|
@@ -32,7 +32,7 @@ RSpec.describe Percy::Capybara::Loaders::EmberCliRailsLoader do
|
|
32
32
|
describe 'initialize' do
|
33
33
|
context 'all args supplied' do
|
34
34
|
it 'successfully initializes' do
|
35
|
-
expect { loader }.
|
35
|
+
expect { loader }.to_not raise_error
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -54,12 +54,15 @@ RSpec.describe Percy::Capybara::Loaders::EmberCliRailsLoader do
|
|
54
54
|
let(:mount_path) { mounted_apps.values.first }
|
55
55
|
let(:dist_dir) { File.join(assets_dir, 'ember-cli', ember_app.to_s) }
|
56
56
|
let(:loader) do
|
57
|
-
|
58
|
-
|
57
|
+
Percy::Capybara::Loaders::EmberCliRailsLoader.new(
|
58
|
+
mounted_apps,
|
59
|
+
sprockets_environment: environment,
|
60
|
+
sprockets_options: sprockets_options,
|
61
|
+
)
|
59
62
|
end
|
60
63
|
|
61
64
|
context "called '#{ember_app}' and mounted at '#{mount_path}'" do
|
62
|
-
before do
|
65
|
+
before(:each) do
|
63
66
|
allow(loader).to receive(:_dist_path_for_app).and_return(dist_dir)
|
64
67
|
end
|
65
68
|
|
@@ -2,7 +2,13 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
|
|
2
2
|
let(:fake_page) { OpenStruct.new(current_url: 'http://localhost/foo') }
|
3
3
|
let(:assets_dir) { File.expand_path('../../client/test_data', __FILE__) }
|
4
4
|
let(:base_url) { '/url-prefix/' }
|
5
|
-
let(:loader)
|
5
|
+
let(:loader) do
|
6
|
+
Percy::Capybara::Loaders::FilesystemLoader.new(
|
7
|
+
base_url: base_url,
|
8
|
+
assets_dir: assets_dir,
|
9
|
+
page: fake_page,
|
10
|
+
)
|
11
|
+
end
|
6
12
|
|
7
13
|
describe 'initialize' do
|
8
14
|
context 'assets_dir not specified' do
|
@@ -31,12 +37,20 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
|
|
31
37
|
describe '#snapshot_resources', type: :feature, js: true do
|
32
38
|
it 'returns the root HTML' do
|
33
39
|
visit '/'
|
34
|
-
loader =
|
40
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
41
|
+
base_url: base_url,
|
42
|
+
assets_dir: assets_dir,
|
43
|
+
page: page,
|
44
|
+
)
|
35
45
|
expect(loader.snapshot_resources.collect(&:resource_url)).to match_array(['/'])
|
36
46
|
end
|
37
47
|
it 'returns the visited html resource' do
|
38
48
|
visit '/test-css.html'
|
39
|
-
loader =
|
49
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
50
|
+
base_url: base_url,
|
51
|
+
assets_dir: assets_dir,
|
52
|
+
page: page,
|
53
|
+
)
|
40
54
|
resource_urls = loader.snapshot_resources.collect(&:resource_url)
|
41
55
|
expect(resource_urls).to match_array(['/test-css.html'])
|
42
56
|
end
|
@@ -112,19 +126,31 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
|
|
112
126
|
expect(actual_urls).to match_array(expected_urls)
|
113
127
|
end
|
114
128
|
it 'works with different base_url configs' do
|
115
|
-
loader =
|
129
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
130
|
+
base_url: '/url-prefix/',
|
131
|
+
assets_dir: assets_dir,
|
132
|
+
)
|
116
133
|
expected_urls = loader.build_resources.collect(&:resource_url)
|
117
134
|
expect(expected_urls).to include('/url-prefix/css/font.css')
|
118
135
|
|
119
|
-
loader =
|
136
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
137
|
+
base_url: '/url-prefix',
|
138
|
+
assets_dir: assets_dir,
|
139
|
+
)
|
120
140
|
expected_urls = loader.build_resources.collect(&:resource_url)
|
121
141
|
expect(expected_urls).to include('/url-prefix/css/font.css')
|
122
142
|
|
123
|
-
loader =
|
143
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
144
|
+
base_url: '/',
|
145
|
+
assets_dir: assets_dir,
|
146
|
+
)
|
124
147
|
expected_urls = loader.build_resources.collect(&:resource_url)
|
125
148
|
expect(expected_urls).to include('/css/font.css')
|
126
149
|
|
127
|
-
loader =
|
150
|
+
loader = Percy::Capybara::Loaders::FilesystemLoader.new(
|
151
|
+
base_url: '',
|
152
|
+
assets_dir: assets_dir,
|
153
|
+
)
|
128
154
|
expected_urls = loader.build_resources.collect(&:resource_url)
|
129
155
|
expect(expected_urls).to include('/css/font.css')
|
130
156
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
2
2
|
let(:fake_page) { OpenStruct.new(current_url: 'http://localhost/foo') }
|
3
3
|
let(:asset_hostnames) { nil }
|
4
|
-
let(:loader)
|
4
|
+
let(:loader) do
|
5
|
+
Percy::Capybara::Loaders::NativeLoader.new(page: fake_page, asset_hostnames: asset_hostnames)
|
6
|
+
end
|
5
7
|
|
6
8
|
describe '#build_resources' do
|
7
9
|
it 'returns an empty list' do
|
@@ -11,12 +13,12 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
11
13
|
describe '#snapshot_resources', type: :feature, js: true do
|
12
14
|
it 'returns the root HTML' do
|
13
15
|
visit '/'
|
14
|
-
loader =
|
16
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
15
17
|
expect(loader.snapshot_resources.collect(&:resource_url)).to match_array(['/'])
|
16
18
|
end
|
17
19
|
it 'returns the root HTML and CSS resources' do
|
18
20
|
visit '/test-css.html'
|
19
|
-
loader =
|
21
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
20
22
|
resource_urls = loader.snapshot_resources.collect(&:resource_url)
|
21
23
|
expect(resource_urls).to match_array(
|
22
24
|
[
|
@@ -32,7 +34,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
32
34
|
end
|
33
35
|
it 'returns the font resources' do
|
34
36
|
visit '/test-font.html'
|
35
|
-
loader =
|
37
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
36
38
|
resource_urls = loader.snapshot_resources.collect(&:resource_url)
|
37
39
|
expect(resource_urls).to match_array(
|
38
40
|
[
|
@@ -44,7 +46,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
44
46
|
end
|
45
47
|
it 'returns the root HTML and image resources' do
|
46
48
|
visit '/test-images.html'
|
47
|
-
loader =
|
49
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
48
50
|
resource_urls = loader.snapshot_resources.collect(&:resource_url)
|
49
51
|
expect(resource_urls).to match_array(
|
50
52
|
[
|
@@ -65,15 +67,15 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
65
67
|
describe 'nonlocal.me', type: :feature, js: true do
|
66
68
|
let(:orig_app_host) { Capybara.app_host }
|
67
69
|
|
68
|
-
before do
|
70
|
+
before(:each) do
|
69
71
|
Capybara.app_host = Capybara.app_host.gsub('http://localhost:', 'http://localtest.me:')
|
70
72
|
end
|
71
|
-
after do
|
73
|
+
after(:each) do
|
72
74
|
Capybara.app_host = orig_app_host
|
73
75
|
end
|
74
76
|
it 'returns the root HTML and image resources' do
|
75
77
|
visit '/test-localtest-me-images.html'
|
76
|
-
loader =
|
78
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
77
79
|
resource_urls = loader.snapshot_resources.collect(&:resource_url)
|
78
80
|
expect(resource_urls).to eq(
|
79
81
|
[
|
@@ -159,7 +161,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
159
161
|
it 'includes all linked and imported stylesheets' do
|
160
162
|
visit '/test-css.html'
|
161
163
|
|
162
|
-
loader =
|
164
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
163
165
|
resources = loader.send(:_get_css_resources)
|
164
166
|
|
165
167
|
resource = find_resource(resources, '/css/base.css')
|
@@ -198,7 +200,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
198
200
|
it 'includes all images' do
|
199
201
|
visit '/test-images.html'
|
200
202
|
|
201
|
-
loader =
|
203
|
+
loader = Percy::Capybara::Loaders::NativeLoader.new(page: page)
|
202
204
|
loader.instance_variable_set(:@urls_referred_by_css, [])
|
203
205
|
resources = loader.send(:_get_image_resources)
|
204
206
|
|
@@ -225,7 +227,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
|
|
225
227
|
content = File.read(path)
|
226
228
|
# In Ruby 1.9.3 the SVG mimetype is not registered so our mini ruby webserver doesn't serve
|
227
229
|
# the correct content type. Allow either to work here so we can test older Rubies fully.
|
228
|
-
expect(resource.mimetype).to match(
|
230
|
+
expect(resource.mimetype).to match(/image\/svg\+xml|application\/octet-stream/)
|
229
231
|
expected_sha = Digest::SHA256.hexdigest(content)
|
230
232
|
expect(Digest::SHA256.hexdigest(resource.content)).to eq(expected_sha)
|
231
233
|
expect(resource.sha).to eq(expected_sha)
|
@@ -14,7 +14,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
14
14
|
File.expand_path('../../client/rails_public_test_data', __FILE__)
|
15
15
|
end
|
16
16
|
let(:loader) do
|
17
|
-
|
17
|
+
Percy::Capybara::Loaders::SprocketsLoader.new(
|
18
18
|
page: page,
|
19
19
|
sprockets_environment: environment,
|
20
20
|
sprockets_options: sprockets_options,
|
@@ -29,7 +29,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
29
29
|
let(:sprockets_options) do
|
30
30
|
options = double('options')
|
31
31
|
# Set specific files we want to compile. In normal use, this would be all asset files.
|
32
|
-
precompile_list = [
|
32
|
+
precompile_list = [/(?:\/|\\|\A)(base|digested)\.(css|js)$|\.map|\.png/]
|
33
33
|
allow(options).to receive(:precompile).and_return(precompile_list)
|
34
34
|
allow(options).to receive(:digest).and_return(digest_enabled)
|
35
35
|
options
|
@@ -37,7 +37,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
37
37
|
|
38
38
|
describe '#snapshot_resources' do
|
39
39
|
context 'Rack::Test', type: :feature do
|
40
|
-
before { Capybara.app = SimpleRackApp }
|
40
|
+
before(:each) { Capybara.app = SimpleRackApp }
|
41
41
|
|
42
42
|
it 'returns the root HTML resource' do
|
43
43
|
visit '/'
|
@@ -78,7 +78,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
78
78
|
expect(resources.first.content).to include('.colored-by-base')
|
79
79
|
end
|
80
80
|
context 'Rails app' do
|
81
|
-
|
81
|
+
def setup_rails_double
|
82
82
|
# Pretend like we're in a Rails app right now, all we care about is Rails.public_path.
|
83
83
|
rails_double = double('Rails')
|
84
84
|
# Pretend like the entire test_data directory is the public/ folder.
|
@@ -87,6 +87,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
87
87
|
expect(loader).to receive(:_rails).at_least(:once).and_return(rails_double)
|
88
88
|
end
|
89
89
|
it 'includes files from the public folder (non-asset-pipeline)' do
|
90
|
+
setup_rails_double
|
90
91
|
resources = loader.build_resources
|
91
92
|
# Weak test that more things are in this list, because it merges asset pipeline with public.
|
92
93
|
expect(resources.length).to be > 5
|
@@ -95,7 +96,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
95
96
|
expect(resource_urls).to include('/assets/images/bg-relative.png') # From asset pipeline.
|
96
97
|
expect(resource_urls).to include('/percy-from-public.svg') # Public merged into root.
|
97
98
|
expect(resource_urls).to include('/symlink_to_images/test.png') # Symlink in public dir.
|
98
|
-
expect(resource_urls).
|
99
|
+
expect(resource_urls).to_not include('/large-file-skipped.png') # Public merged into root.
|
99
100
|
end
|
100
101
|
context 'digest enabled' do
|
101
102
|
let(:digest_enabled) { true }
|
@@ -104,6 +105,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
|
|
104
105
|
# This makes sure that we correctly merge already-compiled files in the assets directory
|
105
106
|
# with ones from the asset pipeline. This means that Rails users who have
|
106
107
|
# `config.assets.digest = true` set can safely run "rake assets:precompile" before tests.
|
108
|
+
setup_rails_double
|
107
109
|
resources = loader.build_resources
|
108
110
|
expected_digest_url = \
|
109
111
|
'/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37' \
|
@@ -1,10 +1,10 @@
|
|
1
1
|
RSpec.describe Percy::Capybara do
|
2
|
-
before do
|
2
|
+
before(:each) do
|
3
3
|
Percy::Capybara.reset!
|
4
4
|
@original_env = ENV['TRAVIS_BUILD_ID']
|
5
5
|
ENV['TRAVIS_BUILD_ID'] = nil
|
6
6
|
end
|
7
|
-
after do
|
7
|
+
after(:each) do
|
8
8
|
ENV['TRAVIS_BUILD_ID'] = @original_env
|
9
9
|
ENV.delete('PERCY_ENABLE')
|
10
10
|
end
|
@@ -41,11 +41,11 @@ RSpec.describe Percy::Capybara do
|
|
41
41
|
end
|
42
42
|
describe '#finalize_build' do
|
43
43
|
it 'returns silently if no build is initialized' do
|
44
|
-
expect { Percy::Capybara.finalize_build }.
|
44
|
+
expect { Percy::Capybara.finalize_build }.to_not raise_error
|
45
45
|
end
|
46
46
|
it 'delegates to Percy::Capybara::Client' do
|
47
47
|
capybara_client = Percy::Capybara.capybara_client
|
48
|
-
expect(capybara_client).to receive(:enabled?).and_return(
|
48
|
+
expect(capybara_client).to receive(:enabled?).and_return(true)
|
49
49
|
build_data = {'data' => {'id' => 123}}
|
50
50
|
expect(capybara_client.client).to receive(:create_build).and_return(build_data).once
|
51
51
|
Percy::Capybara.initialize_build
|
@@ -55,9 +55,9 @@ RSpec.describe Percy::Capybara do
|
|
55
55
|
it 'silently skips if disabled' do
|
56
56
|
ENV['PERCY_ENABLE'] = '0'
|
57
57
|
capybara_client = Percy::Capybara.capybara_client
|
58
|
-
expect(capybara_client.client).
|
58
|
+
expect(capybara_client.client).to_not receive(:create_build)
|
59
59
|
Percy::Capybara.initialize_build
|
60
|
-
expect(capybara_client).
|
60
|
+
expect(capybara_client).to_not receive(:finalize_current_build)
|
61
61
|
Percy::Capybara.finalize_build
|
62
62
|
end
|
63
63
|
end
|
@@ -65,7 +65,7 @@ RSpec.describe Percy::Capybara do
|
|
65
65
|
it 'clears the current capybara_client' do
|
66
66
|
capybara_client = Percy::Capybara.capybara_client
|
67
67
|
Percy::Capybara.reset!
|
68
|
-
expect(Percy::Capybara.capybara_client).
|
68
|
+
expect(Percy::Capybara.capybara_client).to_not eq(capybara_client)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
describe '#disable!' do
|
@@ -82,7 +82,7 @@ RSpec.describe Percy::Capybara do
|
|
82
82
|
class DummyLoader < Percy::Capybara::Loaders::NativeLoader; end
|
83
83
|
|
84
84
|
it 'sets the current capybara client\'s loader' do
|
85
|
-
expect(Percy::Capybara.capybara_client.loader).
|
85
|
+
expect(Percy::Capybara.capybara_client.loader).to_not be
|
86
86
|
Percy::Capybara.reset!
|
87
87
|
|
88
88
|
Percy::Capybara.use_loader(DummyLoader)
|
data/spec/spec_helper.rb
CHANGED
@@ -38,7 +38,7 @@ RSpec.configure do |config|
|
|
38
38
|
Capybara::Poltergeist::Driver.new(app, timeout: 1, url_blacklist: ['i.imgur.com'])
|
39
39
|
end
|
40
40
|
|
41
|
-
config.before do
|
41
|
+
config.before(:each) do
|
42
42
|
WebMock.disable_net_connect!(allow_localhost: true)
|
43
43
|
end
|
44
44
|
config.before(:each, type: :feature) do
|
@@ -40,7 +40,7 @@ module TestHelpers
|
|
40
40
|
environment.append_path '.'
|
41
41
|
|
42
42
|
sprockets_options = double('sprockets_options')
|
43
|
-
allow(sprockets_options).to receive(:precompile).and_return([
|
43
|
+
allow(sprockets_options).to receive(:precompile).and_return([/(?:\/|\\|\A)base\.(css|js)$/])
|
44
44
|
allow(sprockets_options).to receive(:digest).and_return(false)
|
45
45
|
|
46
46
|
capybara_client.sprockets_environment = environment
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: percy-client
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: addressable
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +164,20 @@ dependencies:
|
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0.8'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: httpclient
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '2.8'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '2.8'
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
182
|
name: sprockets
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +192,20 @@ dependencies:
|
|
164
192
|
- - ">="
|
165
193
|
- !ruby/object:Gem::Version
|
166
194
|
version: 3.2.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: percy-style
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
167
209
|
description: ''
|
168
210
|
email:
|
169
211
|
- team@percy.io
|
@@ -174,7 +216,6 @@ files:
|
|
174
216
|
- ".gitignore"
|
175
217
|
- ".rspec"
|
176
218
|
- ".rubocop.yml"
|
177
|
-
- ".rubocop_todo.yml"
|
178
219
|
- ".travis.yml"
|
179
220
|
- ".yardopts"
|
180
221
|
- CHANGELOG.md
|
@@ -208,6 +249,7 @@ files:
|
|
208
249
|
- spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/percy-frontend-public.svg
|
209
250
|
- spec/lib/percy/capybara/client/rails_public_test_data/large-file-skipped.png
|
210
251
|
- spec/lib/percy/capybara/client/rails_public_test_data/percy-from-public.svg
|
252
|
+
- spec/lib/percy/capybara/client/rails_public_test_data/symlink_to_images
|
211
253
|
- spec/lib/percy/capybara/client/snapshots_spec.rb
|
212
254
|
- spec/lib/percy/capybara/client/symlink_test_data/test.png
|
213
255
|
- spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
|
@@ -269,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
311
|
version: '0'
|
270
312
|
requirements: []
|
271
313
|
rubyforge_project:
|
272
|
-
rubygems_version: 2.
|
314
|
+
rubygems_version: 2.6.13
|
273
315
|
signing_key:
|
274
316
|
specification_version: 4
|
275
317
|
summary: Percy::Capybara
|
@@ -283,6 +325,7 @@ test_files:
|
|
283
325
|
- spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/percy-frontend-public.svg
|
284
326
|
- spec/lib/percy/capybara/client/rails_public_test_data/large-file-skipped.png
|
285
327
|
- spec/lib/percy/capybara/client/rails_public_test_data/percy-from-public.svg
|
328
|
+
- spec/lib/percy/capybara/client/rails_public_test_data/symlink_to_images
|
286
329
|
- spec/lib/percy/capybara/client/snapshots_spec.rb
|
287
330
|
- spec/lib/percy/capybara/client/symlink_test_data/test.png
|
288
331
|
- spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
|
data/.rubocop_todo.yml
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2017-02-08 20:09:02 -0800 using RuboCop version 0.47.1.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
|
-
# Offense count: 8
|
10
|
-
Metrics/AbcSize:
|
11
|
-
Max: 54
|
12
|
-
|
13
|
-
# Offense count: 27
|
14
|
-
# Configuration parameters: CountComments, ExcludedMethods.
|
15
|
-
Metrics/BlockLength:
|
16
|
-
Max: 300
|
17
|
-
|
18
|
-
# Offense count: 1
|
19
|
-
# Configuration parameters: CountComments.
|
20
|
-
Metrics/ClassLength:
|
21
|
-
Max: 200
|
22
|
-
|
23
|
-
# Offense count: 5
|
24
|
-
Metrics/CyclomaticComplexity:
|
25
|
-
Max: 11
|
26
|
-
|
27
|
-
# Offense count: 11
|
28
|
-
# Configuration parameters: CountComments.
|
29
|
-
Metrics/MethodLength:
|
30
|
-
Max: 57
|
31
|
-
|
32
|
-
# Offense count: 2
|
33
|
-
Metrics/PerceivedComplexity:
|
34
|
-
Max: 12
|
35
|
-
|
36
|
-
# Offense count: 43
|
37
|
-
# Configuration parameters: SkipBlocks.
|
38
|
-
RSpec/DescribedClass:
|
39
|
-
Exclude:
|
40
|
-
- 'spec/lib/percy/capybara/client_spec.rb'
|
41
|
-
- 'spec/lib/percy/capybara/http_fetcher_spec.rb'
|
42
|
-
- 'spec/lib/percy/capybara_spec.rb'
|
43
|
-
|
44
|
-
# Offense count: 29
|
45
|
-
# Configuration parameters: Max.
|
46
|
-
RSpec/ExampleLength:
|
47
|
-
Exclude:
|
48
|
-
- 'spec/lib/percy/capybara/client/builds_spec.rb'
|
49
|
-
- 'spec/lib/percy/capybara/client/snapshots_spec.rb'
|
50
|
-
- 'spec/lib/percy/capybara/client_spec.rb'
|
51
|
-
- 'spec/lib/percy/capybara/loaders/base_loader_spec.rb'
|
52
|
-
- 'spec/lib/percy/capybara/loaders/filesystem_loader_spec.rb'
|
53
|
-
- 'spec/lib/percy/capybara/loaders/native_loader_spec.rb'
|
54
|
-
- 'spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb'
|
55
|
-
- 'spec/lib/percy/capybara_spec.rb'
|
56
|
-
|
57
|
-
# Offense count: 1
|
58
|
-
# Configuration parameters: AssignmentOnly.
|
59
|
-
RSpec/InstanceVariable:
|
60
|
-
Exclude:
|
61
|
-
- 'spec/lib/percy/capybara_spec.rb'
|
62
|
-
|
63
|
-
# Offense count: 42
|
64
|
-
RSpec/MultipleExpectations:
|
65
|
-
Max: 29
|
66
|
-
|
67
|
-
# Offense count: 1
|
68
|
-
# Configuration parameters: Max.
|
69
|
-
RSpec/NestedGroups:
|
70
|
-
Enabled: false
|
71
|
-
|
72
|
-
# Offense count: 10
|
73
|
-
# Configuration parameters: IgnoreSymbolicNames.
|
74
|
-
RSpec/VerifiedDoubles:
|
75
|
-
Exclude:
|
76
|
-
- 'spec/lib/percy/capybara/client/builds_spec.rb'
|
77
|
-
- 'spec/lib/percy/capybara/client_spec.rb'
|
78
|
-
- 'spec/lib/percy/capybara/loaders/base_loader_spec.rb'
|
79
|
-
- 'spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb'
|
80
|
-
- 'spec/lib/percy/capybara_spec.rb'
|
81
|
-
- 'spec/support/test_helpers.rb'
|
82
|
-
|
83
|
-
# Offense count: 1
|
84
|
-
Style/StructInheritance:
|
85
|
-
Exclude:
|
86
|
-
- 'lib/percy/capybara/httpfetcher.rb'
|