percy-capybara 2.5.1 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/lib/percy/capybara/client.rb +14 -3
  4. data/lib/percy/capybara/loaders/base_loader.rb +35 -0
  5. data/lib/percy/capybara/loaders/ember_cli_rails_loader.rb +50 -0
  6. data/lib/percy/capybara/loaders/filesystem_loader.rb +1 -22
  7. data/lib/percy/capybara/version.rb +1 -1
  8. data/spec/lib/percy/capybara/client/{testdata/images/percy.svg → ember_test_data/ember-cli/admin/assets/percy-admin.svg} +0 -0
  9. data/spec/lib/percy/capybara/client/{testdata → ember_test_data/ember-cli/admin}/index.html +0 -0
  10. data/spec/lib/percy/capybara/client/{testdata/public/percy-from-public.svg → ember_test_data/ember-cli/frontend/assets/percy-frontend.svg} +0 -0
  11. data/spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/index.html +1 -0
  12. data/spec/lib/percy/capybara/client/{testdata → test_data}/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css +0 -0
  13. data/spec/lib/percy/capybara/client/{testdata → test_data}/assets/images/large-file-skipped.png +0 -0
  14. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/base.css +0 -0
  15. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/digested.css +0 -0
  16. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/font.css +0 -0
  17. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/imports.css +0 -0
  18. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/level0-imports.css +0 -0
  19. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/level1-imports.css +0 -0
  20. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/level2-imports.css +0 -0
  21. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/simple-imports.css +0 -0
  22. data/spec/lib/percy/capybara/client/{testdata → test_data}/css/source.css.map +0 -0
  23. data/spec/lib/percy/capybara/client/{testdata → test_data}/iframe.html +0 -0
  24. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/bg-relative-to-root.png +0 -0
  25. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/bg-relative.png +0 -0
  26. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/bg-stacked.png +0 -0
  27. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/img-relative-to-root.png +0 -0
  28. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/img-relative.png +0 -0
  29. data/spec/lib/percy/capybara/client/test_data/images/percy.svg +34 -0
  30. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/srcset-base.png +0 -0
  31. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/srcset-first.png +0 -0
  32. data/spec/lib/percy/capybara/client/{testdata → test_data}/images/srcset-second.png +0 -0
  33. data/spec/lib/percy/capybara/client/test_data/index.html +1 -0
  34. data/spec/lib/percy/capybara/client/{testdata → test_data}/js/base.js +0 -0
  35. data/spec/lib/percy/capybara/client/{testdata → test_data}/public/large-file-skipped.png +0 -0
  36. data/spec/lib/percy/capybara/client/test_data/public/percy-from-public.svg +34 -0
  37. data/spec/lib/percy/capybara/client/{testdata → test_data}/test-css.html +0 -0
  38. data/spec/lib/percy/capybara/client/{testdata → test_data}/test-font.html +0 -0
  39. data/spec/lib/percy/capybara/client/{testdata → test_data}/test-iframe.html +0 -0
  40. data/spec/lib/percy/capybara/client/{testdata → test_data}/test-images.html +0 -0
  41. data/spec/lib/percy/capybara/client/{testdata → test_data}/test-localtest-me-images.html +0 -0
  42. data/spec/lib/percy/capybara/loaders/base_loader_spec.rb +7 -1
  43. data/spec/lib/percy/capybara/loaders/ember_cli_rails_loader_spec.rb +82 -0
  44. data/spec/lib/percy/capybara/loaders/filesystem_loader_spec.rb +5 -5
  45. data/spec/lib/percy/capybara/loaders/native_loader_spec.rb +9 -9
  46. data/spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb +2 -2
  47. data/spec/spec_helper.rb +3 -3
  48. data/spec/support/test_helpers.rb +1 -1
  49. metadata +73 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ba34ea074b4869f59bc97456d10244725ab00c4
4
- data.tar.gz: c582901df940381843c536adae6b12cf925de398
3
+ metadata.gz: ed27f266ef0e576151ac70938bddc265d93a7326
4
+ data.tar.gz: 253e5f65a6f255e98dc52e88d2f9a806cb091b96
5
5
  SHA512:
6
- metadata.gz: 8a6b638286d1e7be3567b2e72c8a3ae8ba24e0da8f0cb3491d6caf49b1a1f22424db100ed1d168b335aa86bde8f05b5dc4c7f5f607e55360ba68b3e277b6090d
7
- data.tar.gz: 551f496366ba9956bb969d1b9d400cace00bcb87faa62059bb298077d445793e9ffd51216563cc5c97c68dd669871e7d271535cc8d72b84ce4cf8e7d3ad6ac10
6
+ metadata.gz: 9e6754504ab9ac10ba315f47ef1282bae231f2821a7d91d7c06c78eea33ac44923fcaff8c89425999351b29a6c48abab8fb5353e37ad41358eeedde79bd0afb5
7
+ data.tar.gz: 286f90600e73f448a0a99157eb022add0e0eb03f1ef7c79eea4459b6ef6ab0e1396d0cfabe63456363bc71c468f722e60477750935897a88fc9e02965c09b911
data/.rubocop.yml CHANGED
@@ -58,6 +58,9 @@ Style/TrailingCommaInLiteral:
58
58
  RSpec/MessageSpies:
59
59
  EnforcedStyle: receive
60
60
 
61
+ RSpec/ExampleLength:
62
+ Enabled: false
63
+
61
64
  Style/FileName:
62
65
  Exclude:
63
66
  - 'Gemfile'
@@ -3,6 +3,7 @@ require 'percy/capybara/client/snapshots'
3
3
  require 'percy/capybara/loaders/filesystem_loader'
4
4
  require 'percy/capybara/loaders/native_loader'
5
5
  require 'percy/capybara/loaders/sprockets_loader'
6
+ require 'percy/capybara/loaders/ember_cli_rails_loader'
6
7
 
7
8
  module Percy
