diff --git a/Gemfile b/Gemfile
index e5d4d9e5fac..9b12bf32f03 100644
--- a/Gemfile
+++ b/Gemfile
@@ -12,6 +12,7 @@ gem "gds-api-adapters"
gem "govspeak"
gem "govuk_app_config"
gem "govuk_publishing_components"
+gem "govuk_web_banners"
gem "htmlentities"
gem "httparty"
gem "json"
diff --git a/Gemfile.lock b/Gemfile.lock
index 21ff8aec629..dcd1bee7712 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -205,6 +205,9 @@ GEM
capybara (>= 3.36)
puma
selenium-webdriver (>= 4.0)
+ govuk_web_banners (0.1.0)
+ govuk_publishing_components
+ rails (>= 7)
hashdiff (1.1.1)
htmlentities (4.3.4)
http-accept (1.7.0)
@@ -694,6 +697,7 @@ DEPENDENCIES
govuk_publishing_components
govuk_schemas
govuk_test
+ govuk_web_banners
htmlentities
httparty
json
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index d5947d87632..09a5da7b613 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -2,8 +2,9 @@
//= require govuk_publishing_components/components/checkboxes
//= require govuk_publishing_components/components/error-summary
//= require govuk_publishing_components/components/govspeak
-//= require govuk_publishing_components/components/intervention
//= require govuk_publishing_components/components/print-link
//= require govuk_publishing_components/components/radio
//= require govuk_publishing_components/components/step-by-step-nav
//= require govuk_publishing_components/components/table
+
+//= require govuk_web_banners/dependencies
diff --git a/app/helpers/recruitment_banner_helper.rb b/app/helpers/recruitment_banner_helper.rb
deleted file mode 100644
index c7eb0f3e9eb..00000000000
--- a/app/helpers/recruitment_banner_helper.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module RecruitmentBannerHelper
- def recruitment_banner
- return false if recruitment_banners.nil?
-
- current_path = request.path
-
- recruitment_banners.find do |banner|
- next unless valid?(banner)
-
- banner["page_paths"]&.include?(current_path)
- end
- end
-
- def recruitment_banners
- recruitment_banners_urls_file_path = Rails.root.join("lib/data/recruitment_banners.yml")
- recruitment_banners_data = YAML.load_file(recruitment_banners_urls_file_path)
- recruitment_banners_data["banners"]
- end
-
- def valid?(banner)
- required_fields.select { |field| banner[field].present? } == required_fields
- end
-
- def required_fields
- %w[survey_url suggestion_text suggestion_link_text page_paths]
- end
-end
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index afe689b1744..c3ade32fa66 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,6 +1,7 @@
<% content_for :body do %>
<%= yield :breadcrumbs %>
+ <%= render "govuk_web_banners/recruitment_banner" %>
<%= yield %>
diff --git a/app/views/shared/_intervention_banner.html.erb b/app/views/shared/_intervention_banner.html.erb
deleted file mode 100644
index 874c5f51308..00000000000
--- a/app/views/shared/_intervention_banner.html.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-<% if recruitment_banner.present? %>
-
- <%= render "govuk_publishing_components/components/intervention", {
- new_tab: true,
- suggestion_text: recruitment_banner["suggestion_text"],
- suggestion_link_text: recruitment_banner["suggestion_link_text"],
- suggestion_link_url: recruitment_banner["survey_url"],
- } %>
-
-<% end %>
diff --git a/lib/data/recruitment_banners.yml b/lib/data/recruitment_banners.yml
deleted file mode 100644
index 1cff13a8dbb..00000000000
--- a/lib/data/recruitment_banners.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Example usage of adding a banner to the banners list:
-
- # - name: Banner 1
- # suggestion_text: "Help improve GOV.UK"
- # suggestion_link_text: "Take part in user research"
- # survey_url: https://google.com
- # page_paths:
- # - /
- # - /foreign-travel-advice
-
-banners:
diff --git a/test/fixtures/recruitment_banners.yml b/test/fixtures/recruitment_banners.yml
deleted file mode 100644
index d0a1cf5cd37..00000000000
--- a/test/fixtures/recruitment_banners.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-banners:
- - name: Banner 1
- suggestion_text: "Help improve GOV.UK"
- suggestion_link_text: "Take part in user research"
- survey_url: https://google.com
- page_paths:
- - /
-
- - name: Banner 2
- suggestion_text: "Help improve GOV.UK"
- suggestion_link_text: "Take part in user research"
- survey_url: https://google.com
- page_paths:
- - /some_path
diff --git a/test/unit/helpers/recruitment_banner_helper_test.rb b/test/unit/helpers/recruitment_banner_helper_test.rb
deleted file mode 100644
index 3c261853f0a..00000000000
--- a/test/unit/helpers/recruitment_banner_helper_test.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require "test_helper"
-
-class RecruitmentBannerHelperTest < ActionView::TestCase
- include RecruitmentBannerHelper
-
- def setup
- @recruitment_banners_data = YAML.load_file(Rails.root.join("test/fixtures/recruitment_banners.yml"))
- end
-
- def request
- OpenStruct.new(path: "/")
- end
-
- def recruitment_banners
- @recruitment_banners_data["banners"]
- end
-
- test "recruitment_banner returns banners that include the current url" do
- actual_banners = recruitment_banner
-
- expected_banners =
- {
- "name" => "Banner 1",
- "suggestion_text" => "Help improve GOV.UK",
- "suggestion_link_text" => "Take part in user research",
- "survey_url" => "https://google.com",
- "page_paths" => ["/"],
- }
- assert_equal expected_banners, actual_banners
- end
-
- test "recruitment_banners yaml structure is valid" do
- @recruitment_banners_data = YAML.load_file(Rails.root.join("lib/data/recruitment_banners.yml"))
-
- if @recruitment_banners_data["banners"].present?
- recruitment_banners.each do |banner|
- assert banner.key?("suggestion_text"), "Banner is missing 'suggestion_text' key"
- assert_not banner["suggestion_text"].blank?, "'suggestion_text' key should not be blank"
-
- assert banner.key?("suggestion_link_text"), "Banner is missing 'suggestion_link_text' key"
- assert_not banner["suggestion_link_text"].blank?, "'suggestion_link_text' key should not be blank"
-
- assert banner.key?("survey_url"), "Banner is missing 'survey_url' key"
- assert_not banner["survey_url"].blank?, "'survey_url' key should not be blank"
-
- assert banner.key?("page_paths"), "Banner is missing 'page_paths' key"
- assert_not banner["page_paths"].blank?, "'page_paths' key should not be blank"
- end
- end
- end
-end