percy-capybara 2.1.0 → 2.1.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: 8ec1811094152205c30db1c67c183b14e85d3a52
4
- data.tar.gz: 039f35ab33a64b6b14d0d3328da291a824b9e0c1
3
+ metadata.gz: 6498403c9a10399a29d67eafa17d576300d62fa1
4
+ data.tar.gz: 5159d6ff409edac2d447b71990050b46b235f6e8
5
5
  SHA512:
6
- metadata.gz: acd5e2f499016bbcf3e9fcd1321d2a601258117ba275553dc600502dfb32a13dffe8c9ad6189748738562d37372df781586f5472aec6c071a1e0dca1139fba7b
7
- data.tar.gz: d3ec4106d244bdffb26f7a79506e42b291df27a92e4f53f939835f117cba4e3e95105c9f4f0a6e4f1dd3da249608b882865d79ed5bc4d70cdaa8a9a963077df4
6
+ metadata.gz: 24ca4f78314dbfd15f3575b1199a56713c79b11909b863e9e932cfe1c11e3ef3bf6111e50b6f49100f35949b4498eab23055a2bc930ffab8e2db08bab4064123
7
+ data.tar.gz: 57f2014995d9afc020debf852b4f0829c9b20564c8a831f22c257f43e7ab550d7b6fee9955000fb36cb91645585c7919197ee9a839cc4d42b1bcfacde07ce88e
data/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
1
  /.bundle/
2
- /Gemfile.lock
3
2
  /.yardoc
4
3
  /_yardoc/
5
4
  /coverage/
data/Gemfile.lock ADDED
@@ -0,0 +1,130 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ percy-capybara (2.1.1)
5
+ percy-client (~> 1.4)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.4.0)
11
+ capybara (2.6.2)
12
+ addressable
13
+ mime-types (>= 1.16)
14
+ nokogiri (>= 1.3.3)
15
+ rack (>= 1.0.0)
16
+ rack-test (>= 0.5.4)
17
+ xpath (~> 2.0)
18
+ capybara-webkit (1.8.0)
19
+ capybara (>= 2.3.0, < 2.7.0)
20
+ json
21
+ childprocess (0.5.9)
22
+ ffi (~> 1.0, >= 1.0.11)
23
+ coderay (1.1.0)
24
+ concurrent-ruby (1.0.0)
25
+ crack (0.4.3)
26
+ safe_yaml (~> 1.0.0)
27
+ diff-lcs (1.2.5)
28
+ faraday (0.9.2)
29
+ multipart-post (>= 1.2, < 3)
30
+ ffi (1.9.10)
31
+ formatador (0.2.5)
32
+ guard (2.13.0)
33
+ formatador (>= 0.2.4)
34
+ listen (>= 2.7, <= 4.0)
35
+ lumberjack (~> 1.0)
36
+ nenv (~> 0.1)
37
+ notiffany (~> 0.0)
38
+ pry (>= 0.9.12)
39
+ shellany (~> 0.0)
40
+ thor (>= 0.18.1)
41
+ guard-compat (1.2.1)
42
+ guard-rspec (4.6.4)
43
+ guard (~> 2.1)
44
+ guard-compat (~> 1.1)
45
+ rspec (>= 2.99.0, < 4.0)
46
+ hashdiff (0.2.3)
47
+ httpclient (2.8.0)
48
+ json (1.8.3)
49
+ listen (3.0.6)
50
+ rb-fsevent (>= 0.9.3)
51
+ rb-inotify (>= 0.9.7)
52
+ lumberjack (1.0.10)
53
+ method_source (0.8.2)
54
+ mime-types (2.99)
55
+ mini_portile2 (2.0.0)
56
+ multi_json (1.11.2)
57
+ multipart-post (2.0.0)
58
+ nenv (0.3.0)
59
+ nokogiri (1.6.7.2)
60
+ mini_portile2 (~> 2.0.0.rc2)
61
+ notiffany (0.0.8)
62
+ nenv (~> 0.1)
63
+ shellany (~> 0.0)
64
+ percy-client (1.4.1)
65
+ faraday (>= 0.9)
66
+ httpclient (>= 2.6)
67
+ pry (0.10.3)
68
+ coderay (~> 1.1.0)
69
+ method_source (~> 0.8.1)
70
+ slop (~> 3.4)
71
+ rack (1.6.4)
72
+ rack-test (0.6.3)
73
+ rack (>= 1.0)
74
+ rake (10.5.0)
75
+ rb-fsevent (0.9.7)
76
+ rb-inotify (0.9.7)
77
+ ffi (>= 0.5.0)
78
+ rspec (3.4.0)
79
+ rspec-core (~> 3.4.0)
80
+ rspec-expectations (~> 3.4.0)
81
+ rspec-mocks (~> 3.4.0)
82
+ rspec-core (3.4.2)
83
+ rspec-support (~> 3.4.0)
84
+ rspec-expectations (3.4.0)
85
+ diff-lcs (>= 1.2.0, < 2.0)
86
+ rspec-support (~> 3.4.0)
87
+ rspec-mocks (3.4.1)
88
+ diff-lcs (>= 1.2.0, < 2.0)
89
+ rspec-support (~> 3.4.0)
90
+ rspec-support (3.4.1)
91
+ rubyzip (1.1.7)
92
+ safe_yaml (1.0.4)
93
+ selenium-webdriver (2.51.0)
94
+ childprocess (~> 0.5)
95
+ multi_json (~> 1.0)
96
+ rubyzip (~> 1.0)
97
+ websocket (~> 1.0)
98
+ shellany (0.0.1)
99
+ slop (3.6.0)
100
+ sprockets (3.5.2)
101
+ concurrent-ruby (~> 1.0)
102
+ rack (> 1, < 3)
103
+ thor (0.19.1)
104
+ webmock (1.22.6)
105
+ addressable (>= 2.3.6)
106
+ crack (>= 0.3.2)
107
+ hashdiff
108
+ websocket (1.2.2)
109
+ xpath (2.0.0)
110
+ nokogiri (~> 1.3)
111
+
112
+ PLATFORMS
113
+ ruby
114
+
115
+ DEPENDENCIES
116
+ bundler (~> 1.7)
117
+ capybara (~> 2.4)
118
+ capybara-webkit (>= 1.6)
119
+ faraday (>= 0.8)
120
+ guard-rspec
121
+ mime-types (< 3)
122
+ percy-capybara!
123
+ rake (~> 10.0)
124
+ rspec (~> 3.2)
125
+ selenium-webdriver
126
+ sprockets (>= 3.2.0)
127
+ webmock (~> 1)
128
+
129
+ BUNDLED WITH
130
+ 1.10.6
@@ -1,6 +1,7 @@
1
1
  require 'percy/capybara/loaders/base_loader'
