percy-capybara 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45e93cfdc34a6ab2afca7f8f21602f6e722d8c2e
4
- data.tar.gz: c88c63e7071b3a653858ee8a9bb381d8120b57ef
3
+ metadata.gz: 40bc91d41c82651dd6873aa89f1680b7fb85560b
4
+ data.tar.gz: a324146ad3bafa211c29c412e36f91d41051ff2b
5
5
  SHA512:
6
- metadata.gz: 307fb95d7ccc3443d47210244fb3046643b10841d4e0e8547302816d53da5ead96726f071b8632f5d66611b194f4028a5bbb8fd21d29c5e727035a03b1ada557
7
- data.tar.gz: d61b94fcffdb72c50dfae42044adc69732321a62aa1c11563466c114ea70307cd9fd32f936ce1b149f46ed157a07b63b1e682fc30bfa6f63cba9103686d0cf2f
6
+ metadata.gz: 26dd09ccac1d8f7770ad95ea97699e9f876570701c67e1779ecfb7ebda990a6856df23f3443f2cad7cedade62853e97d189fe0304a9a55ee9b659e93e37d9a6d
7
+ data.tar.gz: 7c6c5452139cc6c948447264740158eafd5b1f6a16b44931b4ea8402129d358c174c3f32b2faed1cb9994002bfdbeb679179ebba27769aa4d58d1bcb37adc5e5
@@ -1,3 +1,4 @@
1
+ require 'pathname'
1
2
  require 'percy/capybara'
2
3
 
3
4
  module Percy
@@ -124,9 +125,7 @@ module Percy
124
125
  def _resources_from_dir(root_dir, base_url: '/')
125
126
  resources = []
126
127
 
127
- Find.find(root_dir).each do |path|
128
- # Skip directories.
129
- next unless FileTest.file?(path)
128
+ _find_files(root_dir).each do |path|
130
129
  # Skip certain extensions.
131
130
  next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
132
131
  # Skip large files, these are hopefully downloads and not used in page rendering.
@@ -143,6 +142,21 @@ module Percy
143
142
  resources
144
143
  end
145
144
 
145
+ # A simplified version of Find.find that only returns files and follows symlinks.
146
+ def _find_files(*paths)
147
+ paths.flatten!
148
+ paths.map! { |p| Pathname.new(p) }
149
+ files = []
150
+ paths.each do |path|
151
+ if path.file?
152
+ files << path.to_s
153
+ else
154
+ files = files.concat(_find_files(path.children))
155
+ end
156
+ end
157
+ files
158
+ end
159
+
146
160
  def _uri_join(*paths)
147
161
  # We must swap File::SEPARATOR for '/' here because on Windows File.join
148
162
  # will use backslashes and this is a URL.
@@ -64,24 +64,9 @@ module Percy
64
64
  # Load resources from the public/ directory, if a Rails app.
65
65
  if _rails
66
66
  public_path = _rails.public_path.to_s
67
- Find.find(public_path).each do |path|
68
- # Skip directories.
69
- next unless FileTest.file?(path)
70
- # Skip certain extensions.
71
- next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
72
- # Skip large files, these are hopefully downloads and not used in page rendering.
73
- next if File.size(path) > MAX_FILESIZE_BYTES
74
-
75
- # Strip the public_path from the beginning of the resource_url.
76
- # This assumes that everything in the Rails public/ directory is served at the root
77
- # of the app.
78
- resource_url = path.sub(public_path, '')
79
-
67
+ resources += _resources_from_dir(public_path).reject do |resource|
80
68
  # Skip precompiled files already included via the asset pipeline.
81
- next if loaded_resource_urls.include?(resource_url)
82
-
83
- sha = Digest::SHA256.hexdigest(File.read(path))
84
- resources << Percy::Client::Resource.new(resource_url, sha: sha, path: path)
69
+ loaded_resource_urls.include?(resource.resource_url)
85
70
  end
86
71
  end
87
72
 
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '3.0.0'.freeze
3
+ VERSION = '3.0.1'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ spec/lib/percy/capybara/client/rails_public_test_data/../symlink_test_data
@@ -71,7 +71,6 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
71
71
  '/images/srcset-second.png',
72
72
  '/index.html',
73
73
  '/js/base.js',
74
- '/public/percy-from-public.svg',
75
74
  '/test-css.html',
76
75
  '/test-font.html',
77
76
  '/test-iframe.html',
@@ -104,7 +103,6 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
104
103
  '/url-prefix/images/srcset-second.png',
105
104
  '/url-prefix/index.html',
106
105
  '/url-prefix/js/base.js',
107
- '/url-prefix/public/percy-from-public.svg',
108
106
  '/url-prefix/test-css.html',
109
107
  '/url-prefix/test-font.html',
110
108
  '/url-prefix/test-iframe.html',
@@ -7,6 +7,12 @@ class SimpleRackApp
7
7
  end
8
8
 
9
9
  RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
10
+ let(:test_data_path) do
11
+ File.expand_path('../../client/test_data', __FILE__)
12
+ end
13
+ let(:rails_public_test_data_path) do
14
+ File.expand_path('../../client/rails_public_test_data', __FILE__)
15
+ end
10
16
  let(:loader) do
