diff --git a/Gemfile b/Gemfile
index 13806f67a13b5fec7a2f7458405bb76ea4bac5d3..bd729bf6ba8aade5d399fbf52f3f485eb9f9852d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -596,7 +596,7 @@ group :test do
   gem 'test-prof', '~> 1.4.0', feature_category: :tooling
   gem 'rspec_junit_formatter', feature_category: :shared
   gem 'guard-rspec', feature_category: :shared
-  gem 'axe-core-rspec', '~> 4.9.0', feature_category: :tooling
+  gem 'axe-core-rspec', '~> 4.10.0', feature_category: :tooling
 
   # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527
   gem 'derailed_benchmarks', require: false, feature_category: :shared
diff --git a/Gemfile.checksum b/Gemfile.checksum
index c34ae2d88434bc082a84ee2ee02b8f002eb2b495..a8eae8cf8a6e6ad0593771a2f017b19c27f7fe98 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -40,8 +40,8 @@
 {"name":"aws-sdk-kms","version":"1.76.0","platform":"ruby","checksum":"e7f75013cba9ba357144f66bbc600631c192e2cda9dd572794be239654e2cf49"},
 {"name":"aws-sdk-s3","version":"1.177.0","platform":"ruby","checksum":"bf2fd9210c3e534f2bd4d90cf855429859bdbfc1911f4d61045a3aaa3ff2f183"},
 {"name":"aws-sigv4","version":"1.9.1","platform":"ruby","checksum":"7753e320c39f80f82f9e0883b30de0e7b99e756adbaedc80c50b6ad59d49c379"},
-{"name":"axe-core-api","version":"4.9.1","platform":"ruby","checksum":"9ea7ac16bfee1cb3545345d210878aa8cccfb41b493e00fe1faab79af4d9fed8"},
-{"name":"axe-core-rspec","version":"4.9.1","platform":"ruby","checksum":"31ef067bee36d6efb3f156a83aa2fb6ac721270a53fb9473f0268e325a3e6efd"},
+{"name":"axe-core-api","version":"4.10.2","platform":"ruby","checksum":"c84ea0a041380a329f38fcfbc32b3759d35b481a27a368471e93afba5aafb289"},
+{"name":"axe-core-rspec","version":"4.10.2","platform":"ruby","checksum":"e302be5807e40eaa170f45559b2067791dfc42a58cb4400d2d6217321f12f775"},
 {"name":"axiom-types","version":"0.1.1","platform":"ruby","checksum":"c1ff113f3de516fa195b2db7e0a9a95fd1b08475a502ff660d04507a09980383"},
 {"name":"babosa","version":"2.0.0","platform":"ruby","checksum":"a6218db8a4dc8fd99260dde8bc3d5fa1a0c52178196e236ebb31e41fbdcdb8a6"},
 {"name":"backport","version":"1.2.0","platform":"ruby","checksum":"912c7dfdd9ee4625d013ddfccb6205c3f92da69a8990f65c440e40f5b2fc7f75"},
diff --git a/Gemfile.lock b/Gemfile.lock
index 1ee1b873ff0bd1846fa8654e48295b7afda64367..20b6d1e26646b027f810c6e8ec9eb4184fe57f27 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -359,12 +359,14 @@ GEM
       aws-sigv4 (~> 1.5)
     aws-sigv4 (1.9.1)
       aws-eventstream (~> 1, >= 1.0.2)
-    axe-core-api (4.9.1)
+    axe-core-api (4.10.2)
       dumb_delegator
+      ostruct
       virtus
-    axe-core-rspec (4.9.1)
-      axe-core-api (= 4.9.1)
+    axe-core-rspec (4.10.2)
+      axe-core-api (= 4.10.2)
       dumb_delegator
+      ostruct
       virtus
     axiom-types (0.1.1)
       descendants_tracker (~> 0.0.4)
@@ -2017,7 +2019,7 @@ DEPENDENCIES
   aws-sdk-cloudformation (~> 1)
   aws-sdk-core (~> 3.215.0)
   aws-sdk-s3 (~> 1.177.0)
-  axe-core-rspec (~> 4.9.0)
+  axe-core-rspec (~> 4.10.0)
   babosa (~> 2.0)
   base32 (~> 0.3.0)
   batch-loader (~> 2.0.5)
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index 9214858b16b2d90ff814880798fd84028ed61eb9..48c05959577e3878fcb82c7a2b48d9afe99def0d 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -40,8 +40,8 @@
 {"name":"aws-sdk-kms","version":"1.76.0","platform":"ruby","checksum":"e7f75013cba9ba357144f66bbc600631c192e2cda9dd572794be239654e2cf49"},
 {"name":"aws-sdk-s3","version":"1.177.0","platform":"ruby","checksum":"bf2fd9210c3e534f2bd4d90cf855429859bdbfc1911f4d61045a3aaa3ff2f183"},
 {"name":"aws-sigv4","version":"1.9.1","platform":"ruby","checksum":"7753e320c39f80f82f9e0883b30de0e7b99e756adbaedc80c50b6ad59d49c379"},