8
9
  module Capybara
@@ -83,6 +84,14 @@ module Percy
83
84
 
84
85
  def initialize_loader(options = {})
85
86
  merged_options = loader_options.merge(options)
87
+
88
+ is_sprockets = sprockets_environment && sprockets_options
89
+
90
+ if is_sprockets
91
+ merged_options[:sprockets_environment] = sprockets_environment
92
+ merged_options[:sprockets_options] = sprockets_options
93
+ end
94
+
86
95
  if loader
87
96
  case loader
88
97
  when :filesystem
@@ -91,14 +100,16 @@ module Percy
91
100
  when :native
92
101
  Percy.logger.debug { 'Using native_loader to discover assets (slow).' }
93
102
  Percy::Capybara::Loaders::NativeLoader.new(merged_options)
103
+ when :ember_cli_rails
104
+ Percy.logger.debug { 'Using ember_cli_rails_loader to discover assets.' }
105
+ mounted_apps = merged_options.delete(:mounted_apps)
106
+ Percy::Capybara::Loaders::EmberCliRailsLoader.new(mounted_apps, merged_options)
94
107
  else
95
108
  Percy.logger.debug { 'Using a custom loader to discover assets.' }
96
109
  loader.new(merged_options)
97
110
  end
98
- elsif sprockets_environment && sprockets_options
111
+ elsif is_sprockets
99
112
  Percy.logger.debug { 'Using sprockets_loader to discover assets.' }
100
- merged_options[:sprockets_environment] = sprockets_environment
101
- merged_options[:sprockets_options] = sprockets_options
102
113
  Percy::Capybara::Loaders::SprocketsLoader.new(merged_options)
103
114
  else
104
115
  unless @warned_about_native_loader
@@ -34,6 +34,13 @@ module Percy
34
34
  "(/[^\\s\"']*)?",
35
35
  )
36
36
 
37
+ SKIP_RESOURCE_EXTENSIONS = [
38
+ '.map', # Ignore source maps.
39
+ '.gz', # Ignore gzipped files.
40
+ ].freeze
41
+
42
+ MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
43
+
37
44
  attr_reader :page
38
45
 
39
46
  # @param [Capybara::Session] page The Capybara page.
@@ -109,6 +116,34 @@ module Percy
109
116
  rescue ::Capybara::NotSupportedByDriverError
110
117
  []
111
118
  end
119
+
120
+ def _resources_from_dir(root_dir, base_url: '/')
121
+ resources = []
122
+
123
+ Find.find(root_dir).each do |path|
124
+ # Skip directories.
125
+ next unless FileTest.file?(path)
126
+ # Skip certain extensions.
127
+ next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
128
+ # Skip large files, these are hopefully downloads and not used in page rendering.
129
+ next if File.size(path) > MAX_FILESIZE_BYTES
130
+
131
+ # Replace the assets_dir with the base_url to generate the resource_url
132
+ resource_url = _uri_join(base_url, path.sub(root_dir.to_s, ''))
133
+
134
+ sha = Digest::SHA256.hexdigest(File.read(path))
135
+
136
+ resources << Percy::Client::Resource.new(resource_url, sha: sha, path: path)
137
+ end
138
+
139
+ resources
140
+ end
141
+
142
+ def _uri_join(*paths)
143
+ # We must swap File::SEPARATOR for '/' here because on Windows File.join
144
+ # will use backslashes and this is a URL.
145
+ File.join(paths).gsub(File::SEPARATOR, '/')
146
+ end
112
147
  end
113
148
  end
114
149
  end
@@ -0,0 +1,50 @@
1
+ require 'percy/capybara/loaders/sprockets_loader'
2
+
3
+ module Percy
4
+ module Capybara
5
+ module Loaders
6
+ class EmberCliRailsLoader < SprocketsLoader
7
+ attr_reader :mounted_apps
8
+
9
+ EMBER_ASSETS_DIR = 'assets'.freeze
10
+
11
+ def initialize(mounted_apps, options = {})
12
+ super(options)
13
+
14
+ raise 'mounted_apps is required' unless mounted_apps
15
+ @mounted_apps = mounted_apps
16
+ end
17
+
18
+ def build_resources
19
+ resources = []
20
+
21
+ @mounted_apps.map do |app_name, mount_path|
22
+ # public assets path for this particular ember app. If the app is mounted on /admin
23
+ # the output would be: /admin/assets
24
+ base_assets_url = File.join(mount_path, EMBER_ASSETS_DIR)
25
+
26
+ # full path on disk to the assets for this ember app
27
+ # e.g. /Users/djones/Code/rails-ember-app/tmp/ember-cli/apps/frontend
28
+ dist_path = _dist_path_for_app(app_name)
29
+
30
+ # full path to the directory on disk where ember stores assets for this ember app
31
+ # e.g. /Users/djones/Code/rails-ember-app/tmp/ember-cli/apps/frontend/assets
32
+ ember_assets_path = File.join(dist_path, EMBER_ASSETS_DIR)
33
+
34
+ resources += _resources_from_dir(ember_assets_path, base_url: base_assets_url)
35
+ end
36
+
37
+ resources += super # adds sprockets resources from Rails
38
+ end
39
+
40
+ def _dist_path_for_app(app_name)
41
+ _ember_cli.apps[app_name].dist_path
42
+ end
43
+
44
+ def _ember_cli
45
+ EmberCli if defined?(EmberCli)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -8,12 +8,6 @@ module Percy
8
8
  module Loaders
9
9
  # Resource loader that looks for resources in the specified folder.
10
10
  class FilesystemLoader < BaseLoader
11
- SKIP_RESOURCE_EXTENSIONS = [
12
- '.map', # Ignore source maps.
13
- '.gz', # Ignore gzipped files.
14
- ].freeze
15
- MAX_FILESIZE_BYTES = 15 * 1024**2 # 15 MB.
16
-
17
11
  def initialize(options = {})