11
17
  described_class.new(
12
18
  page: page,
@@ -15,8 +21,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
15
21
  )
16
22
  end
17
23
  let(:environment) do
18
- root = File.expand_path('../../client/test_data', __FILE__)
19
- environment = Sprockets::Environment.new(root)
24
+ environment = Sprockets::Environment.new(test_data_path)
20
25
  environment.append_path '.'
21
26
  environment
22
27
  end
@@ -78,7 +83,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
78
83
  rails_double = double('Rails')
79
84
  # Pretend like the entire test_data directory is the public/ folder.
80
85
  expect(rails_double).to receive(:application).and_return(nil)
81
- expect(rails_double).to receive(:public_path).and_return(environment.root + '/public')
86
+ expect(rails_double).to receive(:public_path).and_return(rails_public_test_data_path)
82
87
  expect(loader).to receive(:_rails).at_least(:once).and_return(rails_double)
83
88
  end
84
89
  it 'includes files from the public folder (non-asset-pipeline)' do
@@ -89,6 +94,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
89
94
  resource_urls = resources.map(&:resource_url)
90
95
  expect(resource_urls).to include('/assets/images/bg-relative.png') # From asset pipeline.
91
96
  expect(resource_urls).to include('/percy-from-public.svg') # Public merged into root.
97
+ expect(resource_urls).to include('/symlink_to_images/test.png') # Symlink in public dir.
92
98
  expect(resource_urls).not_to include('/large-file-skipped.png') # Public merged into root.
93
99
  end
94
100
  context 'digest enabled' do
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.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perceptual Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-24 00:00:00.000000000 Z
11
+ date: 2017-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: percy-client
@@ -204,7 +204,11 @@ files:
204
204
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/assets/percy-frontend.svg
205
205
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/index.html
206
206
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/percy-frontend-public.svg
207
+ - spec/lib/percy/capybara/client/rails_public_test_data/large-file-skipped.png
208
+ - spec/lib/percy/capybara/client/rails_public_test_data/percy-from-public.svg
209
+ - spec/lib/percy/capybara/client/rails_public_test_data/symlink_to_images
207
210
  - spec/lib/percy/capybara/client/snapshots_spec.rb
211
+ - spec/lib/percy/capybara/client/symlink_test_data/test.png
208
212
  - spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
209
213
  - spec/lib/percy/capybara/client/test_data/assets/images/large-file-skipped.png
210
214
  - spec/lib/percy/capybara/client/test_data/css/base.css
@@ -228,8 +232,6 @@ files:
228
232
  - spec/lib/percy/capybara/client/test_data/images/srcset-second.png
229
233
  - spec/lib/percy/capybara/client/test_data/index.html
230
234
  - spec/lib/percy/capybara/client/test_data/js/base.js
231
- - spec/lib/percy/capybara/client/test_data/public/large-file-skipped.png
232
- - spec/lib/percy/capybara/client/test_data/public/percy-from-public.svg
233
235
  - spec/lib/percy/capybara/client/test_data/test-css.html
234
236
  - spec/lib/percy/capybara/client/test_data/test-font.html
235
237
  - spec/lib/percy/capybara/client/test_data/test-iframe.html
@@ -265,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
267
  version: '0'
266
268
  requirements: []
267
269
  rubyforge_project:
268
- rubygems_version: 2.4.8
270
+ rubygems_version: 2.6.7
269
271
  signing_key:
270
272
  specification_version: 4
271
273
  summary: Percy::Capybara
@@ -277,7 +279,11 @@ test_files:
277
279
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/assets/percy-frontend.svg
278
280
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/index.html
279
281
  - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/percy-frontend-public.svg
282
+ - spec/lib/percy/capybara/client/rails_public_test_data/large-file-skipped.png
283
+ - spec/lib/percy/capybara/client/rails_public_test_data/percy-from-public.svg
284
+ - spec/lib/percy/capybara/client/rails_public_test_data/symlink_to_images
280
285
  - spec/lib/percy/capybara/client/snapshots_spec.rb
286
+ - spec/lib/percy/capybara/client/symlink_test_data/test.png
281
287
  - spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
282
288
  - spec/lib/percy/capybara/client/test_data/assets/images/large-file-skipped.png
283
289
  - spec/lib/percy/capybara/client/test_data/css/base.css
@@ -301,8 +307,6 @@ test_files:
301
307
  - spec/lib/percy/capybara/client/test_data/images/srcset-second.png
302
308
  - spec/lib/percy/capybara/client/test_data/index.html
303
309
  - spec/lib/percy/capybara/client/test_data/js/base.js
304
- - spec/lib/percy/capybara/client/test_data/public/large-file-skipped.png
305
- - spec/lib/percy/capybara/client/test_data/public/percy-from-public.svg
306
310
  - spec/lib/percy/capybara/client/test_data/test-css.html
307
311
  - spec/lib/percy/capybara/client/test_data/test-font.html
308
312
  - spec/lib/percy/capybara/client/test_data/test-iframe.html