Skip to content

Allow non-GOV.UK favicon and opengraph assets #387

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## Unreleased

- [Allow non-GOV.UK favicon and opengraph assets](https://github.com/alphagov/tech-docs-gem/pull/387)

To use a non-crown assets, you need to
- add `favicon.ico`, `favicon.svg` and `opengraph-image.png` to your `source/images` folder.
- set `show_govuk_logo: false`

## 4.1.2

## Fixes
Expand Down
6 changes: 5 additions & 1 deletion lib/govuk_tech_docs/meta_tags.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ def canonical_url
attr_reader :config, :current_page

def page_image
"#{host}/assets/govuk/assets/images/govuk-opengraph-image.png"
if config[:tech_docs][:show_govuk_logo]
"#{host}/assets/govuk/assets/images/govuk-opengraph-image.png"
else
"#{host}/images/opengraph-image.png"
end
end

def site_name
Expand Down
15 changes: 10 additions & 5 deletions lib/source/layouts/core.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@
<%= stylesheet_link_tag :manifest %>

<link rel="canonical" href="<%= meta_tags.canonical_url %>">
<link rel="icon" sizes="48x48" href="/assets/govuk/assets/images/favicon.ico">
<link rel="icon" sizes="any" href="/assets/govuk/assets/images/favicon.svg" type="image/svg+xml">
<link rel="mask-icon" href="/assets/govuk/assets/images/govuk-icon-mask.svg" color="#0b0c0c">
<link rel="apple-touch-icon" href="/assets/govuk/assets/images/govuk-icon-180.png">
<link rel="manifest" href="/assets/govuk/assets/manifest.json">
<% if config[:tech_docs][:show_govuk_logo] %>
<link rel="icon" sizes="48x48" href="/assets/govuk/assets/images/favicon.ico">
<link rel="icon" sizes="any" href="/assets/govuk/assets/images/favicon.svg" type="image/svg+xml">
<link rel="mask-icon" href="/assets/govuk/assets/images/govuk-icon-mask.svg" color="#0b0c0c">
<link rel="apple-touch-icon" href="/assets/govuk/assets/images/govuk-icon-180.png">
<link rel="manifest" href="/assets/govuk/assets/manifest.json">
<% else %>
<link rel="icon" sizes="48x48" href="/images/favicon.ico">
<link rel="icon" sizes="any" href="/images/favicon.svg" type="image/svg+xml">
<% end %>

<% meta_tags.tags.each do |name, content| %>
<%= tag :meta, name: name, content: content %>
Expand Down
52 changes: 52 additions & 0 deletions spec/govuk_tech_docs/meta_tags_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def generate_title(site_name:, page_title:)
host: "https://www.example.org",
service_name: "Foo",
full_service_name: "Test Site",
show_govuk_logo: true,
)

current_page = double("current_page",
Expand All @@ -56,6 +57,31 @@ def generate_title(site_name:, page_title:)
)
end

it "returns standard meta tag with non GOV.UK twitter image" do
config = generate_config(
host: "https://www.example.org",
service_name: "Foo",
full_service_name: "Test Site",
show_govuk_logo: false,
)

current_page = double("current_page",
data: { description: "The description.", title: "The Title" },
url: "/foo.html",
metadata: { locals: {} })

tags = GovukTechDocs::MetaTags.new(config, current_page).tags

expect(tags).to eql(
"description" => "The description.",
"twitter:card" => "summary",
"twitter:domain" => "www.example.org",
"twitter:image" => "https://www.example.org/images/opengraph-image.png",
"twitter:title" => "The Title - Test Site",
"twitter:url" => "https://www.example.org/foo.html",
)
end

it "adds a noindex robots tag when the site config prevents indexing" do
config = generate_config(
prevent_indexing: true,
Expand Down Expand Up @@ -128,6 +154,7 @@ def generate_title(site_name:, page_title:)
host: "https://www.example.org",
service_name: "Foo",
full_service_name: "Test Site",
show_govuk_logo: true,
)

current_page = double("current_page",
Expand All @@ -147,6 +174,31 @@ def generate_title(site_name:, page_title:)
)
end

it "returns a custom opengraph meta tag image" do
config = generate_config(
host: "https://www.example.org",
service_name: "Foo",
full_service_name: "Test Site",
show_govuk_logo: false,
)

current_page = double("current_page",
data: { description: "The description.", title: "The Title" },
url: "/foo.html",
metadata: { locals: {} })

og_tags = GovukTechDocs::MetaTags.new(config, current_page).opengraph_tags

expect(og_tags).to eql(
"og:description" => "The description.",
"og:image" => "https://www.example.org/images/opengraph-image.png",
"og:site_name" => "Test Site",
"og:title" => "The Title",
"og:type" => "object",
"og:url" => "https://www.example.org/foo.html",
)
end

it "uses the local variable as page title for proxied pages" do
current_page = double("current_page",
data: { description: "The description." },
Expand Down