18
12
  # @assets_dir should point to a _compiled_ static assets directory, not source assets.
19
13
  @assets_dir = options[:assets_dir]
@@ -35,22 +29,7 @@ module Percy
35
29
  end
36
30
 
37
31
  def build_resources
38
- resources = []
39
- Find.find(@assets_dir).each do |path|
40
- # Skip directories.
41
- next unless FileTest.file?(path)
42
- # Skip certain extensions.
43
- next if SKIP_RESOURCE_EXTENSIONS.include?(File.extname(path))
44
- # Skip large files, these are hopefully downloads and not used in page rendering.
45
- next if File.size(path) > MAX_FILESIZE_BYTES
46
-
47
- # Replace the assets_dir with the base_url to generate the resource_url
48
- resource_url = @base_url.chomp('/') + path.sub(@assets_dir, '')
49
-
50
- sha = Digest::SHA256.hexdigest(File.read(path))
51
- resources << Percy::Client::Resource.new(resource_url, sha: sha, path: path)
52
- end
53
- resources
32
+ _resources_from_dir(@assets_dir, base_url: @base_url)
54
33
  end
55
34
  end
56
35
  end
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  module Capybara
3
- VERSION = '2.5.1'.freeze
3
+ VERSION = '2.6.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ <html><head></head><body>Hello World!</body></html>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 170 110" enable-background="new 0 0 170 110" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <polyline fill="#1F0924" points="49.2,97.6 9.4,103.4 46,86.8 6.2,81.2 46,75.6 9.4,59 49.2,64.9 18.7,38.6 55.2,55.4 33.4,21.7
8
+ 63.7,48.1 52.2,9.6 73.9,43.4 73.7,3.2 85,41.8 96.2,3.2 96.1,43.4 117.7,9.5 106.3,48.1 136.5,21.6 114.7,55.4 151.2,38.6
9
+ 120.8,64.8 160.6,59 124,75.6 163.8,81.1 124,86.8 160.6,103.3 120.8,97.5 "/>
10
+ <polyline fill="#EDDDC2" points="52.8,90.2 18.5,90.3 51.4,80.7 18.5,71.2 52.8,71.3 23.9,52.8 56.8,62.6 63,55.4 48.7,24.2
11
+ 71.1,50.2 66.1,16.3 80.2,47.5 85,13.5 89.8,47.5 103.9,16.3 98.9,50.2 121.3,24.2 107,55.4 113.2,62.6 146.1,52.8 117.2,71.3
12
+ 151.5,71.2 118.6,80.7 151.5,90.3 117.2,90.2 "/>
13
+ </g>
14
+ <polygon fill="#EDDDC2" points="108.3,45.7 134.4,39.1 127.9,65.2 "/>
15
+ <polygon fill="#1F0924" points="114.2,48.6 128.5,45 124.9,59.3 114.2,59.3 "/>
16
+ <polygon fill="#EDDDC2" points="61.7,45.7 35.6,39.1 42.1,65.2 "/>
17
+ <polygon fill="#1F0924" points="55.8,48.6 41.5,45 45.1,59.3 55.8,59.3 "/>
18
+ <polyline fill="#B157B5" points="38.3,101.1 131.7,101.1 166.8,88.5 131.5,76 155.8,47.6 119,54.5 125.9,17.7 97.5,42 85,6.7
19
+ 72.5,42 44.1,17.7 51,54.5 14.2,47.6 38.5,76 3.2,88.5 "/>
20
+ <circle fill="#EDDDC2" cx="61.4" cy="78.7" r="12.1"/>
21
+ <circle fill="#1F0924" cx="61.4" cy="78.7" r="9.5"/>
22
+ <circle fill="#EDDDC2" cx="58.2" cy="75.5" r="4.2"/>
23
+ <circle fill="#EDDDC2" cx="108.6" cy="78.7" r="12.1"/>
24
+ <circle fill="#1F0924" cx="108.6" cy="78.7" r="9.5"/>
25
+ <circle fill="#EDDDC2" cx="105.3" cy="75.5" r="4.2"/>
26
+ <path fill="#EDDDC2" d="M62.9,97.6c0-12.2,9.9-22.1,22.1-22.1s22.1,9.9,22.1,22.1S62.9,109.8,62.9,97.6z"/>
27
+ <path fill="#1F0924" d="M89.8,96.5c-2,0-3.7-1-4.8-2.5c-1,1.5-2.8,2.5-4.8,2.5c-3.2,0-5.8-2.6-5.8-5.8c0-0.6,0.4-1,1-1s1,0.4,1,1
28
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8h2c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8c0-0.6,0.4-1,1-1s1,0.4,1,1
29
+ C95.5,93.9,93,96.5,89.8,96.5z"/>
30
+ <path fill="#1F0924" d="M92.8,83.6c0,4.3-3.5,7.8-7.8,7.8s-7.8-3.5-7.8-7.8C77.2,79.3,92.8,79.3,92.8,83.6z"/>
31
+ <path fill="#EDDDC2" d="M47,101.3c0-4,3.2-7.3,7.3-7.3s7.3,3.2,7.3,7.3S47,105.3,47,101.3z"/>
32
+ <path fill="#EDDDC2" d="M108.4,101.3c0-4,3.2-7.3,7.3-7.3c4,0,7.3,3.2,7.3,7.3S108.4,105.3,108.4,101.3z"/>
33
+ </g>
34
+ </svg>
@@ -0,0 +1 @@
1
+ <html><head></head><body>Hello World!</body></html>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 170 110" enable-background="new 0 0 170 110" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <polyline fill="#1F0924" points="49.2,97.6 9.4,103.4 46,86.8 6.2,81.2 46,75.6 9.4,59 49.2,64.9 18.7,38.6 55.2,55.4 33.4,21.7
8
+ 63.7,48.1 52.2,9.6 73.9,43.4 73.7,3.2 85,41.8 96.2,3.2 96.1,43.4 117.7,9.5 106.3,48.1 136.5,21.6 114.7,55.4 151.2,38.6
9
+ 120.8,64.8 160.6,59 124,75.6 163.8,81.1 124,86.8 160.6,103.3 120.8,97.5 "/>
10
+ <polyline fill="#EDDDC2" points="52.8,90.2 18.5,90.3 51.4,80.7 18.5,71.2 52.8,71.3 23.9,52.8 56.8,62.6 63,55.4 48.7,24.2
11
+ 71.1,50.2 66.1,16.3 80.2,47.5 85,13.5 89.8,47.5 103.9,16.3 98.9,50.2 121.3,24.2 107,55.4 113.2,62.6 146.1,52.8 117.2,71.3
12
+ 151.5,71.2 118.6,80.7 151.5,90.3 117.2,90.2 "/>
13
+ </g>
14
+ <polygon fill="#EDDDC2" points="108.3,45.7 134.4,39.1 127.9,65.2 "/>
15
+ <polygon fill="#1F0924" points="114.2,48.6 128.5,45 124.9,59.3 114.2,59.3 "/>
16
+ <polygon fill="#EDDDC2" points="61.7,45.7 35.6,39.1 42.1,65.2 "/>
17
+ <polygon fill="#1F0924" points="55.8,48.6 41.5,45 45.1,59.3 55.8,59.3 "/>
18
+ <polyline fill="#B157B5" points="38.3,101.1 131.7,101.1 166.8,88.5 131.5,76 155.8,47.6 119,54.5 125.9,17.7 97.5,42 85,6.7
19
+ 72.5,42 44.1,17.7 51,54.5 14.2,47.6 38.5,76 3.2,88.5 "/>
20
+ <circle fill="#EDDDC2" cx="61.4" cy="78.7" r="12.1"/>
21
+ <circle fill="#1F0924" cx="61.4" cy="78.7" r="9.5"/>
22
+ <circle fill="#EDDDC2" cx="58.2" cy="75.5" r="4.2"/>
23
+ <circle fill="#EDDDC2" cx="108.6" cy="78.7" r="12.1"/>
24
+ <circle fill="#1F0924" cx="108.6" cy="78.7" r="9.5"/>
25
+ <circle fill="#EDDDC2" cx="105.3" cy="75.5" r="4.2"/>
26
+ <path fill="#EDDDC2" d="M62.9,97.6c0-12.2,9.9-22.1,22.1-22.1s22.1,9.9,22.1,22.1S62.9,109.8,62.9,97.6z"/>
27
+ <path fill="#1F0924" d="M89.8,96.5c-2,0-3.7-1-4.8-2.5c-1,1.5-2.8,2.5-4.8,2.5c-3.2,0-5.8-2.6-5.8-5.8c0-0.6,0.4-1,1-1s1,0.4,1,1
28
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8h2c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8c0-0.6,0.4-1,1-1s1,0.4,1,1
29
+ C95.5,93.9,93,96.5,89.8,96.5z"/>
30
+ <path fill="#1F0924" d="M92.8,83.6c0,4.3-3.5,7.8-7.8,7.8s-7.8-3.5-7.8-7.8C77.2,79.3,92.8,79.3,92.8,83.6z"/>
31
+ <path fill="#EDDDC2" d="M47,101.3c0-4,3.2-7.3,7.3-7.3s7.3,3.2,7.3,7.3S47,105.3,47,101.3z"/>
32
+ <path fill="#EDDDC2" d="M108.4,101.3c0-4,3.2-7.3,7.3-7.3c4,0,7.3,3.2,7.3,7.3S108.4,105.3,108.4,101.3z"/>
33
+ </g>
34
+ </svg>
@@ -1,4 +1,4 @@
1
- IFRAME_PATH = File.expand_path('../../client/testdata/test-iframe.html', __FILE__)
1
+ IFRAME_PATH = File.expand_path('../../client/test_data/test-iframe.html', __FILE__)
2
2
 