2
2
  require 'digest'
3
3
  require 'find'
4
+ require 'set'
4
5
  require 'uri'
5
6
 
6
7
  module Percy
@@ -13,7 +14,6 @@ module Percy
13
14
  attr_reader :sprockets_options
14
15
 
15
16
  SKIP_RESOURCE_EXTENSIONS = [
16
- '.js', # Ignore JavaScript.
17
17
  '.map', # Ignore source maps.
18
18
  ]
19
19
 
@@ -31,6 +31,7 @@ module Percy
31
31
 
32
32
  def build_resources
33
33
  resources = []
34
+ loaded_resource_urls = Set.new
34
35
 
35
36
  # Load resources from the asset pipeline.
36
37
  _asset_logical_paths.each do |logical_path|
@@ -51,6 +52,8 @@ module Percy
51
52
  end
52
53
 
53
54
  next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(resource_url))
55
+
56
+ loaded_resource_urls.add(resource_url)
54
57
  resources << Percy::Client::Resource.new(resource_url, sha: sha, content: content)
55
58
  end
56
59
 
@@ -68,11 +71,12 @@ module Percy
68
71
  # of the app.
69
72
  resource_url = path.sub(public_path, '')
70
73
 
71
- sha = Digest::SHA256.hexdigest(File.read(path))
74
+ # Skip precompiled files already included via the asset pipeline.
75
+ next if loaded_resource_urls.include?(resource_url)
72
76
 
77
+ sha = Digest::SHA256.hexdigest(File.read(path))
73
78
  resources << Percy::Client::Resource.new(resource_url, sha: sha, path: path)
74
79
  end
75
-
76
80
  end
77
81
 
78
82
  resources
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '2.1.0'
3
+ VERSION = '2.1.1'
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ -- Do not change this, these contents generate a specific digested filename for testing. --
@@ -20,10 +20,13 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
20
20
  environment.append_path '.'
21
21
  environment
22
22
  end
23
+ let(:digest_enabled) { false }
23
24
  let(:sprockets_options) do
24
25
  options = double('options')
25
- allow(options).to receive(:precompile).and_return([/(?:\/|\\|\A)base\.(css|js)$|\.map/])
26
- allow(options).to receive(:digest).and_return(false)
26
+ # Set specific files we want to compile. In normal use, this would be all CSS and JS files.
27
+ precompile_list = [/(?:\/|\\|\A)(base|digested)\.(css|js)$|\.map/]
28
+ allow(options).to receive(:precompile).and_return(precompile_list)
29
+ allow(options).to receive(:digest).and_return(digest_enabled)
27
30
  options
