diff --git a/CHANGELOG.md b/CHANGELOG.md
index bd2903e2..a85927c3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/lib/govuk_tech_docs/meta_tags.rb b/lib/govuk_tech_docs/meta_tags.rb
index 56ade52f..a6f218e7 100644
--- a/lib/govuk_tech_docs/meta_tags.rb
+++ b/lib/govuk_tech_docs/meta_tags.rb
@@ -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
diff --git a/lib/source/layouts/core.erb b/lib/source/layouts/core.erb
index 499083dd..21ba63ac 100644
--- a/lib/source/layouts/core.erb
+++ b/lib/source/layouts/core.erb
@@ -10,11 +10,16 @@
<%= stylesheet_link_tag :manifest %>
-
-
-
-
-
+ <% if config[:tech_docs][:show_govuk_logo] %>
+
+
+
+
+
+ <% else %>
+
+
+ <% end %>
<% meta_tags.tags.each do |name, content| %>
<%= tag :meta, name: name, content: content %>
diff --git a/spec/govuk_tech_docs/meta_tags_spec.rb b/spec/govuk_tech_docs/meta_tags_spec.rb
index cb85ec2c..ea876ad6 100644
--- a/spec/govuk_tech_docs/meta_tags_spec.rb
+++ b/spec/govuk_tech_docs/meta_tags_spec.rb
@@ -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",
@@ -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,
@@ -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",
@@ -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." },