3
3
  class RackAppWithIframe
4
4
  def self.call(_env)
@@ -103,4 +103,10 @@ RSpec.describe Percy::Capybara::Loaders::BaseLoader do
103
103
  end
104
104
  end
105
105
  end
106
+
107
+ describe '#_uri_join' do
108
+ it 'joins files into a uri' do
109
+ expect(described_class.new.send(:_uri_join, 'foo/', '/bar', 'baz')).to eq('foo/bar/baz')
110
+ end
111
+ end
106
112
  end
@@ -0,0 +1,82 @@
1
+ RSpec.describe Percy::Capybara::Loaders::EmberCliRailsLoader do
2
+ let(:assets_dir) { File.expand_path('../../client/ember_test_data', __FILE__) }
3
+ let(:mounted_apps) { {frontend: ''} }
4
+ let(:digest_enabled) { false }
5
+
6
+ let(:environment) do
7
+ environment = Sprockets::Environment.new(assets_dir)
8
+ environment.append_path '.'
9
+ environment
10
+ end
11
+
12
+ let(:loader) do
13
+ described_class.new(
14
+ mounted_apps,
15
+ sprockets_environment: environment,
16
+ sprockets_options: sprockets_options,
17
+ )
18
+ end
19
+
20
+ let(:sprockets_options) do
21
+ options = instance_double('options')
22
+ # Set specific files we want to compile. In normal use, this would be all asset files.
23
+ # For this test we just use .svg files
24
+ precompile_list = [%r{(?:/|\\|\A)\.svg}]
25
+ allow(options).to receive(:precompile).and_return(precompile_list)
26
+ allow(options).to receive(:digest).and_return(digest_enabled)
27
+ options
28
+ end
29
+
30
+ describe 'initialize' do
31
+ context 'all args supplied' do
32
+ it 'successfully initializes' do
33
+ expect { loader }.not_to raise_error
34
+ end
35
+ end
36
+
37
+ context 'mounted_apps not specified' do
38
+ let(:mounted_apps) { nil }
39
+
40
+ it 'raises an error' do
41
+ expect { loader }.to raise_error(StandardError)
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#build_resources' do
47
+ shared_examples 'a mounted ember app' do |mounted_apps|
48
+ ember_app = mounted_apps.keys.first
49
+ mount_path = mounted_apps.values.first
50
+
51
+ let(:ember_app) { ember_app }
52
+ let(:mount_path) { mounted_apps.values.first }
53
+ let(:dist_dir) { File.join(assets_dir, 'ember-cli', ember_app.to_s) }
54
+ let(:loader) do
55
+ described_class.new(mounted_apps, sprockets_environment: environment,
56
+ sprockets_options: sprockets_options,)
57
+ end
58
+
59
+ context "called '#{ember_app}' and mounted at '#{mount_path}'" do
60
+ before do
61
+ allow(loader).to receive(:_dist_path_for_app).and_return(dist_dir)
62
+ end
63
+
64
+ it 'builds the expected resources' do
65
+ expected_urls = loader.build_resources.collect(&:resource_url)
66
+ expected_url = loader._uri_join(
67
+ mount_path,
68
+ described_class::EMBER_ASSETS_DIR,
69
+ "percy-#{ember_app}.svg",
70
+ )
71
+
72
+ expect(expected_urls).to include(expected_url)
73
+ end
74
+ end
75
+ end
76
+
77
+ it_behaves_like 'a mounted ember app', frontend: '/'
78
+ it_behaves_like 'a mounted ember app', frontend: ''
79
+ it_behaves_like 'a mounted ember app', admin: '/admin'
80
+ it_behaves_like 'a mounted ember app', admin: '/admin/'
81
+ end
82
+ end
@@ -1,6 +1,6 @@
1
1
  RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
