diff --git a/ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb
index d8fe3a807bb2e0a9f3d1563c655e477c373e5065..74daefff49c5c6437366cc7f98b241213cd275b2 100644
--- a/ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'API-Fuzzing.gitlab-ci.yml' do
+RSpec.describe 'API-Fuzzing.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('API-Fuzzing') }
 
   specify { expect(template).not_to be_nil }
@@ -133,7 +133,8 @@
 
           it 'includes no jobs' do
             expect(build_names).to be_empty
-            expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+            expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+              'The rules configuration prevented any jobs from being added to the pipeline.'])
           end
         end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb
index 6e1e3cadbed7ed69da63d966c3af814910f3e1e9..dd928407f7d572cc95f18f2e4182180802d23f4b 100644
--- a/ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'API-Fuzzing.latest.gitlab-ci.yml' do
+RSpec.describe 'API-Fuzzing.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('API-Fuzzing.latest') }
 
   specify { expect(template).not_to be_nil }
@@ -131,7 +131,8 @@
 
           it 'includes no jobs' do
             expect(build_names).to be_empty
-            expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+            expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+              'The rules configuration prevented any jobs from being added to the pipeline.'])
           end
         end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb
index 9eb8e2b2e44948f78b03d12378b0ca103c31d31d..989b9077bd3b4c4e27b553560089df616687ab84 100644
--- a/ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Container-Scanning.gitlab-ci.yml' do
+RSpec.describe 'Container-Scanning.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Container-Scanning') }
 
   describe 'the created pipeline' do
@@ -46,7 +46,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb
index 1c837f8d2ef89975e74d0d6cc6f1879ddd4bfb80..af4cc0f9be74283165e9221d06eb458c88fea3fe 100644
--- a/ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Container-Scanning.latest.gitlab-ci.yml' do
+RSpec.describe 'Container-Scanning.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       include:
@@ -80,7 +80,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb
index 7e1d0c87ea7594948a577652670d75cbe4375172..949002a5f986da0d1d1845e72ffbed1a7ad1dadb 100644
--- a/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Coverage-Fuzzing.gitlab-ci.yml' do
+RSpec.describe 'Coverage-Fuzzing.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       stages:
@@ -47,7 +47,8 @@
 
         it 'includes no job' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -60,7 +61,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_latest_gitlab_ci_yaml_spec.rb
index c5c9c3512de67862560495721661ebe46e037d01..e5b6dd353f8e914b02e3f81c5377b46c32757cd4 100644
--- a/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Coverage-Fuzzing.latest.gitlab-ci.yml' do
+RSpec.describe 'Coverage-Fuzzing.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       stages:
@@ -47,7 +47,8 @@
 
         it 'includes no job' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -62,7 +63,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb
index b9b2e361e39e7a1cb52e40c932bbdcb7b863052c..33766acd3050bdd2ff4b175effe3d7e774c1081c 100644
--- a/ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'DAST-API.gitlab-ci.yml' do
+RSpec.describe 'DAST-API.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('DAST-API') }
 
   specify { expect(template).not_to be_nil }
@@ -96,7 +96,8 @@
 
           it 'includes no jobs' do
             expect(build_names).to be_empty
-            expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+            expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+              'The rules configuration prevented any jobs from being added to the pipeline.'])
           end
         end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb
index b17dc8385e9b4b7d2186803cb5564681e8cf4cc6..b5b1ff88555689cc26282e79cf0a4b76b14fa96b 100644
--- a/ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'DAST-API.latest.gitlab-ci.yml' do
+RSpec.describe 'DAST-API.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('DAST-API.latest') }
 
   specify { expect(template).not_to be_nil }
@@ -94,7 +94,8 @@
 
           it 'includes no jobs' do
             expect(build_names).to be_empty
-            expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+            expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+              'The rules configuration prevented any jobs from being added to the pipeline.'])
           end
         end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb
index ac8eaecc7043b932f89197a946426c403e1299a8..58d872e58fb869dc398e7b9af6b64c595a14e06f 100644
--- a/ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'DAST.gitlab-ci.yml' do
+RSpec.describe 'DAST.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('DAST') }
 
   describe 'the created pipeline' do
