Skip to content

Commit 099ea26

Browse files
committed
Handle multiple srcsets when first is remote
1 parent 5903360 commit 099ea26

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

lib/html_proofer/check/images.rb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,6 @@ def run
2020
# does the image exist?
2121
if missing_src?
2222
add_failure("image has no src or srcset attribute", element: @img)
23-
elsif @img.url.protocol_relative?
24-
add_failure(
25-
"image link #{@img.url} is a protocol-relative URL, use explicit https:// instead",
26-
element: @img,
27-
)
28-
elsif @img.url.remote?
29-
add_to_external_urls(@img.url, @img.line)
30-
elsif !@img.url.exists? && !@img.multiple_srcsets? && !@img.multiple_sizes?
31-
add_failure(
32-
"internal image #{@img.url.raw_attribute} does not exist",
33-
element: @img,
34-
)
3523
elsif @img.multiple_srcsets? || @img.multiple_sizes?
3624
@img.srcsets_wo_sizes.each do |srcset|
3725
srcset_url = HTMLProofer::Attribute::Url.new(@runner, srcset, base_url: @img.base_url, source: @img.url.source, filename: @img.url.filename, extract_size: true)
@@ -47,6 +35,18 @@ def run
4735
add_failure("internal image #{srcset} does not exist", element: @img)
4836
end
4937
end
38+
elsif @img.url.protocol_relative?
39+
add_failure(
40+
"image link #{@img.url} is a protocol-relative URL, use explicit https:// instead",
41+
element: @img,
42+
)
43+
elsif @img.url.remote?
44+
add_to_external_urls(@img.url, @img.line)
45+
elsif !@img.url.exists? && !@img.multiple_srcsets? && !@img.multiple_sizes?
46+
add_failure(
47+
"internal image #{@img.url.raw_attribute} does not exist",
48+
element: @img,
49+
)
5050
end
5151

5252
# if this is an img element, check that the alt attribute is present

spec/html-proofer/check/images_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,12 @@
278278
expect(proofer.failed_checks).to(eq([]))
279279
end
280280

281+
it "works for picture elements with multiple remote sizes" do
282+
custom_data_src_check = "#{FIXTURES_DIR}/images/srcset_picture_remote_sizes.html"
283+
proofer = run_proofer(custom_data_src_check, :file)
284+
expect(proofer.failed_checks).to(eq([]))
285+
end
286+
281287
it "breaks for picture elements with multiple srcsets and pixel densities" do
282288
custom_data_src_check = "#{FIXTURES_DIR}/images/srcset_picture_pixel-density_broken.html"
283289
proofer = run_proofer(custom_data_src_check, :file)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<picture>
2+
<!--[if IE 9]><video style="display: none;"><![endif]-->
3+
<source
4+
srcset="
5+
https://upload.wikimedia.org/wikipedia/en/thumb/2/22/Heckert_GNU_white.svg/256px-Heckert_GNU_white.svg.png 2x,
6+
https://upload.wikimedia.org/wikipedia/en/2/22/Heckert_GNU_white.svg 1x
7+
"
8+
type="image/webp"
9+
/>
10+
<!--[if IE 9]></video><![endif]-->
11+
<img srcset="gpl.png" alt="test" />
12+
</picture>

0 commit comments

Comments
 (0)