percy-capybara 2.4.0 → 2.4.1

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.
@@ -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