@@ -49,7 +49,8 @@
       context 'when project has no license' do
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -71,7 +72,8 @@
 
           it 'includes no jobs' do
             expect(build_names).to be_empty
-            expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+            expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+              'The rules configuration prevented any jobs from being added to the pipeline.'])
           end
         end
 
@@ -83,7 +85,8 @@
           context 'when on default branch' do
             it 'includes no jobs' do
               expect(build_names).to be_empty
-              expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+              expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.'])
             end
           end
 
@@ -120,7 +123,8 @@
 
             it 'includes no jobs' do
               expect(build_names).to be_empty
-              expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+              expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.'])
             end
           end
         end
diff --git a/ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb
index 3da6558ed7299201bef584ca81e814c76b3f78d5..0f9bfdab1f29ade7c49848038701b6afbab3b3bb 100644
--- a/ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb
@@ -5,11 +5,12 @@
 RSpec.shared_examples 'includes no jobs' do
   it 'includes no jobs' do
     expect(build_names).to be_empty
-    expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+    expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+      'The rules configuration prevented any jobs from being added to the pipeline.'])
   end
 end
 
-RSpec.describe 'DAST.latest.gitlab-ci.yml' do
+RSpec.describe 'DAST.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('DAST.latest') }
 
   describe 'the created pipeline' do
diff --git a/ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb
index ef95a6b5d4907d2ef3aebc0ea1f614f1e8c06bc1..ad4846240c53953ea87b3c8e1ef1b2bfc89593d0 100644
--- a/ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb
@@ -68,7 +68,8 @@
 
       it 'includes no job' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
   end
@@ -108,7 +109,7 @@
   end
 end
 
-RSpec.describe 'Dependency-Scanning.gitlab-ci.yml' do
+RSpec.describe 'Dependency-Scanning.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Dependency-Scanning') }
 
   describe 'the created pipeline' do
@@ -131,7 +132,8 @@
     context 'when project has no license' do
       it 'includes no jobs' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
@@ -149,7 +151,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -186,7 +189,8 @@
 
             it 'creates a pipeline excluding jobs from specified analyzers' do
               expect(build_names).to be_empty
-              expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+              expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.'])
             end
           end
         end
diff --git a/ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb
index 5633e9f6f2dbdc9ce700847085356a547850b6e3..a57574f1a87adeb2d61c2f23d45aca614a1b40aa 100644
--- a/ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb
@@ -69,7 +69,8 @@
 
       it 'includes no job' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
@@ -141,7 +142,7 @@
   end
 end
 
-RSpec.describe 'Dependency-Scanning.latest.gitlab-ci.yml' do
+RSpec.describe 'Dependency-Scanning.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       include:
@@ -169,7 +170,8 @@
     context 'when project has no license' do
       it 'includes no jobs' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
@@ -187,7 +189,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -224,7 +227,8 @@
 
             it 'creates a pipeline excluding jobs from specified analyzers' do
               expect(build_names).to be_empty
-              expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+              expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.'])
             end
           end
         end
diff --git a/ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb
index cfc2a2ad563d228ef2f9ee179c68af1250a51721..3ddd3bf23ccee53f4eaa7c38400981a585c53cc2 100644
--- a/ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'License-Scanning.gitlab-ci.yml' do
+RSpec.describe 'License-Scanning.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('License-Scanning') }
 
   describe 'the created pipeline' do
@@ -25,7 +25,8 @@
     context 'when project has no license' do
       it 'includes no jobs' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
@@ -49,7 +50,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb
index b825d79374c80b81afbc4d1bf39c8351c6faa225..b905101fc15b312cc976ebfea6fea59fd2af652e 100644
--- a/ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'License-Scanning.gitlab-ci.yml' do
+RSpec.describe 'License-Scanning.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       include:
@@ -30,7 +30,8 @@
     context 'when project has no license' do
       it 'includes no jobs' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
