diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb
index 7211acc53dcc65349a17b77d32723296b66bc89d..4a737587899466b3e23c3d37e8f493ef6be2d754 100644
--- a/spec/controllers/projects/jobs_controller_spec.rb
+++ b/spec/controllers/projects/jobs_controller_spec.rb
@@ -69,18 +69,11 @@ describe Projects::JobsController do
         Ci::Build::AVAILABLE_STATUSES.each do |status|
           create_build(status, status)
         end
-
-        RequestStore.begin!
-      end
-
-      after do
-        RequestStore.end!
-        RequestStore.clear!
       end
 
-      it "verifies number of queries" do
+      it 'verifies number of queries', :request_store do
         recorded = ActiveRecord::QueryRecorder.new { get_index }
-        expect(recorded.count).to be_within(5).of(8)
+        expect(recorded.count).to be_within(5).of(7)
       end
 
       def create_build(name, status)
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index 0a64fe2beda13df34ff059643e5c4a7acc6d08ec..6e1c91738dba62d7b86cb1187b0c310c4360f254 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -119,10 +119,8 @@ describe Projects::MergeRequestsController do
         end
       end
 
-      context 'number of queries' do
+      context 'number of queries', :request_store do
         it 'verifies number of queries' do
-          RequestStore.begin!
-
           # pre-create objects
           merge_request
 
@@ -130,9 +128,6 @@ describe Projects::MergeRequestsController do
 
           expect(recorded.count).to be_within(5).of(30)
           expect(recorded.cached_count).to eq(0)
-
-          RequestStore.end!
-          RequestStore.clear!
         end
       end
     end
diff --git a/spec/controllers/projects/pipelines_controller_spec.rb b/spec/controllers/projects/pipelines_controller_spec.rb
index c880da1e36a4c428b32a84b4b8a5b9d6d598cedb..954f89e38546a1f4ae4a1039c9768bfa54d580cc 100644
--- a/spec/controllers/projects/pipelines_controller_spec.rb
+++ b/spec/controllers/projects/pipelines_controller_spec.rb
@@ -49,21 +49,14 @@ describe Projects::PipelinesController do
       expect(json_response['details']).to have_key 'stages'
     end
 
-    context 'when the pipeline has multiple stages and groups' do
+    context 'when the pipeline has multiple stages and groups', :request_store do
       before do
-        RequestStore.begin!
-
         create_build('build', 0, 'build')
         create_build('test', 1, 'rspec 0')
         create_build('deploy', 2, 'production')
         create_build('post deploy', 3, 'pages 0')
       end
 
-      after do
-        RequestStore.end!
-        RequestStore.clear!
-      end
-
       let(:project) { create(:project) }
       let(:pipeline) do
         create(:ci_empty_pipeline, project: project, user: user, sha: project.commit.id)
diff --git a/spec/lib/banzai/filter/abstract_reference_filter_spec.rb b/spec/lib/banzai/filter/abstract_reference_filter_spec.rb
index 27684882435ff5cb68109bda62e2d9318324e4cb..787c2372c5b9f908ea2c6d822e65d65a1be52475 100644
--- a/spec/lib/banzai/filter/abstract_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/abstract_reference_filter_spec.rb
@@ -47,16 +47,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
       end
     end
 
-    context 'with RequestStore enabled' do
-      before do
-        RequestStore.begin!
-      end
-
-      after do
-        RequestStore.end!
-        RequestStore.clear!
-      end
-
+    context 'with RequestStore enabled', :request_store do
       it 'returns a list of Projects for a list of paths' do
         expect(filter.find_projects_for_paths([project.path_with_namespace])).
           to eq([project])
diff --git a/spec/lib/banzai/issuable_extractor_spec.rb b/spec/lib/banzai/issuable_extractor_spec.rb
index e5d332efb085f199fe9ffe39c383f16d16624ca9..866297f94a97b8f4d4b85ff691e034e55804c371 100644
--- a/spec/lib/banzai/issuable_extractor_spec.rb
+++ b/spec/lib/banzai/issuable_extractor_spec.rb
@@ -29,16 +29,7 @@ describe Banzai::IssuableExtractor, lib: true do
     expect(result).to eq(issue_link => issue, merge_request_link => merge_request)
   end
 
