percy-capybara 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,26 +6,25 @@ require 'pathname'
6
6
  module Percy
7
7
  module Capybara
8
8
  module Loaders
9
-
10
9
  # Resource loader that looks for resources in the specified folder.
11
10
  class FilesystemLoader < BaseLoader
12
11
  SKIP_RESOURCE_EXTENSIONS = [
13
- '.map', # Ignore source maps.
14
- '.gz', # Ignore gzipped files.
15
- ]
16
- MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
12
+ '.map', # Ignore source maps.
13
+ '.gz', # Ignore gzipped files.
14
+ ].freeze
15
+ MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
17
16
 
18
17
  def initialize(options = {})
19
18
  # @assets_dir should point to a _compiled_ static assets directory, not source assets.
20
19
  @assets_dir = options[:assets_dir]
21
20
  @base_url = options[:base_url] || ''
22
21
 
23
- raise ArgumentError.new('assets_dir is required') if @assets_dir.nil? || @assets_dir == ''
24
- if !Pathname.new(@assets_dir).absolute?
25
- raise ArgumentError.new("assets_dir needs to be an absolute path. Received: #{@assets_dir}")
22
+ raise ArgumentError, 'assets_dir is required' if @assets_dir.nil? || @assets_dir == ''
23
+ unless Pathname.new(@assets_dir).absolute?
24
+ raise ArgumentError, "assets_dir needs to be an absolute path. Received: #{@assets_dir}"
26
25
  end
27
- if !Dir.exist?(@assets_dir)
28
- raise ArgumentError.new("assets_dir provided was not found. Received: #{@assets_dir}")
26
+ unless Dir.exist?(@assets_dir)
27
+ raise ArgumentError, "assets_dir provided was not found. Received: #{@assets_dir}"
29
28
  end
30
29
 
31
30
  super
@@ -39,7 +38,7 @@ module Percy
39
38
  resources = []
40
39
  Find.find(@assets_dir).each do |path|
41
40
  # Skip directories.
42
- next if !FileTest.file?(path)
41
+ next unless FileTest.file?(path)
43
42
  # Skip certain extensions.
44
43
  next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
45
44
  # Skip large files, these are hopefully downloads and not used in page rendering.
@@ -5,7 +5,6 @@ require 'uri'
5
5
  module Percy
6
6
  module Capybara
7
7
  module Loaders
8
-
9
8
  # Resource loader that uses the native Capybara browser interface to discover resources.
10
9
  # This loader uses JavaScript to discover page resources, so specs must be tagged with
11
10
  # "js: true" because the default Rack::Test driver does not support executing JavaScript.
@@ -73,12 +72,13 @@ module Percy
73
72
  resource_urls = _evaluate_script(page, script)
74
73
 
75
74
  resource_urls.each do |url|
76
- next if !_should_include_url?(url)
75
+ next unless _should_include_url?(url)
77
76
  response = _fetch_resource_url(url)
78
77
  _absolute_url_to_relative!(url, _current_host_port)
79
- next if !response
78
+ next unless response
80
79
  resources << Percy::Client::Resource.new(
81
- url, mimetype: 'text/css', content: response.body)
80
+ url, mimetype: 'text/css', content: response.body
81
+ )
82
82
  end
83
83
  resources
84
84
  end
@@ -92,7 +92,7 @@ module Percy
92
92
  # Find all image tags on the page.
93
93
  page.all('img').each do |image_element|
94
94
  srcs = []
95
- srcs << image_element[:src] if !image_element[:src].nil?
95
+ srcs << image_element[:src] unless image_element[:src].nil?
96
96
 
97
97
  srcset_raw_urls = image_element[:srcset] || ''
98
98
  temp_urls = srcset_raw_urls.split(',')
@@ -152,7 +152,7 @@ module Percy
152
152
  # Skip duplicates.
153
153
  next if resources.find { |r| r.resource_url == resource_url }
154
154
 
155
- next if !_should_include_url?(resource_url)
155
+ next unless _should_include_url?(resource_url)
156
156
 
157
157
  # Fetch the images.
158
158
  # TODO(fotinakis): this can be pretty inefficient for image-heavy pages because the
@@ -161,10 +161,11 @@ module Percy
161
161
  # development server, so it may not be so bad. Re-evaluate if this becomes an issue.
162
162
  response = _fetch_resource_url(resource_url)
163
163
  _absolute_url_to_relative!(resource_url, _current_host_port)
164
- next if !response
164
+ next unless response
165
165
 
