diff --git a/Gemfile b/Gemfile
index 7a0b17a065f25a8d2f727fcc845aff9d4e95c96f..e85d36584f23999e21f15e7857afaf68d242c59d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -592,7 +592,7 @@ group :test do
   # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527
   gem 'derailed_benchmarks', require: false # rubocop:todo Gemfile/MissingFeatureCategory
 
-  gem 'gitlab_quality-test_tooling', '~> 2.3.0', require: false, feature_category: :tooling
+  gem 'gitlab_quality-test_tooling', '~> 2.4.0', require: false, feature_category: :tooling
 end
 
 gem 'octokit', '~> 9.0', feature_category: :importers
diff --git a/Gemfile.checksum b/Gemfile.checksum
index eccbb04ecbcd8870f8259a320edb259acdd5acd1..9a31aabc28b72e2faa65d57c77947a5d9f3a2223 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -242,7 +242,7 @@
 {"name":"gitlab-styles","version":"13.0.2","platform":"ruby","checksum":"e662b9334643763b55a861f9e26091096547f98179bd89b0fa8d6c6fb8cec861"},
 {"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"},
 {"name":"gitlab_omniauth-ldap","version":"2.2.0","platform":"ruby","checksum":"bb4d20acb3b123ed654a8f6a47d3fac673ece7ed0b6992edb92dca14bad2838c"},
-{"name":"gitlab_quality-test_tooling","version":"2.3.0","platform":"ruby","checksum":"361fad2290373a4a4fa913b9dd3a6a75d5a24628869eb4d5bf384c7bfb241e69"},
+{"name":"gitlab_quality-test_tooling","version":"2.4.0","platform":"ruby","checksum":"2e4c12528b05253f1b9c9cef49f4f545d4aab94bf28ca337611c795b2cfb36a0"},
 {"name":"globalid","version":"1.1.0","platform":"ruby","checksum":"b337e1746f0c8cb0a6c918234b03a1ddeb4966206ce288fbb57779f59b2d154f"},
 {"name":"gon","version":"6.4.0","platform":"ruby","checksum":"e3a618d659392890f1aa7db420f17c75fd7d35aeb5f8fe003697d02c4b88d2f0"},
 {"name":"google-apis-androidpublisher_v3","version":"0.34.0","platform":"ruby","checksum":"d7e1d7dd92f79c498fe2082222a1740d788e022e660c135564b3fd299cab5425"},
diff --git a/Gemfile.lock b/Gemfile.lock
index 0cd7efb69992d4d7203e266b107bd02995b02150..c1177838d58398aad501c9ef23b1dafc00f24459 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -789,7 +789,7 @@ GEM
       omniauth (>= 1.3, < 3)
       pyu-ruby-sasl (>= 0.0.3.3, < 0.1)
       rubyntlm (~> 0.5)
-    gitlab_quality-test_tooling (2.3.0)
+    gitlab_quality-test_tooling (2.4.0)
       activesupport (>= 7.0, < 7.2)
       amatch (~> 0.4.1)
       fog-google (~> 1.24, >= 1.24.1)
@@ -2095,7 +2095,7 @@ DEPENDENCIES
   gitlab-utils!
   gitlab_chronic_duration (~> 0.12)
   gitlab_omniauth-ldap (~> 2.2.0)
-  gitlab_quality-test_tooling (~> 2.3.0)
+  gitlab_quality-test_tooling (~> 2.4.0)
   gon (~> 6.4.0)
   google-apis-androidpublisher_v3 (~> 0.34.0)
   google-apis-cloudbilling_v1 (~> 0.21.0)
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index 5befb50059ea222255dd469bc17057cc86ee1e0b..c5802d079d0f9695bab89b517dfc6a3311d47cbf 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -243,7 +243,7 @@
 {"name":"gitlab-styles","version":"13.0.2","platform":"ruby","checksum":"e662b9334643763b55a861f9e26091096547f98179bd89b0fa8d6c6fb8cec861"},
 {"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"},
 {"name":"gitlab_omniauth-ldap","version":"2.2.0","platform":"ruby","checksum":"bb4d20acb3b123ed654a8f6a47d3fac673ece7ed0b6992edb92dca14bad2838c"},
-{"name":"gitlab_quality-test_tooling","version":"2.3.0","platform":"ruby","checksum":"361fad2290373a4a4fa913b9dd3a6a75d5a24628869eb4d5bf384c7bfb241e69"},
+{"name":"gitlab_quality-test_tooling","version":"2.4.0","platform":"ruby","checksum":"2e4c12528b05253f1b9c9cef49f4f545d4aab94bf28ca337611c795b2cfb36a0"},
 {"name":"globalid","version":"1.1.0","platform":"ruby","checksum":"b337e1746f0c8cb0a6c918234b03a1ddeb4966206ce288fbb57779f59b2d154f"},
 {"name":"gon","version":"6.4.0","platform":"ruby","checksum":"e3a618d659392890f1aa7db420f17c75fd7d35aeb5f8fe003697d02c4b88d2f0"},
 {"name":"google-apis-androidpublisher_v3","version":"0.34.0","platform":"ruby","checksum":"d7e1d7dd92f79c498fe2082222a1740d788e022e660c135564b3fd299cab5425"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index 34aa559688ffb16b011fb8bb2bd4deba57058aa8..0036631fc1a694fdeca12b449fbe1c9c3c1fdb1d 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -799,7 +799,7 @@ GEM
       omniauth (>= 1.3, < 3)
       pyu-ruby-sasl (>= 0.0.3.3, < 0.1)
       rubyntlm (~> 0.5)
-    gitlab_quality-test_tooling (2.3.0)
+    gitlab_quality-test_tooling (2.4.0)
       activesupport (>= 7.0, < 7.2)
       amatch (~> 0.4.1)
       fog-google (~> 1.24, >= 1.24.1)
@@ -2123,7 +2123,7 @@ DEPENDENCIES
   gitlab-utils!
   gitlab_chronic_duration (~> 0.12)
   gitlab_omniauth-ldap (~> 2.2.0)
-  gitlab_quality-test_tooling (~> 2.3.0)
+  gitlab_quality-test_tooling (~> 2.4.0)
   gon (~> 6.4.0)
   google-apis-androidpublisher_v3 (~> 0.34.0)
   google-apis-cloudbilling_v1 (~> 0.21.0)