@@ -83,7 +84,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb
index 5727896156ba9f53319f89e249aeaac9a5ad4404..de2e00b2a81884fd9ebd7579e2b6a21178cbf242 100644
--- a/ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'SAST.gitlab-ci.yml' do
+RSpec.describe 'SAST.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('SAST') }
 
   describe 'the created pipeline' do
@@ -30,7 +30,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -43,7 +44,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb
index fe477271c05868c62773aa3e10a9104505df01f9..b286aab43fc0a5ca735a9f5f89a13b19d9da9db5 100644
--- a/ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'SAST-IaC.gitlab-ci.yml' do
+RSpec.describe 'SAST-IaC.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('SAST-IaC') }
 
   describe 'the created pipeline' do
@@ -30,7 +30,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb
index 76834c120c66d36c0032540257a6bdb8ecff6a37..ae49cbc685050a45c98a7dbe52a40810ad78991a 100644
--- a/ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'SAST.latest.gitlab-ci.yml' do
+RSpec.describe 'SAST.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       include:
@@ -35,7 +35,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -48,7 +49,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb
index 61816be74f0069733197fa99c041d0bd5033496f..ef437a37e32eaa001140991aa0c626e1e79f16f7 100644
--- a/ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Secret-Detection.gitlab-ci.yml' do
+RSpec.describe 'Secret-Detection.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Secret-Detection') }
 
   describe 'the created pipeline' do
@@ -30,7 +30,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
diff --git a/ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb b/ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb
index 11d4fac281511c4d534e6ac2ac62fded1808e567..d8857061068c34b53b8867f0ad907d3cefe3c4a7 100644
--- a/ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb
+++ b/ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Secret-Detection.gitlab-ci.yml' do
+RSpec.describe 'Secret-Detection.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) do
     <<~YAML
       include:
@@ -35,7 +35,8 @@
 
         it 'includes no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
diff --git a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb
index 45c165cd0b52fb8365b1bf53209ea3361582ee34..ac22a891b652715ad3ff91a7a68a49797176a863 100644
--- a/ee/spec/services/merge_trains/create_pipeline_service_spec.rb
+++ b/ee/spec/services/merge_trains/create_pipeline_service_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe MergeTrains::CreatePipelineService do
+RSpec.describe MergeTrains::CreatePipelineService, feature_category: :continuous_integration do
   let_it_be(:project) { create(:project, :repository, :auto_devops, merge_pipelines_enabled: true, merge_trains_enabled: true) }
   let_it_be(:maintainer) { create(:user) }
 
@@ -149,7 +149,10 @@
 
       context 'when .gitlab-ci.yml does not have only: [merge_requests] specification' do
         it_behaves_like 'returns an error' do
-          let(:expected_reason) { 'No stages / jobs for this pipeline.' }
+          let(:expected_reason) do
+            'Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'
+          end
         end
       end
     end
diff --git a/lib/gitlab/ci/pipeline/chain/populate.rb b/lib/gitlab/ci/pipeline/chain/populate.rb
index 654e24be8e111254206879da0d4bdb3537b30168..c59ef2ba6a45bd2005d4ff4a3cfd3a70c1c96522 100644
--- a/lib/gitlab/ci/pipeline/chain/populate.rb
+++ b/lib/gitlab/ci/pipeline/chain/populate.rb
@@ -18,7 +18,8 @@ def perform!
             pipeline.stages = @command.pipeline_seed.stages
 
             if stage_names.empty?
-              return error('No stages / jobs for this pipeline.')
+              return error('Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.')
             end
 
             if pipeline.invalid?
diff --git a/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
index 62de4d2e96dd09f7ccceb7116c593f64bc21df5a..91bb94bbb11b76464914ade255a1a98da01ee5bd 100644
--- a/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Gitlab::Ci::Pipeline::Chain::Populate do
+RSpec.describe Gitlab::Ci::Pipeline::Chain::Populate, feature_category: :continuous_integration do
   let_it_be(:project) { create(:project, :repository) }
   let_it_be(:user) { create(:user) }
 
@@ -90,7 +90,8 @@ def run_chain
 
     it 'appends an error about missing stages' do
       expect(pipeline.errors.to_a)
