Merge pull request #5745 from consuldemocracy/image_alt

Add missing alt attributes to images
This commit is contained in:
Javi Martín
2024-11-13 15:50:51 +01:00
committed by GitHub
10 changed files with 30 additions and 22 deletions

View File

@@ -49,7 +49,7 @@ class Shared::AvatarComponent < ApplicationComponent
width: size, width: size,
height: size, height: size,
role: "img", role: "img",
"aria-label": "", "aria-hidden": true,
style: "background-color: #{background_color}", style: "background-color: #{background_color}",
class: "initialjs-avatar #{options[:class]}".strip class: "initialjs-avatar #{options[:class]}".strip
} }

View File

@@ -23,6 +23,6 @@
</div> </div>
<div class="medium-5 column show-for-medium text-center"> <div class="medium-5 column show-for-medium text-center">
<%= image_tag(image_path_for("map.jpg")) %> <%= image_tag(image_path_for("map.jpg"), alt: t("shared.tags_cloud.districts_list")) %>
</div> </div>
</div> </div>

View File

@@ -5,9 +5,9 @@
<tbody> <tbody>
<tr> <tr>
<td style="background: #0300ff; padding: 50px; padding-top:40px; text-align: left;"> <td style="background: #0300ff; padding: 50px; padding-top:40px; text-align: left;">
<%= image_tag "quote_before_white.png", style: "max-width: 40px; vertical-align: top;" %> <%= image_tag "quote_before_white.png", alt: "", style: "max-width: 40px; vertical-align: top;" %>
<h1 style="color: #fff; font-size: 60px; line-height: 90px; display: inline;"><%= @proposal.title %></h1> <h1 style="color: #fff; font-size: 60px; line-height: 90px; display: inline;"><%= @proposal.title %></h1>
<%= image_tag "quote_after_white.png", style: "max-width: 40px; vertical-align: top;" %> <%= image_tag "quote_after_white.png", alt: "", style: "max-width: 40px; vertical-align: top;" %>
<h2 style="color: #fff; font-size: 40px; line-height: 60px"><%= sanitize(t("dashboard.mailer.forward.subtitle")) %></h2> <h2 style="color: #fff; font-size: 40px; line-height: 60px"><%= sanitize(t("dashboard.mailer.forward.subtitle")) %></h2>
</td> </td>
</tr> </tr>
@@ -15,9 +15,13 @@
</table> </table>
<% if @proposal.image.present? %> <% if @proposal.image.present? %>
<%= image_tag @proposal.image.variant(:large), style: "width: 100%; box-shadow: -16px 61px 49px -19px rgba(0,0,0,0.1);" %> <%= image_tag @proposal.image.variant(:large),
alt: @proposal.image.title.unicode_normalize,
style: "width: 100%; box-shadow: -16px 61px 49px -19px rgba(0,0,0,0.1);" %>
<% else %> <% else %>
<%= image_tag "default_mailing.jpg", style: "width: 100%; box-shadow: -16px 61px 49px -19px rgba(0,0,0,0.1);" %> <%= image_tag "default_mailing.jpg",
alt: "",
style: "width: 100%; box-shadow: -16px 61px 49px -19px rgba(0,0,0,0.1);" %>
<% end %> <% end %>
<p style="padding: 0 50px; font-size:32px; text-align: left; line-height:43px; color: #515151;"><%= t("dashboard.mailer.forward.hi") %></p> <p style="padding: 0 50px; font-size:32px; text-align: left; line-height:43px; color: #515151;"><%= t("dashboard.mailer.forward.hi") %></p>

View File

@@ -2,14 +2,18 @@
<div class="row expanded"> <div class="row expanded">
<div class="small-12 medium-9 column dashboard-mail-preview"> <div class="small-12 medium-9 column dashboard-mail-preview">
<div class="mail-header text-left"> <div class="mail-header text-left">
<%= image_tag "quote_before_white.png" %> <%= image_tag "quote_before_white.png", alt: "" %>
<h1 class="inline"><%= proposal.title %></h1> <h1 class="inline"><%= proposal.title %></h1>
<%= image_tag "quote_after_white.png" %> <%= image_tag "quote_after_white.png", alt: "" %>
<h2><%= sanitize(t("dashboard.mailer.forward.subtitle")) %></h2> <h2><%= sanitize(t("dashboard.mailer.forward.subtitle")) %></h2>
</div> </div>
<div class="margin-bottom"> <div class="margin-bottom">
<%= image_tag(proposal.image&.variant(:large).presence || "default_mailing.jpg") %> <% if proposal.image.present? %>
<%= image_tag(proposal.image.variant(:large), alt: proposal.image.title.unicode_normalize) %>
<% else %>
<%= image_tag("default_mailing.jpg", alt: "") %>
<% end %>
</div> </div>
<div class="mail-body"> <div class="mail-body">

View File