28
31
  end
29
32
 
@@ -52,22 +55,41 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
52
55
  describe '#build_resources', type: :feature do
53
56
  it 'returns "build resources" from filtered sprockets paths' do
54
57
  resources = loader.build_resources
55
- expect(resources.map { |r| r.resource_url }).to eq(["/assets/css/base.css"])
58
+ expected_resources = [
59
+ '/assets/css/base.css',
60
+ '/assets/css/digested.css',
61
+ '/assets/js/base.js',
62
+ ]
63
+ expect(resources.map { |r| r.resource_url }).to eq(expected_resources)
56
64
  expect(resources.first.content).to include('.colored-by-base')
57
65
  end
58
66
  context 'Rails app' do
59
- it 'includes files from the public folder (non-asset-pipeline)' do
60
-
67
+ before(:each) do
61
68
  # Pretend like we're in a Rails app right now, all we care about is Rails.public_path.
62
69
  rails_double = double('Rails')
63
70
  # Pretend like the entire testdata directory is the public/ folder.
64
71
  expect(rails_double).to receive(:public_path).and_return(environment.root)
65
72
  expect(loader).to receive(:_rails).at_least(:once).and_return(rails_double)
66
-
73
+ end
74
+ it 'includes files from the public folder (non-asset-pipeline)' do
67
75
  resources = loader.build_resources
68
76
  expect(resources.length).to be > 5 # Weak test that more things are in this list.
69
77
  expect(resources.map { |r| r.resource_url }).to include('/images/percy.svg')
70
78
  end
79
+ context 'digest enabled' do
80
+ let(:digest_enabled) { true }
81
+
82
+ it 'only includes pre-compiled, digested files once' do
83
+ # This makes sure that we correctly merge already-compiled files in the assets directory
84
+ # with ones from the asset pipeline. This means that Rails users who have
85
+ # `config.assets.digest = true` set can safely run "rake assets:precompile" before tests.
86
+ resources = loader.build_resources
87
+ expected_digest_url = \
88
+ '/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css'
89
+ digested_resources = resources.select { |r| r.resource_url == expected_digest_url }
90
+ expect(digested_resources.length).to eq(1)
91
+ end
92
+ end
71
93
  end
72
94
  end
73
95
  end
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: 2.1.0
4
+ version: 2.1.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: 2016-05-18 00:00:00.000000000 Z
11
+ date: 2016-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: percy-client
@@ -176,6 +176,7 @@ files:
176
176
  - ".travis.yml"
177
177
  - ".yardopts"
178
178
  - Gemfile
179
+ - Gemfile.lock
179
180
  - Guardfile
180
181
  - LICENSE
181
182
  - README.md
@@ -193,7 +194,9 @@ files:
193
194
  - percy-capybara.gemspec
194
195
  - spec/lib/percy/capybara/client/builds_spec.rb
195
196
  - spec/lib/percy/capybara/client/snapshots_spec.rb
197
+ - spec/lib/percy/capybara/client/testdata/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
196
198
  - spec/lib/percy/capybara/client/testdata/css/base.css
199
+ - spec/lib/percy/capybara/client/testdata/css/digested.css
197
200
  - spec/lib/percy/capybara/client/testdata/css/imports.css
198
201
  - spec/lib/percy/capybara/client/testdata/css/level0-imports.css
199
202
  - spec/lib/percy/capybara/client/testdata/css/level1-imports.css
@@ -241,14 +244,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
244
  version: '0'
242
245
  requirements: []
243
246
  rubyforge_project:
244
- rubygems_version: 2.4.5
247
+ rubygems_version: 2.2.2
245
248
  signing_key:
246
249
  specification_version: 4
247
250
  summary: Percy::Capybara
248
251
  test_files:
249
252
  - spec/lib/percy/capybara/client/builds_spec.rb
250
253
  - spec/lib/percy/capybara/client/snapshots_spec.rb
254
+ - spec/lib/percy/capybara/client/testdata/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
251
255
  - spec/lib/percy/capybara/client/testdata/css/base.css
256
+ - spec/lib/percy/capybara/client/testdata/css/digested.css
252
257
  - spec/lib/percy/capybara/client/testdata/css/imports.css
253
258
  - spec/lib/percy/capybara/client/testdata/css/level0-imports.css
254
259
  - spec/lib/percy/capybara/client/testdata/css/level1-imports.css
@@ -276,4 +281,3 @@ test_files:
276
281
  - spec/lib/percy/capybara_spec.rb
277
282
  - spec/spec_helper.rb
278
283
  - spec/support/test_helpers.rb
279
- has_rdoc: