diff --git a/Makefile b/Makefile
index b9edbdcc925..f37fbecb2bd 100644
--- a/Makefile
+++ b/Makefile
@@ -79,7 +79,7 @@ normalize_yaml:
optimize_svg:
# Without disabling minifyStyles, keyframes are removed (e.g. `app/assets/images/id-card.svg`).
# See: https://github.com/svg/svgo/issues/888
- find app/assets/images public -name '*.svg' | xargs ./node_modules/.bin/svgo --multipass --disable minifyStyles --config '{"plugins":[{"removeAttrs":{"attrs":"data-name"}}]}'
+ find app/assets/images public -name '*.svg' | xargs ./node_modules/.bin/svgo --multipass --disable minifyStyles --disable=removeViewBox --config '{"plugins":[{"removeAttrs":{"attrs":"data-name"}}]}'
optimize_assets: optimize_svg
diff --git a/app/assets/images/alert/icon-lock-alert-important.svg b/app/assets/images/alert/icon-lock-alert-important.svg
index 6feb8fb15d5..5a962a6e5aa 100644
--- a/app/assets/images/alert/icon-lock-alert-important.svg
+++ b/app/assets/images/alert/icon-lock-alert-important.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/alert/pending.svg b/app/assets/images/alert/pending.svg
index bea072ca9e6..826e9539de1 100644
--- a/app/assets/images/alert/pending.svg
+++ b/app/assets/images/alert/pending.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/alert/unphishable.svg b/app/assets/images/alert/unphishable.svg
index 84ff427c975..f48a529d1b6 100644
--- a/app/assets/images/alert/unphishable.svg
+++ b/app/assets/images/alert/unphishable.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/close-white-alt.svg b/app/assets/images/close-white-alt.svg
index f8df3f8afd9..7ed2c722a86 100644
--- a/app/assets/images/close-white-alt.svg
+++ b/app/assets/images/close-white-alt.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/get-started/ID.svg b/app/assets/images/get-started/ID.svg
index 3782241e973..ca6d52c50a3 100644
--- a/app/assets/images/get-started/ID.svg
+++ b/app/assets/images/get-started/ID.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/ico-download.svg b/app/assets/images/ico-download.svg
index 3c35e168cca..bf23b5f8651 100644
--- a/app/assets/images/ico-download.svg
+++ b/app/assets/images/ico-download.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/icon-dot-gov.svg b/app/assets/images/icon-dot-gov.svg
index 5d190c28e0f..286d41a5ab4 100644
--- a/app/assets/images/icon-dot-gov.svg
+++ b/app/assets/images/icon-dot-gov.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/icon-lock-alert-important.svg b/app/assets/images/icon-lock-alert-important.svg
index 6feb8fb15d5..5a962a6e5aa 100644
--- a/app/assets/images/icon-lock-alert-important.svg
+++ b/app/assets/images/icon-lock-alert-important.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/id-card.svg b/app/assets/images/id-card.svg
index 8e808fc892c..b24cedd0bfe 100644
--- a/app/assets/images/id-card.svg
+++ b/app/assets/images/id-card.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/piv-cac-round.svg b/app/assets/images/piv-cac-round.svg
deleted file mode 100644
index 9a6f1428d29..00000000000
--- a/app/assets/images/piv-cac-round.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/app/assets/images/plus.svg b/app/assets/images/plus.svg
index 9ab868d60d1..41888145942 100644
--- a/app/assets/images/plus.svg
+++ b/app/assets/images/plus.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/sp-logos/generic.svg b/app/assets/images/sp-logos/generic.svg
index c1c96dcdeb4..89d24209556 100644
--- a/app/assets/images/sp-logos/generic.svg
+++ b/app/assets/images/sp-logos/generic.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/sp-logos/square-gsa-dark.svg b/app/assets/images/sp-logos/square-gsa-dark.svg
index 95983c84153..6c74486a77e 100644
--- a/app/assets/images/sp-logos/square-gsa-dark.svg
+++ b/app/assets/images/sp-logos/square-gsa-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/sp-logos/square-gsa.svg b/app/assets/images/sp-logos/square-gsa.svg
index 4c7614c77d2..e836615f276 100644
--- a/app/assets/images/sp-logos/square-gsa.svg
+++ b/app/assets/images/sp-logos/square-gsa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/state-id-round.svg b/app/assets/images/state-id-round.svg
deleted file mode 100644
index 430fd0a7504..00000000000
--- a/app/assets/images/state-id-round.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/app/assets/images/user-access.svg b/app/assets/images/user-access.svg
index 959983e200c..cf4dfc93011 100644
--- a/app/assets/images/user-access.svg
+++ b/app/assets/images/user-access.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/user-signup-ial1.svg b/app/assets/images/user-signup-ial1.svg
index 81481210878..af0a25b572f 100644
--- a/app/assets/images/user-signup-ial1.svg
+++ b/app/assets/images/user-signup-ial1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/user-signup-ial2.svg b/app/assets/images/user-signup-ial2.svg
index 8d10825f713..eef9b6538eb 100644
--- a/app/assets/images/user-signup-ial2.svg
+++ b/app/assets/images/user-signup-ial2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/webauthn-verified.svg b/app/assets/images/webauthn-verified.svg
index 37c7a19ef10..cf4896f3937 100644
--- a/app/assets/images/webauthn-verified.svg
+++ b/app/assets/images/webauthn-verified.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/images/logo-white.svg b/public/images/logo-white.svg
index 3c1afa2d135..048af16a238 100644
--- a/public/images/logo-white.svg
+++ b/public/images/logo-white.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/images/logo.svg b/public/images/logo.svg
index 23aecb40e54..089e02289a4 100644
--- a/public/images/logo.svg
+++ b/public/images/logo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/spec/svg_spec.rb b/spec/svg_spec.rb
index a90d9c3ba2e..59d83a3759f 100644
--- a/spec/svg_spec.rb
+++ b/spec/svg_spec.rb
@@ -1,19 +1,21 @@
require 'rails_helper'
RSpec.describe 'SVG files' do
- Dir[Rails.root.join('**', '*.svg')].reject { |f| f.include?('node_modules') }.each do |svg_path|
- relative_path = svg_path.sub(Rails.root.to_s, '')
-
- next if %w[vendor node_modules].include?(relative_path.split('/')[1])
-
+ files = Dir.glob('{app,public}/**/*.svg', base: Rails.root)
+ files.reject! { |f| f.start_with? 'public/assets/' }
+ files.each do |relative_path|
describe relative_path do
- it 'does not contain inline style tags (that render poorly in IE due to CSP)' do
- doc = Nokogiri::XML(File.read(svg_path))
+ let(:subject) { Nokogiri::XML(File.read(Rails.root.join(relative_path))) }
- expect(doc.css('style')).to be_empty.or(
+ it 'does not contain inline style tags (that render poorly in IE due to CSP)' do
+ expect(subject.css('style')).to be_empty.or(
have_attributes(text: match(%r{^\s*/\*\!lint-ignore\*/})),
)
end
+
+ it 'defines viewBox attribute on root svg tag' do
+ expect(subject.css(':root[viewBox]')).to be_present
+ end
end
end
end