-        .to include 'No stages / jobs for this pipeline.'
+        .to include 'Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'
     end
 
     it 'wastes pipeline iid' do
diff --git a/spec/lib/gitlab/ci/status/bridge/factory_spec.rb b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb
index 6081f104e42d0fc7751523d42e7e239edfef9799..c13901a47764ad4bdcf47671f36fe9ec12104172 100644
--- a/spec/lib/gitlab/ci/status/bridge/factory_spec.rb
+++ b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Gitlab::Ci::Status::Bridge::Factory do
+RSpec.describe Gitlab::Ci::Status::Bridge::Factory, feature_category: :continuous_integration do
   let(:user) { create(:user) }
   let(:project) { bridge.project }
   let(:status) { factory.fabricate! }
@@ -59,13 +59,15 @@
 
     context 'failed with downstream_pipeline_creation_failed' do
       before do
-        bridge.options = { downstream_errors: ['No stages / jobs for this pipeline.', 'other error'] }
+        bridge.options = { downstream_errors: ['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.', 'other error'] }
         bridge.failure_reason = 'downstream_pipeline_creation_failed'
       end
 
       it 'fabricates correct status_tooltip' do
         expect(status.status_tooltip).to eq(
-          "#{s_('CiStatusText|failed')} - (downstream pipeline can not be created, No stages / jobs for this pipeline., other error)"
+          "#{s_('CiStatusText|failed')} - (downstream pipeline can not be created, Pipeline will not run for the selected trigger. " \
+          "The rules configuration prevented any jobs from being added to the pipeline., other error)"
         )
       end
     end
diff --git a/spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb
index 16c5d7a4b6d9816e117b5288a16325c75aa50606..286f3d10b7fa3a07aad8ea7a522fa85289a3944d 100644
--- a/spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Jobs/Code-Quality.gitlab-ci.yml' do
+RSpec.describe 'Jobs/Code-Quality.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Jobs/Code-Quality') }
 
   describe 'the created pipeline' do
@@ -63,7 +63,8 @@
       context 'on master' do
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -72,7 +73,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -81,7 +83,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb
index 8a5aea7c0f02199396b63ae35bb804a80520ccaf..68d249e31f93442d3ceeb18a917d0413a081d4a7 100644
--- a/spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Jobs/SAST-IaC.gitlab-ci.yml' do
+RSpec.describe 'Jobs/SAST-IaC.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Jobs/SAST-IaC') }
 
   describe 'the created pipeline' do
@@ -50,7 +50,8 @@
       context 'on default branch' do
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -59,7 +60,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb
index d540b035f818b759d01c8f6ac6cd7df7e1d65974..039a6a739dd5d2a7b1be973a8ba0003f3c1d925f 100644
--- a/spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Jobs/SAST-IaC.latest.gitlab-ci.yml' do
+RSpec.describe 'Jobs/SAST-IaC.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Jobs/SAST-IaC.latest') }
 
   describe 'the created pipeline' do
@@ -51,7 +51,8 @@
       context 'on default branch' do
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -60,7 +61,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb
index 7cf0cf3ed3326d7ceab41a08497d054c348b960d..d73d8a15feb8539108593738632617c1baa752b3 100644
--- a/spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Jobs/Test.gitlab-ci.yml' do
+RSpec.describe 'Jobs/Test.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('Jobs/Test') }
 
   describe 'the created pipeline' do
@@ -63,7 +63,8 @@
       context 'on master' do
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -72,7 +73,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
 
@@ -81,7 +83,8 @@
 
         it 'has no jobs' do
           expect(build_names).to be_empty
-          expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+          expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'])
         end
       end
     end
diff --git a/spec/lib/gitlab/ci/templates/npm_spec.rb b/spec/lib/gitlab/ci/templates/npm_spec.rb
index 55fd4675f119ad1786ed3f1947028f87145bae15..a949a7ccfb1a2f03cb6ecc95d3cc40b214c25be8 100644
--- a/spec/lib/gitlab/ci/templates/npm_spec.rb
+++ b/spec/lib/gitlab/ci/templates/npm_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'npm.gitlab-ci.yml' do
+RSpec.describe 'npm.gitlab-ci.yml', feature_category: :continuous_integration do
   subject(:template) { Gitlab::Template::GitlabCiYmlTemplate.find('npm') }
 
   describe 'the created pipeline' do
