diff --git a/.rubocop_todo/capybara/testid_finders.yml b/.rubocop_todo/capybara/testid_finders.yml
index da7014c2ee3bcdedbbb2001a89b9dffa25bc1ab2..0e02f3e3219d6605c2d7921ad8f8061201e4f848 100644
--- a/.rubocop_todo/capybara/testid_finders.yml
+++ b/.rubocop_todo/capybara/testid_finders.yml
@@ -15,15 +15,7 @@ Capybara/TestidFinders:
     - 'spec/features/merge_request/user_comments_on_diff_spec.rb'
     - 'spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb'
     - 'spec/features/merge_request/user_creates_mr_spec.rb'
-    - 'spec/features/merge_request/user_customizes_merge_commit_message_spec.rb'
-    - 'spec/features/merge_request/user_edits_mr_spec.rb'
-    - 'spec/features/merge_request/user_expands_diff_spec.rb'
     - 'spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb'
-    - 'spec/features/merge_request/user_manages_subscription_spec.rb'
-    - 'spec/features/merge_request/user_merges_immediately_spec.rb'
-    - 'spec/features/merge_request/user_posts_notes_spec.rb'
-    - 'spec/features/merge_request/user_resolves_conflicts_spec.rb'
-    - 'spec/features/merge_request/user_sees_merge_widget_spec.rb'
     - 'spec/features/merge_request/user_sees_pipelines_spec.rb'
     - 'spec/features/merge_request/user_sees_suggest_pipeline_spec.rb'
     - 'spec/features/merge_request/user_sees_versions_spec.rb'
diff --git a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
index 3c30ef02a191712cf0bd8965a5b8dbcd22820580..661125c8f8a42af1918dc90617c52bd186b9ca2d 100644
--- a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
+++ b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb
@@ -41,7 +41,7 @@
 
   it 'has commit message without description' do
     expect(page).not_to have_selector('#merge-message-edit')
-    find('[data-testid="widget_edit_commit_message"]').click
+    find_by_testid('widget_edit_commit_message').click
     expect(merge_textbox).to be_visible
     expect(merge_textbox.value).to eq(default_merge_commit_message)
   end
@@ -51,7 +51,7 @@
 
     it 'uses merge commit template' do
       expect(page).not_to have_selector('#merge-message-edit')
-      find('[data-testid="widget_edit_commit_message"]').click
+      find_by_testid('widget_edit_commit_message').click
       expect(merge_textbox).to be_visible
       expect(merge_textbox.value).to eq(merge_request.title)
     end
@@ -62,7 +62,7 @@
 
     it 'has default message with merge request title' do
       expect(page).not_to have_selector('#squash-message-edit')
-      find('[data-testid="widget_edit_commit_message"]').click
+      find_by_testid('widget_edit_commit_message').click
       expect(squash_textbox).to be_visible
       expect(merge_textbox).to be_visible
       expect(squash_textbox.value).to eq(merge_request.title)
@@ -74,7 +74,7 @@
 
       it 'uses squash commit template' do
         expect(page).not_to have_selector('#squash-message-edit')
-        find('[data-testid="widget_edit_commit_message"]').click
+        find_by_testid('widget_edit_commit_message').click
         expect(squash_textbox).to be_visible
         expect(merge_textbox).to be_visible
         expect(squash_textbox.value).to eq(merge_request.description)
diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb
index fca3a76949a2da8941470337fab9484a60d84cae..de277688a98385e158b55527b9db60d7420437b6 100644
--- a/spec/features/merge_request/user_edits_mr_spec.rb
+++ b/spec/features/merge_request/user_edits_mr_spec.rb
@@ -32,12 +32,12 @@
 
       click_button _('Select label')
       wait_for_all_requests
-      page.within '[data-testid="sidebar-labels"]' do
+      within_testid('sidebar-labels') do
         click_button label.title
         click_button label2.title
         click_button _('Close')
         wait_for_requests
-        page.within('[data-testid="embedded-labels-list"]') do
+        within_testid('embedded-labels-list') do
           expect(page).to have_content(label.title)
           expect(page).to have_content(label2.title)
         end
diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb
index 9fbb5773eae4efe5de1c21c7acdda44ed56f8edb..17b6e7a966bb2f8db63032ae146fc287d4112863 100644
--- a/spec/features/merge_request/user_expands_diff_spec.rb
+++ b/spec/features/merge_request/user_expands_diff_spec.rb
@@ -16,7 +16,7 @@
 
   it 'allows user to expand diff' do
     page.within find("[id='4c76a1271e41072d7da9fe40bf0f79f7384d472a']") do
-      find('[data-testid="expand-button"]').click
+      find_by_testid('expand-button').click
 
       wait_for_requests
 
diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb
index a7c82f1a6abb07483a57c748e33ff2ec6ee6afc2..7988d52f77026e5559be0f5ffd7128f948e5522c 100644
--- a/spec/features/merge_request/user_manages_subscription_spec.rb
+++ b/spec/features/merge_request/user_manages_subscription_spec.rb
@@ -22,12 +22,16 @@
     find('#new-actions-header-dropdown button').click
 
     expect(page).to have_selector('.gl-toggle:not(.is-checked)')
-    find('[data-testid="notification-toggle"] .gl-toggle').click
+    within_testid('notification-toggle') do
+      find('.gl-toggle').click
+    end
 
     wait_for_requests
 
     expect(page).to have_selector('.gl-toggle.is-checked')
-    find('[data-testid="notification-toggle"] .gl-toggle').click
+    within_testid('notification-toggle') do
+      find('.gl-toggle').click
+    end
 
     wait_for_requests
 
@@ -40,10 +44,10 @@
     it 'toggles subscription' do
       wait_for_requests
 
-      find('[data-testid="subscribe-button"]').click
+      find_by_testid('subscribe-button').click
       expect(page).to have_selector('[data-testid="notifications-off-icon"]')
 
-      find('[data-testid="subscribe-button"]').click
+      find_by_testid('subscribe-button').click
       expect(page).to have_selector('[data-testid="notifications-icon"]')
     end
   end
diff --git a/spec/features/merge_request/user_merges_immediately_spec.rb b/spec/features/merge_request/user_merges_immediately_spec.rb
index ae229651579fd348b2209f2046d631ea84ff3c2f..fb0695a73ba042a700e85233383430c5222dcdf6 100644
--- a/spec/features/merge_request/user_merges_immediately_spec.rb
+++ b/spec/features/merge_request/user_merges_immediately_spec.rb
@@ -36,7 +36,7 @@
     it 'enables merge immediately' do
       wait_for_requests
 
-      page.within '[data-testid="ready_to_merge_state"]' do
+      within_testid('ready_to_merge_state') do
         find('.gl-new-dropdown-toggle').click
 
         Sidekiq::Testing.fake! do
@@ -44,7 +44,7 @@
         end
       end
 
-      expect(find('[data-testid="merging-state"]')).to have_content('Merging!')
+      expect(find_by_testid('merging-state')).to have_content('Merging!')
 
       wait_for_requests
     end
diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb
index ca3503b187c366e9001e6775c59ac60512630b5a..962337c52f3386fbcceec856d47867c6b15afd49 100644
--- a/spec/features/merge_request/user_posts_notes_spec.rb
+++ b/spec/features/merge_request/user_posts_notes_spec.rb
@@ -44,7 +44,7 @@
 
       it 'has enable submit button, preview button and saves content to local storage' do
         page.within('.js-main-target-form') do
-          page.within('[data-testid="comment-button"]') do
+          within_testid('comment-button') do
             expect(page).to have_css('.gl-button')
             expect(page).not_to have_css('.disabled')
           end
@@ -162,7 +162,7 @@
       it 'resets the edit note form textarea with the original content of the note if cancelled' do
         within('.current-note-edit-form') do
           fill_in 'note[note]', with: 'Some new content'
-          find('[data-testid="cancel"]').click
+          find_by_testid('cancel').click
         end
 
         page.within('.modal') do
diff --git a/spec/features/merge_request/user_resolves_conflicts_spec.rb b/spec/features/merge_request/user_resolves_conflicts_spec.rb
index 2fdd0a7dd51a582d772041472fae448dccff05bc..c236b5d4bf114d3eb4478269f3801b2d3f1a95d4 100644
--- a/spec/features/merge_request/user_resolves_conflicts_spec.rb
+++ b/spec/features/merge_request/user_resolves_conflicts_spec.rb
@@ -181,7 +181,7 @@ def create_merge_request(source_branch)
       end
 
       it "renders bad name without xss issues" do
-        expect(find('[data-testid="resolve-info"]')).to have_content(bad_branch_name)
+        expect(find_by_testid('resolve-info')).to have_content(bad_branch_name)
       end
     end
   end
diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb
index 4327a08efb9e53f17126b953cec557e56ffb03b8..5448d6867cb0a1991ed15e317d05e8d12f5ddd93 100644
--- a/spec/features/merge_request/user_sees_merge_widget_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb
@@ -14,7 +14,7 @@
   let(:merge_request_in_only_mwps_project) { create(:merge_request, source_project: project_only_mwps) }
 
   def click_expand_button
-    find('[data-testid="toggle-button"]').click
+    find_by_testid('toggle-button').click
   end
 
   before do
@@ -76,8 +76,6 @@ def click_expand_button
     end
 
     it 'allows me to merge, see cherry-pick modal and load branches list', :sidekiq_might_not_need_inline do
-      modal_selector = '[data-testid="modal-commit"]'
-
       wait_for_requests
       click_button 'Merge'
 
@@ -87,16 +85,18 @@ def click_expand_button
 
       click_button 'Cherry-pick'
 
-      page.within(modal_selector) do
+      within_testid('modal-commit') do
         click_button 'master'
       end
 