-{"name":"axe-core-api","version":"4.9.1","platform":"ruby","checksum":"9ea7ac16bfee1cb3545345d210878aa8cccfb41b493e00fe1faab79af4d9fed8"},
-{"name":"axe-core-rspec","version":"4.9.1","platform":"ruby","checksum":"31ef067bee36d6efb3f156a83aa2fb6ac721270a53fb9473f0268e325a3e6efd"},
+{"name":"axe-core-api","version":"4.10.2","platform":"ruby","checksum":"c84ea0a041380a329f38fcfbc32b3759d35b481a27a368471e93afba5aafb289"},
+{"name":"axe-core-rspec","version":"4.10.2","platform":"ruby","checksum":"e302be5807e40eaa170f45559b2067791dfc42a58cb4400d2d6217321f12f775"},
 {"name":"axiom-types","version":"0.1.1","platform":"ruby","checksum":"c1ff113f3de516fa195b2db7e0a9a95fd1b08475a502ff660d04507a09980383"},
 {"name":"babosa","version":"2.0.0","platform":"ruby","checksum":"a6218db8a4dc8fd99260dde8bc3d5fa1a0c52178196e236ebb31e41fbdcdb8a6"},
 {"name":"backport","version":"1.2.0","platform":"ruby","checksum":"912c7dfdd9ee4625d013ddfccb6205c3f92da69a8990f65c440e40f5b2fc7f75"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index a44c7e6b627606b2a3d1ff9ab30e55b1e3e83328..fea74b24d17e001451d33673b910b3f2240389dc 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -371,12 +371,14 @@ GEM
       aws-sigv4 (~> 1.5)
     aws-sigv4 (1.9.1)
       aws-eventstream (~> 1, >= 1.0.2)
-    axe-core-api (4.9.1)
+    axe-core-api (4.10.2)
       dumb_delegator
+      ostruct
       virtus
-    axe-core-rspec (4.9.1)
-      axe-core-api (= 4.9.1)
+    axe-core-rspec (4.10.2)
+      axe-core-api (= 4.10.2)
       dumb_delegator
+      ostruct
       virtus
     axiom-types (0.1.1)
       descendants_tracker (~> 0.0.4)
@@ -2051,7 +2053,7 @@ DEPENDENCIES
   aws-sdk-cloudformation (~> 1)
   aws-sdk-core (~> 3.215.0)
   aws-sdk-s3 (~> 1.177.0)
-  axe-core-rspec (~> 4.9.0)
+  axe-core-rspec (~> 4.10.0)
   babosa (~> 2.0)
   base32 (~> 0.3.0)
   batch-loader (~> 2.0.5)
diff --git a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
index 3690f59852c4515eb579d8d535eb9ed9498b359a..e87ef0a11a4e7e196625ba8b73eed19cbf976baf 100644
--- a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
+++ b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
@@ -462,6 +462,20 @@ export default {
     <gl-loading-icon v-if="$apollo.loading" size="lg" />
     <div v-else-if="!branchRule && !isPredefinedRule">{{ $options.i18n.noData }}</div>
     <div v-else>
+      <access-levels-drawer
+        :is-open="isAllowedToMergeDrawerOpen || isAllowedToPushAndMergeDrawerOpen"
+        :roles="accessLevelsDrawerData.roles"
+        :users="accessLevelsDrawerData.users"
+        :groups="accessLevelsDrawerData.groups"
+        :deploy-keys="accessLevelsDrawerData.deployKeys"
+        :is-loading="isRuleUpdating"
+        :group-id="groupId"
+        :title="accessLevelsDrawerTitle"
+        :is-push-access-levels="isAllowedToPushAndMergeDrawerOpen"
+        @editRule="onEditAccessLevels"
+        @close="closeAccessLevelsDrawer"
+      />
+
       <crud-component :title="$options.i18n.ruleTarget" data-testid="rule-target-card">
         <template #actions>
           <gl-button
@@ -530,20 +544,6 @@ export default {
           @edit="openAllowedToPushAndMergeDrawer"
         />
 
-        <access-levels-drawer
-          :is-open="isAllowedToMergeDrawerOpen || isAllowedToPushAndMergeDrawerOpen"
-          :roles="accessLevelsDrawerData.roles"
-          :users="accessLevelsDrawerData.users"
-          :groups="accessLevelsDrawerData.groups"
-          :deploy-keys="accessLevelsDrawerData.deployKeys"
-          :is-loading="isRuleUpdating"
-          :group-id="groupId"
-          :title="accessLevelsDrawerTitle"
-          :is-push-access-levels="isAllowedToPushAndMergeDrawerOpen"
-          @editRule="onEditAccessLevels"
-          @close="closeAccessLevelsDrawer"
-        />
-
         <!-- Force push -->
         <protection-toggle
           v-if="hasPushAccessLevelSet"