166
166
  resources << Percy::Client::Resource.new(
167
- resource_url, mimetype: response.content_type, content: response.body)
167
+ resource_url, mimetype: response.content_type, content: response.body
168
+ )
168
169
  end
169
170
  resources
170
171
  end
@@ -173,8 +174,9 @@ module Percy
173
174
  # @private
174
175
  def _fetch_resource_url(url)
175
176
  response = Percy::Capybara::HttpFetcher.fetch(url)
176
- if !response
177
- STDERR.puts "[percy] Warning: failed to fetch page resource, this might be a bug: #{url}"
177
+ unless response
178
+ STDERR.puts '[percy] Warning: failed to fetch page resource, ' \
179
+ "this might be a bug: #{url}"
178
180
  return nil
179
181
  end
180
182
  response
@@ -216,15 +218,14 @@ module Percy
216
218
 
217
219
  # @private
218
220
  def _same_server?(url, host_port)
219
- url.start_with?(host_port + "/") || url == host_port
221
+ url.start_with?(host_port + '/') || url == host_port
220
222
  end
221
223
 
222
224
  # @private
223
225
  def _absolute_url_to_relative!(url, host_port)
224
- url.gsub!(host_port + '/','/') if url.start_with?(host_port + "/")
226
+ url.gsub!(host_port + '/', '/') if url.start_with?(host_port + '/')
225
227
  end
226
228
  private :_absolute_url_to_relative!
227
-
228
229
  end
229
230
  end
230
231
  end
@@ -14,10 +14,10 @@ module Percy
14
14
  attr_reader :sprockets_options
15
15
 
16
16
  SKIP_RESOURCE_EXTENSIONS = [
17
- '.map', # Ignore source maps.
18
- '.gz', # Ignore gzipped files.
19
- ]
20
- MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
17
+ '.map', # Ignore source maps.
18
+ '.gz', # Ignore gzipped files.
19
+ ].freeze
20
+ MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
21
21
 
22
22
  def initialize(options = {})
23
23
  @sprockets_environment = options[:sprockets_environment]
@@ -47,7 +47,7 @@ module Percy
47
47
 
48
48
  if defined?(ActionController)
49
49
  # Ask Rails where this asset is (this handles asset_hosts, digest paths, etc.).
50
- resource_url = ActionController::Base.helpers.assets_dir(logical_path)
50
+ resource_url = ActionController::Base.helpers.asset_path(logical_path)
51
51
  else
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?
@@ -66,7 +66,7 @@ module Percy
66
66
  public_path = _rails.public_path.to_s
67
67
  Find.find(public_path).each do |path|
68
68
  # Skip directories.
69
- next if !FileTest.file?(path)
69
+ next unless FileTest.file?(path)
70
70
  # Skip certain extensions.
71
71
  next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
72
72
  # Skip large files, these are hopefully downloads and not used in page rendering.
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '2.4.0'
3
+ VERSION = '2.4.1'.freeze
4
4
  end
5
5
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~> 3.2'
26
26
  spec.add_development_dependency 'capybara', '~> 2.4'
27
- spec.add_development_dependency 'capybara-webkit', '>= 1.6'
27
+ spec.add_development_dependency 'capybara-webkit', '>= 1.6', '< 1.12.0' # 1.12.0 breaks specs
28
28
  spec.add_development_dependency 'selenium-webdriver'
29
29
  spec.add_development_dependency 'webmock', '~> 1'
30
30
  spec.add_development_dependency 'mime-types', '< 3' # For Ruby 1.9 testing support.
@@ -1,10 +1,12 @@
1
1
  RSpec.describe Percy::Capybara::Client::Builds do
2
2
  let(:enabled) { true }
3
3
  let(:capybara_client) { Percy::Capybara::Client.new(enabled: enabled) }
4
- let(:builds_api_url) { "https://percy.io/api/v1/repos/#{Percy::Client::Environment.repo}/builds/" }
4
+ let(:builds_api_url) do
5
+ "https://percy.io/api/v1/repos/#{Percy::Client::Environment.repo}/builds/"
6
+ end
5
7
 
6
8
  describe '#initialize_build', type: :feature, js: true do
7
- before(:each) { setup_sprockets(capybara_client) }
9
+ before { setup_sprockets(capybara_client) }
8
10
 
9
11
  context 'percy is not enabled' do
10
12
  let(:enabled) { false }
@@ -31,7 +33,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
31
33
  'id' => '123',
32
34
  'type' => 'builds',