@@ -43,7 +43,8 @@ def create_tag(name:)
     shared_examples 'no pipeline created' do
       it 'does not create a pipeline because the only job (publish) is not created' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
diff --git a/spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb
index 6ae51f9783b0813a14981d8801c49e82244e77f0..a81f29d0d019305964efc8ba9d4b53f52b28bbd1 100644
--- a/spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'Terraform.latest.gitlab-ci.yml' do
+RSpec.describe 'Terraform.latest.gitlab-ci.yml', feature_category: :continuous_integration do
   before do
     allow(Gitlab::Template::GitlabCiYmlTemplate).to receive(:excluded_patterns).and_return([])
   end
@@ -66,7 +66,12 @@
 
       it 'does not create a branch pipeline', :aggregate_failures do
         expect(branch_build_names).to be_empty
-        expect(branch_pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(branch_pipeline.errors.full_messages).to match_array(
+          [
+            'Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.'
+          ]
+        )
       end
     end
   end
diff --git a/spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb b/spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb
index 157fd39f1cc3e401ad64715a14d24966d95ab3b3..607db33f61a0d32a85d04cba62e77a6436143b6c 100644
--- a/spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb
+++ b/spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe 'ThemeKit.gitlab-ci.yml' do
+RSpec.describe 'ThemeKit.gitlab-ci.yml', feature_category: :continuous_integration do
   before do
     allow(Gitlab::Template::GitlabCiYmlTemplate).to receive(:excluded_patterns).and_return([])
   end
@@ -52,7 +52,8 @@
 
       it 'has no jobs' do
         expect(build_names).to be_empty
-        expect(pipeline.errors.full_messages).to match_array(["No stages / jobs for this pipeline."])
+        expect(pipeline.errors.full_messages).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
   end
diff --git a/spec/services/ci/create_downstream_pipeline_service_spec.rb b/spec/services/ci/create_downstream_pipeline_service_spec.rb
index bcdb2b4f79638c72720a89b34642e59118f7a50d..6046f9b8e19a2a115974d15d22c17affe5749dd1 100644
--- a/spec/services/ci/create_downstream_pipeline_service_spec.rb
+++ b/spec/services/ci/create_downstream_pipeline_service_spec.rb
@@ -825,11 +825,13 @@
       it 'does not create a pipeline and drops the bridge' do
         expect { subject }.not_to change(downstream_project.ci_pipelines, :count)
         expect(subject).to be_error
-        expect(subject.message).to match_array(["No stages / jobs for this pipeline."])
+        expect(subject.message).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
 
         expect(bridge.reload).to be_failed
         expect(bridge.failure_reason).to eq('downstream_pipeline_creation_failed')
-        expect(bridge.options[:downstream_errors]).to eq(['No stages / jobs for this pipeline.'])
+        expect(bridge.options[:downstream_errors]).to match_array(['Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.'])
       end
     end
 
diff --git a/spec/services/ci/create_pipeline_service/rules_spec.rb b/spec/services/ci/create_pipeline_service/rules_spec.rb
index b866293393bdf4e181c2e8d116ed953707cd69b8..26bb8b7d006e0d79d2bb736bf8f39f815383a597 100644
--- a/spec/services/ci/create_pipeline_service/rules_spec.rb
+++ b/spec/services/ci/create_pipeline_service/rules_spec.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 require 'spec_helper'
 
-RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectness do
+RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectness, feature_category: :pipeline_authoring do
   let(:project)     { create(:project, :repository) }
   let(:user)        { project.first_owner }
   let(:ref)         { 'refs/heads/master' }
@@ -1166,7 +1166,8 @@ def find_job(name)
         let(:ref) { 'refs/heads/master' }
 
         it 'invalidates the pipeline with an empty jobs error' do
-          expect(pipeline.errors[:base]).to include('No stages / jobs for this pipeline.')
+          expect(pipeline.errors[:base]).to include('Pipeline will not run for the selected trigger. ' \
+            'The rules configuration prevented any jobs from being added to the pipeline.')
           expect(pipeline).not_to be_persisted
         end
       end
diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb
index 8628e95ba8030fbe4ee75e1cfbe2b15b64968ec8..3d143f1142af8164e9a7ac41cfc3dd6fb407e177 100644
--- a/spec/services/ci/create_pipeline_service_spec.rb
+++ b/spec/services/ci/create_pipeline_service_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectness, :clean_gitlab_redis_cache do
+RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectness, :clean_gitlab_redis_cache, feature_category: :continuous_integration do
   include ProjectForksHelper
 
   let_it_be_with_refind(:project) { create(:project, :repository) }
@@ -684,7 +684,8 @@ def previous_commit_sha_from_ref(ref)
         result = execute_service
 
         expect(result).to be_error
-        expect(result.message).to eq('No stages / jobs for this pipeline.')
+        expect(result.message).to eq('Pipeline will not run for the selected trigger. ' \
+          'The rules configuration prevented any jobs from being added to the pipeline.')
         expect(result.payload).not_to be_persisted
         expect(Ci::Build.all).to be_empty
         expect(Ci::Pipeline.count).to eq(0)
@@ -1423,9 +1424,11 @@ def previous_commit_sha_from_ref(ref)
 
               it 'does not create a detached merge request pipeline', :aggregate_failures do
                 expect(response).to be_error
-                expect(response.message).to eq('No stages / jobs for this pipeline.')
+                expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                  'The rules configuration prevented any jobs from being added to the pipeline.')
                 expect(pipeline).not_to be_persisted