2
2
  let(:fake_page) { OpenStruct.new(current_url: 'http://localhost/foo') }
3
- let(:assets_dir) { File.expand_path('../../client/testdata', __FILE__) }
3
+ let(:assets_dir) { File.expand_path('../../client/test_data', __FILE__) }
4
4
  let(:base_url) { '/url-prefix/' }
5
5
  let(:loader) { described_class.new(base_url: base_url, assets_dir: assets_dir, page: fake_page) }
6
6
 
@@ -13,14 +13,14 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
13
13
  end
14
14
  end
15
15
  context 'assets_dir is not an absolute path' do
16
- let(:assets_dir) { '../../client/testdata' }
16
+ let(:assets_dir) { '../../client/test_data' }
17
17
 
18
18
  it 'raises an error' do
19
19
  expect { loader }.to raise_error(ArgumentError)
20
20
  end
21
21
  end
22
- context 'assets_dir doesn\'t exist' do
23
- let(:assets_dir) { File.expand_path('../../client/testdata-doesnt-exist', __FILE__) }
22
+ context "assets_dir doesn't exist" do
23
+ let(:assets_dir) { File.expand_path('../../client/test-data-doesnt-exist', __FILE__) }
24
24
 
25
25
  it 'raises an error' do
26
26
  expect { loader }.to raise_error(ArgumentError)
@@ -132,7 +132,7 @@ RSpec.describe Percy::Capybara::Loaders::FilesystemLoader do
132
132
  end
133
133
  end
134
134
  context 'assets_dir with only skippable resources' do
135
- let(:assets_dir) { File.expand_path('../../client/testdata/assets/images', __FILE__) }
135
+ let(:assets_dir) { File.expand_path('../../client/test_data/assets/images', __FILE__) }
136
136
 
137
137
  it 'returns an empty list' do
138
138
  expect(loader.build_resources).to eq([])
@@ -205,7 +205,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
205
205
  # The order of these is just for convenience, they match the order in test-images.html.
206
206
 
207
207
  resource = find_resource(resources, '/images/img-relative.png')
208
- path = File.expand_path('../../client/testdata/images/img-relative.png', __FILE__)
208
+ path = File.expand_path('../../client/test_data/images/img-relative.png', __FILE__)
209
209
  content = File.read(path)
210
210
  expect(resource.mimetype).to eq('image/png')
211
211
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -213,7 +213,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
213
213
  expect(resource.sha).to eq(expected_sha)
214
214
 
215
215
  resource = find_resource(resources, '/images/img-relative-to-root.png')
216
- path = File.expand_path('../../client/testdata/images/img-relative-to-root.png', __FILE__)
216
+ path = File.expand_path('../../client/test_data/images/img-relative-to-root.png', __FILE__)
217
217
  content = File.read(path)
218
218
  expect(resource.mimetype).to eq('image/png')
219
219
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -221,7 +221,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
221
221
  expect(resource.sha).to eq(expected_sha)
222
222
 
223
223
  resource = find_resource(resources, '/images/percy.svg')
224
- path = File.expand_path('../../client/testdata/images/percy.svg', __FILE__)
224
+ path = File.expand_path('../../client/test_data/images/percy.svg', __FILE__)
225
225
  content = File.read(path)
226
226
  # In Ruby 1.9.3 the SVG mimetype is not registered so our mini ruby webserver doesn't serve
227
227
  # the correct content type. Allow either to work here so we can test older Rubies fully.
@@ -231,7 +231,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
231
231
  expect(resource.sha).to eq(expected_sha)
232
232
 
233
233
  resource = find_resource(resources, '/images/bg-relative.png')
234
- path = File.expand_path('../../client/testdata/images/bg-relative.png', __FILE__)
234
+ path = File.expand_path('../../client/test_data/images/bg-relative.png', __FILE__)
235
235
  content = File.read(path)
236
236
  expect(resource.mimetype).to eq('image/png')
237
237
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -239,7 +239,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
239
239
  expect(resource.sha).to eq(expected_sha)
240
240
 
241
241
  resource = find_resource(resources, '/images/bg-relative-to-root.png')
242
- path = File.expand_path('../../client/testdata/images/bg-relative-to-root.png', __FILE__)
242
+ path = File.expand_path('../../client/test_data/images/bg-relative-to-root.png', __FILE__)
243
243
  content = File.read(path)
244
244
  expect(resource.mimetype).to eq('image/png')
245
245
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -247,7 +247,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
247
247
  expect(resource.sha).to eq(expected_sha)
248
248
 
249
249
  resource = find_resource(resources, '/images/bg-stacked.png')
250
- path = File.expand_path('../../client/testdata/images/bg-stacked.png', __FILE__)
250
+ path = File.expand_path('../../client/test_data/images/bg-stacked.png', __FILE__)
251
251
  content = File.read(path)
252
252
  expect(resource.mimetype).to eq('image/png')
253
253
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -255,7 +255,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
255
255
  expect(resource.sha).to eq(expected_sha)
256
256
 
257
257
  resource = find_resource(resources, '/images/srcset-base.png')
258
- path = File.expand_path('../../client/testdata/images/srcset-base.png', __FILE__)
258
+ path = File.expand_path('../../client/test_data/images/srcset-base.png', __FILE__)
259
259
  content = File.read(path)
260
260
  expect(resource.mimetype).to eq('image/png')
261
261
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -263,7 +263,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
263
263
  expect(resource.sha).to eq(expected_sha)
264
264
 
265
265
  resource = find_resource(resources, '/images/srcset-first.png')
266
- path = File.expand_path('../../client/testdata/images/srcset-first.png', __FILE__)
266
+ path = File.expand_path('../../client/test_data/images/srcset-first.png', __FILE__)
267
267
  content = File.read(path)
268
268
  expect(resource.mimetype).to eq('image/png')
269
269
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -271,7 +271,7 @@ RSpec.describe Percy::Capybara::Loaders::NativeLoader do
271
271
  expect(resource.sha).to eq(expected_sha)
272
272
 
273
273
  resource = find_resource(resources, '/images/srcset-second.png')
274
- path = File.expand_path('../../client/testdata/images/srcset-second.png', __FILE__)
274
+ path = File.expand_path('../../client/test_data/images/srcset-second.png', __FILE__)
275
275
  content = File.read(path)
276
276
  expect(resource.mimetype).to eq('image/png')
277
277
  expected_sha = Digest::SHA256.hexdigest(content)
@@ -15,7 +15,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
15
15
  )
16
16
  end
17
17
  let(:environment) do
18
- root = File.expand_path('../../client/testdata', __FILE__)
18
+ root = File.expand_path('../../client/test_data', __FILE__)
19
19
  environment = Sprockets::Environment.new(root)
20
20
  environment.append_path '.'
21
21
  environment
@@ -76,7 +76,7 @@ RSpec.describe Percy::Capybara::Loaders::SprocketsLoader do
76
76
  before do
77
77
  # Pretend like we're in a Rails app right now, all we care about is Rails.public_path.
78
78
  rails_double = double('Rails')
79
- # Pretend like the entire testdata directory is the public/ folder.
79
+ # Pretend like the entire test_data directory is the public/ folder.
80
80
  expect(rails_double).to receive(:application).and_return(nil)
81
81
  expect(rails_double).to receive(:public_path).and_return(environment.root + '/public')
82
82
  expect(loader).to receive(:_rails).at_least(:once).and_return(rails_double)
data/spec/spec_helper.rb CHANGED
@@ -51,9 +51,9 @@ RSpec.configure do |config|
51
51
  # Cover all debug messages by outputting them in this gem's tests.
52
52
  Percy.config.debug = true
53
53
 
54
- # Start a temp webserver that serves the testdata directory.
54
+ # Start a temp webserver that serves the test_data directory.
55
55
  # You can test this server manually by running:
56
- # ruby -run -e httpd spec/lib/percy/capybara/client/testdata/ -p 9090
56
+ # ruby -run -e httpd spec/lib/percy/capybara/client/test_data/ -p 9090
57
57
  config.before(:all, type: :feature) do
58
58
  port = random_open_port
59
59
  Capybara.app = nil
@@ -61,7 +61,7 @@ RSpec.configure do |config|
61
61
  Capybara.run_server = false
62
62
 
63
63
  # Note: using this form of popen to keep stdout and stderr silent and captured.