33
35
  'relationships' => {
34
- 'self' => "/api/v1/snapshots/123",
36
+ 'self' => '/api/v1/snapshots/123',
35
37
  'missing-resources' => {
36
38
  'data' => [
37
39
  {
@@ -48,7 +50,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
48
50
  .to_return(status: 201, body: mock_response.to_json)
49
51
 
50
52
  # Stub resource upload.
51
- resources_stub = stub_request(:post, "https://percy.io/api/v1/builds/123/resources/")
53
+ resources_stub = stub_request(:post, 'https://percy.io/api/v1/builds/123/resources/')
52
54
  .to_return(status: 201, body: {success: true}.to_json)
53
55
  capybara_client.initialize_build
54
56
 
@@ -69,7 +71,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
69
71
  'id' => '123',
70
72
  'type' => 'builds',
71
73
  'relationships' => {
72
- 'self' => "/api/v1/snapshots/123",
74
+ 'self' => '/api/v1/snapshots/123',
73
75
  'missing-resources' => {
74
76
  'data' => [
75
77
  {
@@ -147,7 +149,7 @@ RSpec.describe Percy::Capybara::Client::Builds do
147
149
  end
148
150
  end
149
151
  describe '#_upload_missing_build_resources', type: :feature, js: true do
150
- before(:each) { setup_sprockets(capybara_client) }
152
+ before { setup_sprockets(capybara_client) }
151
153
 
152
154
  it 'returns 0 if there are no missing build resources to upload' do
153
155
  mock_response = {
@@ -161,8 +163,8 @@ RSpec.describe Percy::Capybara::Client::Builds do
161
163
  capybara_client.initialize_build
162
164
 
163
165
  loader = capybara_client.initialize_loader
164
- expect(capybara_client.send(:_upload_missing_build_resources, loader.build_resources)).to eq(0)
166
+ result = capybara_client.send(:_upload_missing_build_resources, loader.build_resources)
167
+ expect(result).to eq(0)
165
168
  end
166
169
  end
167
-
168
170
  end
@@ -8,7 +8,6 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
8
8
 
9
9
  describe '#snapshot', type: :feature, js: true do
10
10
  context 'simple page with no resources' do
11
- before(:each) { setup_sprockets(capybara_client) }
12
11
  let(:loader) { capybara_client.initialize_loader(page: page) }
13
12
  let(:build_resource_sha) { loader.build_resources.first.sha }
14
13
  let(:snapshot_resource_sha) { loader.snapshot_resources.first.sha }
@@ -18,7 +17,7 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
18
17
  'id' => '123',
19
18
  'type' => 'builds',
20
19
  'relationships' => {
21
- 'self' => "/api/v1/snapshots/123",
20
+ 'self' => '/api/v1/snapshots/123',
22
21
  'missing-resources' => {},
23
22
  },
24
23
  },
@@ -30,7 +29,7 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
30
29
  'id' => '256',
31
30
  'type' => 'snapshots',
32
31
  'relationships' => {
33
- 'self' => "/api/v1/snapshots/123",
32
+ 'self' => '/api/v1/snapshots/123',
34
33
  'missing-resources' => {
35
34
  'data' => [
36
35
  {
@@ -43,18 +42,20 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
43
42
  },
44
43
  }
45
44
  end
46
- before :each do
45
+ before do
46
+ setup_sprockets(capybara_client)
47
+
47
48
  visit '/'
48
- loader # Force evaluation now.
49
+ loader # Force evaluation now.
49
50
  repo = Percy::Client::Environment.repo
50
51
  stub_request(:post, "https://percy.io/api/v1/repos/#{repo}/builds/")
51
52
  .to_return(status: 201, body: mock_build_response.to_json)
52
53
  stub_request(:post, 'https://percy.io/api/v1/builds/123/snapshots/')
53
54
  .to_return(status: 201, body: mock_snapshot_response.to_json)
54
- stub_request(:post, "https://percy.io/api/v1/builds/123/resources/")
55
+ stub_request(:post, 'https://percy.io/api/v1/builds/123/resources/')
55
56
  .with(body: /#{snapshot_resource_sha}/)
56
57
  .to_return(status: 201, body: {success: true}.to_json)
57
- stub_request(:post, "https://percy.io/api/v1/snapshots/256/finalize")
58
+ stub_request(:post, 'https://percy.io/api/v1/snapshots/256/finalize')
58
59
  .to_return(status: 200, body: {success: true}.to_json)
59
60
  capybara_client.initialize_build
60
61
  end
@@ -71,11 +72,12 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
71
72
  end
72
73
  it 'passes through options to the percy client if given' do
73
74
  expect(capybara_client.client).to receive(:create_snapshot)
74
- .with(anything, anything, {name: 'foo', widths: [320, 1024], enable_javascript: true})
75
+ .with(anything, anything, name: 'foo', widths: [320, 1024], enable_javascript: true)
75
76
  .and_call_original
76
77
 
77
78
  result = capybara_client.snapshot(
78
- page, name: 'foo', widths: [320, 1024], enable_javascript: true)
79
+ page, name: 'foo', widths: [320, 1024], enable_javascript: true
80
+ )
79
81
  expect(result).to eq(true)
80
82
  expect(capybara_client.failed?).to eq(false)
81
83
  end
@@ -83,7 +85,7 @@ RSpec.describe Percy::Capybara::Client::Snapshots, type: :feature do
83
85
  error = Percy::Client::BadRequestError.new(400, '', '', '', 'snapshot error msg')
84
86
  expect(capybara_client.client).to receive(:create_snapshot).and_raise(error)
85
87
  expect(capybara_client.snapshot(page)).to eq(nil)
86
- expect(capybara_client.failed?).to eq(false) # Build is not failed.
88
+ expect(capybara_client.failed?).to eq(false) # Build is not failed.
87
89
  end
88
90
  it 'safely handles connection errors' do
89
91
  expect(capybara_client.client).to receive(:create_snapshot)
@@ -6,8 +6,8 @@ RSpec.describe Percy::Capybara::Client do
6
6
  end
7
7
  describe '#enabled?' do
8
8
  context 'when required environment variables set' do
9
- before(:each) { set_required_env_variables }
10
- after(:each) { clear_percy_env_variables }
9
+ before { set_required_env_variables }
10
+ after { clear_percy_env_variables }
11
11
 
12
12
  it 'is true when PERCY_ENABLE is 1' do
13
13
  ENV['PERCY_ENABLE'] = '1'
@@ -28,7 +28,7 @@ RSpec.describe Percy::Capybara::Client do
28
28
  end
29
29
 
30
30
  context 'when required environment variables not set' do
31
- before(:each) { clear_percy_env_variables }
31
+ before { clear_percy_env_variables }
32
32
 
33
33
  it 'is false' do
34
34
  ENV.delete 'PERCY_ENABLE'
@@ -131,7 +131,8 @@ RSpec.describe Percy::Capybara::Client do
131
131
 
132
132
  context 'when no configuration has been set' do
133
133
  it 'returns a NativeLoader' do
134
- expect(capybara_client.initialize_loader.class).to eq(Percy::Capybara::Loaders::NativeLoader)
134
+ expect(capybara_client.initialize_loader.class)
135
+ .to eq(Percy::Capybara::Loaders::NativeLoader)
135
136
  end
136
137
  end
137
138
 
@@ -4,7 +4,8 @@ RSpec.describe Percy::Capybara::HttpFetcher do
4
4
 
5
5
  # Slightly magical hash, just a SHA-256 sum of the image above.
6
6
  expect(Digest::SHA256.hexdigest(response.body)).to eq(
7
- '4beb51550bef8e9e30d37ea8c13658e99bb01722062f218185e419af5ad93e13')
7
+ '4beb51550bef8e9e30d37ea8c13658e99bb01722062f218185e419af5ad93e13'
8
+ )
8
9
  expect(response.content_type).to eq('image/png')
9
10
  end
10
11
  it 'returns nil if fetch failed' do
@@ -14,4 +15,3 @@ RSpec.describe Percy::Capybara::HttpFetcher do
14
15
  # expect(Percy::Capybara::HttpFetcher.fetch('bad-url')).to be_nil
15
16
  end
16
17
  end
17
-
@@ -1,7 +1,7 @@
1
1
  IFRAME_PATH = File.expand_path('../../client/testdata/test-iframe.html', __FILE__)
2
2
 
3
3
  class RackAppWithIframe
4
- def self.call(env)
4
+ def self.call(_env)
5
5
  [200, {}, File.read(IFRAME_PATH)]
6
6
  end
7
7
  end
@@ -75,8 +75,8 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
75
75
  end
76
76
 
77
77
  context 'Rack::Test', type: :feature do
78
- before(:each) { Capybara.app = RackAppWithIframe }
79
- after(:each) { Capybara.app = nil }
78
+ before { Capybara.app = RackAppWithIframe }
79
+ after { Capybara.app = nil }
80
80
 
81
81
  describe '#iframes_resources' do
82
82
  it 'is silently ignored' do
@@ -87,5 +87,3 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
87
87
  end
88
88
  end
89
89
  end
90
-
91
-
@@ -18,7 +18,7 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
18
18
  end
19
19
  end
20
20
  context 'assets_dir doesn\'t exist' do
21
- let(:assets_dir) { File.expand_path("../../client/testdata-doesnt-exist", __FILE__) }
21
+ let(:assets_dir) { File.expand_path('../../client/testdata-doesnt-exist', __FILE__) }
22
22
  it 'raises an error' do
23
23
  expect { loader }.to raise_error(ArgumentError)
24
24
  end
@@ -42,9 +42,12 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
42
42
  describe '#build_resources' do
43
43
  context 'assets_dir including all test files' do
44
44
  it 'returns all included assets as resources' do
45
- actual_paths = loader.build_resources.collect { |resource| resource.path.gsub(assets_dir, '') }
45
+ actual_paths = loader.build_resources.collect do |resource|
46
+ resource.path.gsub(assets_dir, '')
47
+ end
46
48
  expected_paths = [
47
- '/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css',
49
+ '/assets/css/digested-f3420c6aee71c137a3ca39727052811ba' \
50
+ 'e84b2f37d898f4db242e20656a1579e.css',
48
51
  '/css/base.css',
49
52
  '/css/digested.css',
50
53
  '/css/imports.css',
@@ -72,9 +75,10 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
72
75
  ]
73
76
  expect(actual_paths).to eq(expected_paths)
74
77
 
75
- expected_urls = loader.build_resources.collect { |resource| resource.resource_url }
78
+ expected_urls = loader.build_resources.collect(&:resource_url)
76
79
  actual_urls = [
77
- '/url-prefix/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css',
80
+ '/url-prefix/assets/css/digested-f3420c6aee71c137a3ca' \
81
+ '39727052811bae84b2f37d898f4db242e20656a1579e.css',
78
82
  '/url-prefix/css/base.css',
79
83
  '/url-prefix/css/digested.css',
80
84
  '/url-prefix/css/imports.css',
@@ -1,5 +1,5 @@
1
1
  RSpec.describe Percy::Capybara::Loaders::NativeLoader do
2
- let(:fake_page) { OpenStruct.new(current_url: "http://localhost/foo")}
2
+ let(:fake_page) { OpenStruct.new(current_url: 'http://localhost/foo') }
3
3
  let(:loader) { described_class.new(page: fake_page) }
4
4
 
5
5
  describe '#build_resources' do
@@ -18,13 +18,13 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
18
18
  loader = described_class.new(page: page)
19
19
  resource_urls = loader.snapshot_resources.collect(&:resource_url)
20
20
  expect(resource_urls).to match_array([
21
- "/test-css.html",
22
- "/css/base.css",
23
- "/css/imports.css",
24
- "/css/level0-imports.css",
25
- "/css/level1-imports.css",
26
- "/css/level2-imports.css",
27
- "/css/simple-imports.css",
21
+ '/test-css.html',
22
+ '/css/base.css',
23
+ '/css/imports.css',
24
+ '/css/level0-imports.css',
25
+ '/css/level1-imports.css',
26
+ '/css/level2-imports.css',
27
+ '/css/simple-imports.css',
28
28
  ])
29
29
  end
30
30
  it 'returns the root HTML and image resources' do
@@ -32,36 +32,36 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
32
32
  loader = described_class.new(page: page)
33
33
  resource_urls = loader.snapshot_resources.collect(&:resource_url)
34
34
  expect(resource_urls).to match_array([
35
- "/test-images.html",
36
- "/images/img-relative.png",
37
- "/images/img-relative-to-root.png",
38
- "/images/percy.svg",
39
- "/images/srcset-base.png",
40
- "/images/srcset-first.png",
41
- "/images/srcset-second.png",
42
- "/images/bg-relative.png",
43
- "/images/bg-relative-to-root.png",
44
- "/images/bg-stacked.png"
35
+ '/test-images.html',
36
+ '/images/img-relative.png',
37
+ '/images/img-relative-to-root.png',
38
+ '/images/percy.svg',
39
+ '/images/srcset-base.png',
40
+ '/images/srcset-first.png',
41
+ '/images/srcset-second.png',
42
+ '/images/bg-relative.png',
43
+ '/images/bg-relative-to-root.png',
44
+ '/images/bg-stacked.png',
45
45
  ])
46
46
  end
47
47
  end
48
- describe "nonlocal.me", type: :feature, js: true do
49
- before :each do
50
- @orig_app_host = Capybara.app_host
48
+ describe 'nonlocal.me', type: :feature, js: true do
49
+ let(:orig_app_host) { Capybara.app_host }
50
+ before do
51
51
  Capybara.app_host = Capybara.app_host.gsub('http://localhost:', 'http://localtest.me:')
52
52
  end
53
- after :each do
54
- Capybara.app_host = @orig_app_host
53
+ after do
54
+ Capybara.app_host = orig_app_host
55
55
  end
56
56
  it 'returns the root HTML and image resources' do
57
57
  visit '/test-localtest-me-images.html'
58
58
  loader = described_class.new(page: page)
59
59
  resource_urls = loader.snapshot_resources.collect(&:resource_url)
60
60
  expect(resource_urls).to eq([
61
- "/test-localtest-me-images.html",
62
- "/images/img-relative.png"
61
+ '/test-localtest-me-images.html',
62
+ '/images/img-relative.png',
63
63
  ])
64
- expect(loader.snapshot_resources.collect(&:is_root)).to eq([true,nil])
64
+ expect(loader.snapshot_resources.collect(&:is_root)).to eq([true, nil])
65
65
  end
66
66
  end
67
67
  describe '#_should_include_url?' do
@@ -97,19 +97,19 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
97
97
  expect(loader._should_include_url?('http://example.com/foo')).to eq(false)
98
98
  expect(loader._should_include_url?('https://example.com/foo')).to eq(false)
99
99
  end
100
- context "for nonlocal hosts" do
101
- let(:fake_page) { OpenStruct.new(current_url: "http://foo:123/") }
102
- it "returns true for the same host port" do
100
+ context 'for nonlocal hosts' do
101
+ let(:fake_page) { OpenStruct.new(current_url: 'http://foo:123/') }
102
+ it 'returns true for the same host port' do
103
103
  expect(loader._should_include_url?('http://foo:123/')).to eq(true)
104
104
  expect(loader._should_include_url?('http://foo:123/bar')).to eq(true)
105
105
  end
106
- it "returns false for different port" do
106
+ it 'returns false for different port' do
107
107
  expect(loader._should_include_url?('http://foo/')).to eq(false)
108
108
  expect(loader._should_include_url?('http://foo/bar')).to eq(false)
109
109
  expect(loader._should_include_url?('http://foo:1234/')).to eq(false)
110
110
  expect(loader._should_include_url?('http://foo:1234/bar')).to eq(false)
111
111
  end
112
- it "returns false for different host" do
112
+ it 'returns false for different host' do
113
113
  expect(loader._should_include_url?('http://afoo:123/')).to eq(false)
114
114
  expect(loader._should_include_url?('http://afoo:123/bar')).to eq(false)
115
115
  end
@@ -146,7 +146,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
146
146
  expect(resource.sha).to eq(Digest::SHA256.hexdigest(resource.content))
147
147
 
148
148
  resource = find_resource(resources, '/css/level2-imports.css')
149
- expect(resource.content).to include(".colored-by-level2-imports { color: red; }")
149
+ expect(resource.content).to include('.colored-by-level2-imports { color: red; }')
150
150
  expect(resource.sha).to eq(Digest::SHA256.hexdigest(resource.content))
151
151
 
152
152
  expect(resources.length).to eq(6)
@@ -239,15 +239,15 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
239
239
 
240
240
  resource_urls = resources.collect(&:resource_url)
241
241
  expect(resource_urls).to match_array([
242
- "/images/img-relative.png",
243
- "/images/img-relative-to-root.png",
244
- "/images/percy.svg",
245
- "/images/srcset-base.png",
246
- "/images/srcset-first.png",
247
- "/images/srcset-second.png",
248
- "/images/bg-relative.png",
249
- "/images/bg-relative-to-root.png",
250
- "/images/bg-stacked.png"
242
+ '/images/img-relative.png',
243
+ '/images/img-relative-to-root.png',
244
+ '/images/percy.svg',
245
+ '/images/srcset-base.png',
246
+ '/images/srcset-first.png',
247
+ '/images/srcset-second.png',
248
+ '/images/bg-relative.png',
249
+ '/images/bg-relative-to-root.png',
250
+ '/images/bg-stacked.png',
251
251
  ])
252
252
  expect(resources.collect(&:is_root).uniq).to match_array([nil])
253
253
  end