-                expect(pipeline.errors[:base]).to eq(['No stages / jobs for this pipeline.'])
+                expect(pipeline.errors[:base]).to eq(['Pipeline will not run for the selected trigger. ' \
+                  'The rules configuration prevented any jobs from being added to the pipeline.'])
               end
             end
           end
@@ -1633,7 +1636,8 @@ def previous_commit_sha_from_ref(ref)
 
               it 'does not create a detached merge request pipeline', :aggregate_failures do
                 expect(response).to be_error
-                expect(response.message).to eq('No stages / jobs for this pipeline.')
+                expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                  'The rules configuration prevented any jobs from being added to the pipeline.')
                 expect(pipeline).not_to be_persisted
               end
             end
@@ -1669,7 +1673,8 @@ def previous_commit_sha_from_ref(ref)
 
             it 'does not create a detached merge request pipeline', :aggregate_failures do
               expect(response).to be_error
-              expect(response.message).to eq('No stages / jobs for this pipeline.')
+              expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.')
               expect(pipeline).not_to be_persisted
             end
           end
@@ -1697,7 +1702,8 @@ def previous_commit_sha_from_ref(ref)
 
             it 'does not create a detached merge request pipeline', :aggregate_failures do
               expect(response).to be_error
-              expect(response.message).to eq('No stages / jobs for this pipeline.')
+              expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.')
               expect(pipeline).not_to be_persisted
             end
           end
@@ -1727,7 +1733,8 @@ def previous_commit_sha_from_ref(ref)
 
             it 'does not create a detached merge request pipeline', :aggregate_failures do
               expect(response).to be_error
-              expect(response.message).to eq('No stages / jobs for this pipeline.')
+              expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.')
               expect(pipeline).not_to be_persisted
             end
           end
@@ -1755,7 +1762,8 @@ def previous_commit_sha_from_ref(ref)
 
             it 'does not create a detached merge request pipeline', :aggregate_failures do
               expect(response).to be_error
-              expect(response.message).to eq('No stages / jobs for this pipeline.')
+              expect(response.message).to eq('Pipeline will not run for the selected trigger. ' \
+                'The rules configuration prevented any jobs from being added to the pipeline.')
               expect(pipeline).not_to be_persisted
             end
           end