64
- dir = File.expand_path('../lib/percy/capybara/client/testdata/', __FILE__)
64
+ dir = File.expand_path('../lib/percy/capybara/client/test_data/', __FILE__)
65
65
  @process = IO.popen(
66
66
  [
67
67
  'ruby', '-run', '-e', 'httpd', dir, '-p', port.to_s, err: [:child, :out],
@@ -35,7 +35,7 @@ module TestHelpers
35
35
  end
36
36
 
37
37
  def setup_sprockets(capybara_client)
38
- root = File.expand_path('../../lib/percy/capybara/client/testdata', __FILE__)
38
+ root = File.expand_path('../../lib/percy/capybara/client/test_data', __FILE__)
39
39
  environment = Sprockets::Environment.new(root)
40
40
  environment.append_path '.'
41
41
 
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.5.1
4
+ version: 2.6.0
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-04-14 00:00:00.000000000 Z
11
+ date: 2017-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: percy-client
@@ -196,6 +196,7 @@ files:
196
196
  - lib/percy/capybara/client/snapshots.rb
197
197
  - lib/percy/capybara/httpfetcher.rb
198
198
  - lib/percy/capybara/loaders/base_loader.rb
199
+ - lib/percy/capybara/loaders/ember_cli_rails_loader.rb
199
200
  - lib/percy/capybara/loaders/filesystem_loader.rb
200
201
  - lib/percy/capybara/loaders/native_loader.rb
201
202
  - lib/percy/capybara/loaders/sprockets_loader.rb
@@ -203,40 +204,45 @@ files:
203
204
  - lib/percy/capybara/version.rb
204
205
  - percy-capybara.gemspec
205
206
  - spec/lib/percy/capybara/client/builds_spec.rb
207
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/admin/assets/percy-admin.svg
208
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/admin/index.html
209
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/assets/percy-frontend.svg
210
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/index.html
206
211
  - spec/lib/percy/capybara/client/snapshots_spec.rb
207
- - spec/lib/percy/capybara/client/testdata/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
208
- - spec/lib/percy/capybara/client/testdata/assets/images/large-file-skipped.png
209
- - spec/lib/percy/capybara/client/testdata/css/base.css
210
- - spec/lib/percy/capybara/client/testdata/css/digested.css
211
- - spec/lib/percy/capybara/client/testdata/css/font.css
212
- - spec/lib/percy/capybara/client/testdata/css/imports.css
213
- - spec/lib/percy/capybara/client/testdata/css/level0-imports.css
214
- - spec/lib/percy/capybara/client/testdata/css/level1-imports.css
215
- - spec/lib/percy/capybara/client/testdata/css/level2-imports.css
216
- - spec/lib/percy/capybara/client/testdata/css/simple-imports.css
217
- - spec/lib/percy/capybara/client/testdata/css/source.css.map
218
- - spec/lib/percy/capybara/client/testdata/iframe.html
219
- - spec/lib/percy/capybara/client/testdata/images/bg-relative-to-root.png
220
- - spec/lib/percy/capybara/client/testdata/images/bg-relative.png
221
- - spec/lib/percy/capybara/client/testdata/images/bg-stacked.png
222
- - spec/lib/percy/capybara/client/testdata/images/img-relative-to-root.png
223
- - spec/lib/percy/capybara/client/testdata/images/img-relative.png
224
- - spec/lib/percy/capybara/client/testdata/images/percy.svg
225
- - spec/lib/percy/capybara/client/testdata/images/srcset-base.png
226
- - spec/lib/percy/capybara/client/testdata/images/srcset-first.png
227
- - spec/lib/percy/capybara/client/testdata/images/srcset-second.png
228
- - spec/lib/percy/capybara/client/testdata/index.html
229
- - spec/lib/percy/capybara/client/testdata/js/base.js
230
- - spec/lib/percy/capybara/client/testdata/public/large-file-skipped.png
231
- - spec/lib/percy/capybara/client/testdata/public/percy-from-public.svg
232
- - spec/lib/percy/capybara/client/testdata/test-css.html
233
- - spec/lib/percy/capybara/client/testdata/test-font.html
234
- - spec/lib/percy/capybara/client/testdata/test-iframe.html
235
- - spec/lib/percy/capybara/client/testdata/test-images.html
236
- - spec/lib/percy/capybara/client/testdata/test-localtest-me-images.html
212
+ - spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
213
+ - spec/lib/percy/capybara/client/test_data/assets/images/large-file-skipped.png
214
+ - spec/lib/percy/capybara/client/test_data/css/base.css
215
+ - spec/lib/percy/capybara/client/test_data/css/digested.css
216
+ - spec/lib/percy/capybara/client/test_data/css/font.css
217
+ - spec/lib/percy/capybara/client/test_data/css/imports.css
218
+ - spec/lib/percy/capybara/client/test_data/css/level0-imports.css
219
+ - spec/lib/percy/capybara/client/test_data/css/level1-imports.css
220
+ - spec/lib/percy/capybara/client/test_data/css/level2-imports.css
221
+ - spec/lib/percy/capybara/client/test_data/css/simple-imports.css
222
+ - spec/lib/percy/capybara/client/test_data/css/source.css.map
223
+ - spec/lib/percy/capybara/client/test_data/iframe.html
224
+ - spec/lib/percy/capybara/client/test_data/images/bg-relative-to-root.png
225
+ - spec/lib/percy/capybara/client/test_data/images/bg-relative.png
226
+ - spec/lib/percy/capybara/client/test_data/images/bg-stacked.png
227
+ - spec/lib/percy/capybara/client/test_data/images/img-relative-to-root.png
228
+ - spec/lib/percy/capybara/client/test_data/images/img-relative.png
229
+ - spec/lib/percy/capybara/client/test_data/images/percy.svg
230
+ - spec/lib/percy/capybara/client/test_data/images/srcset-base.png
231
+ - spec/lib/percy/capybara/client/test_data/images/srcset-first.png
232
+ - spec/lib/percy/capybara/client/test_data/images/srcset-second.png
233
+ - spec/lib/percy/capybara/client/test_data/index.html
234
+ - spec/lib/percy/capybara/client/test_data/js/base.js
235
+ - spec/lib/percy/capybara/client/test_data/public/large-file-skipped.png
236
+ - spec/lib/percy/capybara/client/test_data/public/percy-from-public.svg
237
+ - spec/lib/percy/capybara/client/test_data/test-css.html
238
+ - spec/lib/percy/capybara/client/test_data/test-font.html
239
+ - spec/lib/percy/capybara/client/test_data/test-iframe.html
240
+ - spec/lib/percy/capybara/client/test_data/test-images.html
241
+ - spec/lib/percy/capybara/client/test_data/test-localtest-me-images.html
237
242
  - spec/lib/percy/capybara/client_spec.rb
238
243
  - spec/lib/percy/capybara/http_fetcher_spec.rb
239
244
  - spec/lib/percy/capybara/loaders/base_loader_spec.rb
245
+ - spec/lib/percy/capybara/loaders/ember_cli_rails_loader_spec.rb
240
246
  - spec/lib/percy/capybara/loaders/filesystem_loader_spec.rb
241
247
  - spec/lib/percy/capybara/loaders/native_loader_spec.rb
242
248
  - spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb
@@ -269,40 +275,45 @@ specification_version: 4
269
275
  summary: Percy::Capybara
270
276
  test_files:
271
277
  - spec/lib/percy/capybara/client/builds_spec.rb
278
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/admin/assets/percy-admin.svg
279
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/admin/index.html
280
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/assets/percy-frontend.svg
281
+ - spec/lib/percy/capybara/client/ember_test_data/ember-cli/frontend/index.html
272
282
  - spec/lib/percy/capybara/client/snapshots_spec.rb
273
- - spec/lib/percy/capybara/client/testdata/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
274
- - spec/lib/percy/capybara/client/testdata/assets/images/large-file-skipped.png
275
- - spec/lib/percy/capybara/client/testdata/css/base.css
276
- - spec/lib/percy/capybara/client/testdata/css/digested.css
277
- - spec/lib/percy/capybara/client/testdata/css/font.css
278
- - spec/lib/percy/capybara/client/testdata/css/imports.css
279
- - spec/lib/percy/capybara/client/testdata/css/level0-imports.css
280
- - spec/lib/percy/capybara/client/testdata/css/level1-imports.css
281
- - spec/lib/percy/capybara/client/testdata/css/level2-imports.css
282
- - spec/lib/percy/capybara/client/testdata/css/simple-imports.css
283
- - spec/lib/percy/capybara/client/testdata/css/source.css.map
284
- - spec/lib/percy/capybara/client/testdata/iframe.html
285
- - spec/lib/percy/capybara/client/testdata/images/bg-relative-to-root.png
286
- - spec/lib/percy/capybara/client/testdata/images/bg-relative.png
287
- - spec/lib/percy/capybara/client/testdata/images/bg-stacked.png
288
- - spec/lib/percy/capybara/client/testdata/images/img-relative-to-root.png
289
- - spec/lib/percy/capybara/client/testdata/images/img-relative.png
290
- - spec/lib/percy/capybara/client/testdata/images/percy.svg
291
- - spec/lib/percy/capybara/client/testdata/images/srcset-base.png
292
- - spec/lib/percy/capybara/client/testdata/images/srcset-first.png
293
- - spec/lib/percy/capybara/client/testdata/images/srcset-second.png
294
- - spec/lib/percy/capybara/client/testdata/index.html
295
- - spec/lib/percy/capybara/client/testdata/js/base.js
296
- - spec/lib/percy/capybara/client/testdata/public/large-file-skipped.png
297
- - spec/lib/percy/capybara/client/testdata/public/percy-from-public.svg
298
- - spec/lib/percy/capybara/client/testdata/test-css.html
299
- - spec/lib/percy/capybara/client/testdata/test-font.html
300
- - spec/lib/percy/capybara/client/testdata/test-iframe.html
301
- - spec/lib/percy/capybara/client/testdata/test-images.html
302
- - spec/lib/percy/capybara/client/testdata/test-localtest-me-images.html
283
+ - spec/lib/percy/capybara/client/test_data/assets/css/digested-f3420c6aee71c137a3ca39727052811bae84b2f37d898f4db242e20656a1579e.css
284
+ - spec/lib/percy/capybara/client/test_data/assets/images/large-file-skipped.png
285
+ - spec/lib/percy/capybara/client/test_data/css/base.css
286
+ - spec/lib/percy/capybara/client/test_data/css/digested.css
287
+ - spec/lib/percy/capybara/client/test_data/css/font.css
288
+ - spec/lib/percy/capybara/client/test_data/css/imports.css
289
+ - spec/lib/percy/capybara/client/test_data/css/level0-imports.css
290
+ - spec/lib/percy/capybara/client/test_data/css/level1-imports.css
291
+ - spec/lib/percy/capybara/client/test_data/css/level2-imports.css
292
+ - spec/lib/percy/capybara/client/test_data/css/simple-imports.css
293
+ - spec/lib/percy/capybara/client/test_data/css/source.css.map
294
+ - spec/lib/percy/capybara/client/test_data/iframe.html
295
+ - spec/lib/percy/capybara/client/test_data/images/bg-relative-to-root.png
296
+ - spec/lib/percy/capybara/client/test_data/images/bg-relative.png
297
+ - spec/lib/percy/capybara/client/test_data/images/bg-stacked.png
298
+ - spec/lib/percy/capybara/client/test_data/images/img-relative-to-root.png
299
+ - spec/lib/percy/capybara/client/test_data/images/img-relative.png
300
+ - spec/lib/percy/capybara/client/test_data/images/percy.svg
301
+ - spec/lib/percy/capybara/client/test_data/images/srcset-base.png
302
+ - spec/lib/percy/capybara/client/test_data/images/srcset-first.png
303
+ - spec/lib/percy/capybara/client/test_data/images/srcset-second.png
304
+ - spec/lib/percy/capybara/client/test_data/index.html
305
+ - spec/lib/percy/capybara/client/test_data/js/base.js
306
+ - spec/lib/percy/capybara/client/test_data/public/large-file-skipped.png
307
+ - spec/lib/percy/capybara/client/test_data/public/percy-from-public.svg
308
+ - spec/lib/percy/capybara/client/test_data/test-css.html
309
+ - spec/lib/percy/capybara/client/test_data/test-font.html
310
+ - spec/lib/percy/capybara/client/test_data/test-iframe.html
311
+ - spec/lib/percy/capybara/client/test_data/test-images.html
312
+ - spec/lib/percy/capybara/client/test_data/test-localtest-me-images.html
303
313
  - spec/lib/percy/capybara/client_spec.rb
304
314
  - spec/lib/percy/capybara/http_fetcher_spec.rb
305
315
  - spec/lib/percy/capybara/loaders/base_loader_spec.rb
316
+ - spec/lib/percy/capybara/loaders/ember_cli_rails_loader_spec.rb
306
317
  - spec/lib/percy/capybara/loaders/filesystem_loader_spec.rb
307
318
  - spec/lib/percy/capybara/loaders/native_loader_spec.rb
308
319
  - spec/lib/percy/capybara/loaders/sprockets_loader_spec.rb