-  describe 'caching' do
-    before do
-      RequestStore.begin!
-    end
-
-    after do
-      RequestStore.end!
-      RequestStore.clear!
-    end
-
+  describe 'caching', :request_store do
     it 'saves records to cache' do
       extractor.extract([issue_link, merge_request_link])
 
diff --git a/spec/lib/banzai/reference_parser/user_parser_spec.rb b/spec/lib/banzai/reference_parser/user_parser_spec.rb
index 592ed0d2b982820f6a4b2099a33f5d2942c8c25a..4d560667342b96f933e185fb3a7ef761f780d34f 100644
--- a/spec/lib/banzai/reference_parser/user_parser_spec.rb
+++ b/spec/lib/banzai/reference_parser/user_parser_spec.rb
@@ -43,18 +43,9 @@ describe Banzai::ReferenceParser::UserParser, lib: true do
         expect(subject.referenced_by([link])).to eq([user])
       end
 
-      context 'when RequestStore is active' do
+      context 'when RequestStore is active', :request_store do
         let(:other_user) { create(:user) }
 
-        before do
-          RequestStore.begin!
-        end
-
-        after do
-          RequestStore.end!
-          RequestStore.clear!
-        end
-
         it 'does not return users from the first call in the second' do
           link['data-user'] = user.id.to_s
 
diff --git a/spec/models/concerns/routable_spec.rb b/spec/models/concerns/routable_spec.rb
index 0e10d91836d8964f49c573fac729c82944f93084..65f05121b403bf538f465a57c3e692f1f212e160 100644
--- a/spec/models/concerns/routable_spec.rb
+++ b/spec/models/concerns/routable_spec.rb
@@ -122,16 +122,7 @@ describe Group, 'Routable' do
     it { expect(group.full_path).to eq(group.path) }
     it { expect(nested_group.full_path).to eq("#{group.full_path}/#{nested_group.path}") }
 
-    context 'with RequestStore active' do
-      before do
-        RequestStore.begin!
-      end
-
-      after do
-        RequestStore.end!
-        RequestStore.clear!
-      end
-
+    context 'with RequestStore active', :request_store do
       it 'does not load the route table more than once' do
         expect(group).to receive(:uncached_full_path).once.and_call_original
 
diff --git a/spec/models/project_team_spec.rb b/spec/models/project_team_spec.rb
index 362565506e577c1c964d4f60513511389074990c..497e3cdf415ca8bd9d2905104a329f263dd6322e 100644
--- a/spec/models/project_team_spec.rb
+++ b/spec/models/project_team_spec.rb
@@ -389,16 +389,7 @@ describe ProjectTeam, models: true do
   end
 
   describe '#max_member_access_for_user_ids' do
-    context 'with RequestStore enabled' do
-      before do
-        RequestStore.begin!
-      end
-
-      after do
-        RequestStore.end!
-        RequestStore.clear!
-      end
-
+    context 'with RequestStore enabled', :request_store do
       include_examples 'max member access for users'
 
       def access_levels(users)
diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb
index 088f24eb18079041977add711feb2fed71b2cc32..34b19fb9fc40470a0b8b932c523c63dfeb4eb7e1 100644
--- a/spec/serializers/pipeline_serializer_spec.rb
+++ b/spec/serializers/pipeline_serializer_spec.rb
@@ -102,18 +102,11 @@ describe PipelineSerializer do
         Ci::Pipeline::AVAILABLE_STATUSES.each do |status|
           create_pipeline(status)
         end
-
-        RequestStore.begin!
-      end
-
-      after do
-        RequestStore.end!
-        RequestStore.clear!
       end
 
-      it "verifies number of queries" do
+      it 'verifies number of queries', :request_store do
         recorded = ActiveRecord::QueryRecorder.new { subject }
-        expect(recorded.count).to be_within(1).of(60)
+        expect(recorded.count).to be_within(1).of(57)
         expect(recorded.cached_count).to eq(0)
       end
 
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 8b8fbf6e86201ca2998ac5f4b0fcf1cb099eac78..110428da794bec3f5d04a112711e85978bd8086e 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -74,6 +74,15 @@ RSpec.configure do |config|
     TestEnv.cleanup
   end
 
+  config.before(:example, :request_store) do
+    RequestStore.begin!
+  end
+
+  config.after(:example, :request_store) do
+    RequestStore.end!
+    RequestStore.clear!
+  end
+
   if ENV['CI']
     # Retry only on feature specs that use JS
     config.around :each, :js do |ex|