-      page.within("#{modal_selector} [data-testid=\"base-dropdown-menu\"]") do
-        fill_in 'Search branches', with: ''
+      within_testid('modal-commit') do
+        within_testid('base-dropdown-menu') do
+          fill_in 'Search branches', with: ''
 
-        wait_for_requests
+          wait_for_requests
 
-        expect(page).to have_selector('[data-testid="listbox-item-master"]', visible: true)
+          expect(page).to have_selector('[data-testid="listbox-item-master"]', visible: true)
+        end
       end
     end
   end
@@ -143,17 +143,15 @@ def click_expand_button
     end
 
     it 'allows me to merge with a failed pipeline' do
-      modal_selector = '[data-testid="merge-failed-pipeline-confirmation-dialog"]'
-
       wait_for_requests
 
       click_button 'Merge...'
 
-      page.within(modal_selector) do
+      within_testid('merge-failed-pipeline-confirmation-dialog') do
         click_button 'Merge unverified changes'
       end
 
-      expect(find('[data-testid="merging-state"]')).to have_content('Merging!')
+      expect(find_by_testid('merging-state')).to have_content('Merging!')
     end
   end
 
@@ -625,11 +623,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the new failure' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 failed, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: no changed test results, 1 total test')
               expect(page).to have_content('junit: 1 failed, 1 total test')
               expect(page).to have_content('New')
@@ -640,15 +638,15 @@ def compared_data
 
         context 'when user clicks the new failure' do
           it 'shows the test report detail' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('addTest')
               expect(page).to have_content('6.66')
               expect(page).to have_content(sample_java_failed_message.gsub(/\s+/, ' ').strip)
@@ -673,11 +671,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the existing failure' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 failed, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: 1 failed, 1 total test')
               expect(page).to have_content('junit: no changed test results, 1 total test')
               expect(page).to have_content('Test#sum when a is 1 and b is 3 returns summary')
@@ -687,15 +685,15 @@ def compared_data
 
         context 'when user clicks the existing failure' do
           it 'shows test report detail of it' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('Test#sum when a is 1 and b is 3 returns summary')
               expect(page).to have_content('2.22')
               expect(page).to have_content(sample_rspec_failed_message.gsub(/\s+/, ' ').strip)
@@ -720,11 +718,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the resolved failure' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 fixed test result, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: no changed test results, 1 total test')
               expect(page).to have_content('junit: 1 fixed test result, 1 total test')
               expect(page).to have_content('Fixed')
@@ -735,15 +733,15 @@ def compared_data
 
         context 'when user clicks the resolved failure' do
           it 'shows test report detail of it' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('addTest')
               expect(page).to have_content('5.55')
             end
@@ -767,11 +765,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the new error' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 error, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: no changed test results, 1 total test')
               expect(page).to have_content('junit: 1 error, 1 total test')
               expect(page).to have_content('New')
@@ -782,15 +780,15 @@ def compared_data
 
         context 'when user clicks the new error' do
           it 'shows the test report detail' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('addTest')
               expect(page).to have_content('8.88')
             end
@@ -814,11 +812,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the existing error' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 error, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: 1 error, 1 total test')
               expect(page).to have_content('junit: no changed test results, 1 total test')
               expect(page).to have_content('Test#sum when a is 4 and b is 4 returns summary')
@@ -828,15 +826,15 @@ def compared_data
 
         context 'when user clicks the existing error' do
           it 'shows test report detail of it' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('Test#sum when a is 4 and b is 4 returns summary')
               expect(page).to have_content('4.44')
             end
@@ -860,11 +858,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the resolved error' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 1 fixed test result, 2 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: no changed test results, 1 total test')
               expect(page).to have_content('junit: 1 fixed test result, 1 total test')
               expect(page).to have_content('Fixed')
@@ -875,15 +873,15 @@ def compared_data
 
         context 'when user clicks the resolved error' do
           it 'shows test report detail of it' do
-            within('[data-testid="widget-extension"]') do
+            within_testid('widget-extension') do
               click_expand_button
 
-              within('[data-testid="widget-extension-collapsed-section"]') do
+              within_testid('widget-extension-collapsed-section') do
                 click_button 'View details'
               end
             end
 
-            within('[data-testid="test-case-details-modal"]') do
+            within_testid('test-case-details-modal') do
               expect(page).to have_content('addTest')
               expect(page).to have_content('5.55')
             end
@@ -915,11 +913,11 @@ def compared_data
         end
 
         it 'shows test reports summary which includes the resolved failure' do
-          within('[data-testid="widget-extension"]') do
+          within_testid('widget-extension') do
             click_expand_button
 
             expect(page).to have_content('Test summary: 20 failed, 20 total tests')
-            within('[data-testid="widget-extension-collapsed-section"]') do
+            within_testid('widget-extension-collapsed-section') do
               expect(page).to have_content('rspec: 10 failed, 10 total tests')
               expect(page).to have_content('junit: 10 failed, 10 total tests')