@@ -6,7 +6,7 @@
<h1> <h1>
<%= t("dashboard.poster.index.poster_title") %> <%= t("dashboard.poster.index.poster_title") %>
<br> <br>
<%= image_tag("finger.png") %> <%= image_tag("finger.png", alt: "") %>
<%= t("dashboard.poster.index.poster_subtitle") %> <%= t("dashboard.poster.index.poster_subtitle") %>
</h1> </h1>
<p class="intro"> <p class="intro">
@@ -25,9 +25,9 @@
</div> </div>
<div class="poster-content"> <div class="poster-content">
<h2><%= t("dashboard.poster.index.support") %></h2> <h2><%= t("dashboard.poster.index.support") %></h2>
<%= image_tag "quote_before_blue.png" %> <%= image_tag "quote_before_blue.png", alt: "" %>
<h3><%= proposal.title %></h3> <h3><%= proposal.title %></h3>
<%= image_tag "quote_after_blue.png" %> <%= image_tag "quote_after_blue.png", alt: "" %>
<p class="poster-footer"> <p class="poster-footer">
<%= sanitize(t("dashboard.poster.index.footer", link: proposal_url(proposal))) %> <%= sanitize(t("dashboard.poster.index.footer", link: proposal_url(proposal))) %>
</p> </p>

View File

@@ -11,7 +11,7 @@
<h1> <h1>
<strong><%= t("dashboard.poster.index.poster_title") %> <strong><%= t("dashboard.poster.index.poster_title") %>
<br> <br>
<%= wicked_pdf_image_tag("finger.png") %> <%= wicked_pdf_image_tag("finger.png", alt: "") %>
<%= t("dashboard.poster.index.poster_subtitle") %> <%= t("dashboard.poster.index.poster_subtitle") %>
</strong> </strong>
</h1> </h1>
@@ -30,9 +30,9 @@
</div> </div>
<div class="poster-content"> <div class="poster-content">
<h2 class="text-center"><strong><%= t("dashboard.poster.index.support") %></strong></h2> <h2 class="text-center"><strong><%= t("dashboard.poster.index.support") %></strong></h2>
<%= wicked_pdf_image_tag "quote_before_blue.png" %> <%= wicked_pdf_image_tag "quote_before_blue.png", alt: "" %>
<h3><strong><%= proposal.title %></strong></h3> <h3><strong><%= proposal.title %></strong></h3>
<%= wicked_pdf_image_tag "quote_after_blue.png" %> <%= wicked_pdf_image_tag "quote_after_blue.png", alt: "" %>
<p class="poster-footer"> <p class="poster-footer">
<%= sanitize(t("dashboard.poster.index.footer", link: proposal_url(proposal))) %> <%= sanitize(t("dashboard.poster.index.footer", link: proposal_url(proposal))) %>
</p> </p>

View File

@@ -13,7 +13,7 @@
</div> </div>
<div class="show-for-medium medium-9 column text-center"> <div class="show-for-medium medium-9 column text-center">
<%= image_tag(image_path_for("map.jpg"), usemap: "#map") %> <%= image_tag(image_path_for("map.jpg"), alt: t("shared.tags_cloud.districts_list"), usemap: "#map") %>
</div> </div>
<map name="map" id="html_map"> <map name="map" id="html_map">

View File

@@ -8,7 +8,7 @@ describe Shared::AvatarComponent do
render_inline component render_inline component
expect(page).to have_css "svg", count: 1 expect(page).to have_css "svg", count: 1
expect(page).to have_css "svg[role='img'][aria-label='']" expect(page).to have_css "svg[role='img'][aria-hidden='true']"
end end
it "shows the initial letter of the name" do it "shows the initial letter of the name" do

View File

@@ -45,19 +45,19 @@ describe "Admin custom images", :admin do
visit proposals_path visit proposals_path
within("#map") do within("#map") do
expect(page).to have_css("img[src*='custom_map.jpg']") expect(page).to have_css("img[src*='custom_map.jpg'][alt='Districts list']")
end end
visit map_proposals_path visit map_proposals_path
within(".show-for-medium") do within(".show-for-medium") do
expect(page).to have_css("img[src*='custom_map.jpg']") expect(page).to have_css("img[src*='custom_map.jpg'][alt='Districts list']")
end end
visit budget_group_path(budget, group) visit budget_group_path(budget, group)
within(".show-for-medium") do within(".show-for-medium") do
expect(page).to have_css("img[src*='custom_map.jpg']") expect(page).to have_css("img[src*='custom_map.jpg'][alt='Districts list']")
end end
end end

View File

@@ -170,7 +170,7 @@ describe "Cross-Site Scripting protection" do
end end
scenario "legislation version body filters script tags but not header IDs nor tags like images" do scenario "legislation version body filters script tags but not header IDs nor tags like images" do
markdown = "# Title 1\n<a href='https://domain.com/url'>link</a><img src='/image.png'>" markdown = "# Title 1\n<a href='https://domain.com/url'>link</a><img src='/image.png' alt='text'>"
version = create(:legislation_draft_version, :published, body: "#{markdown}#{attack_code}") version = create(:legislation_draft_version, :published, body: "#{markdown}#{attack_code}")
visit legislation_process_draft_version_path(version.process, version) visit legislation_process_draft_version_path(version.process, version)
@@ -178,6 +178,6 @@ describe "Cross-Site Scripting protection" do
expect(page.text).not_to be_empty expect(page.text).not_to be_empty
expect(page).to have_css "h1#title-1", text: "Title 1" expect(page).to have_css "h1#title-1", text: "Title 1"
expect(page).to have_link "link", href: "https://domain.com/url" expect(page).to have_link "link", href: "https://domain.com/url"
expect(page).to have_css('img[src="/image.png"') expect(page).to have_css('img[src="/image.png"]')
end end
end end