diff --git a/qa/qa/specs/features/api/10_govern/project_access_token_spec.rb b/qa/qa/specs/features/api/10_govern/project_access_token_spec.rb
index 1f44a97ef107ec9ec648294f6fc299f32e0b1d8c..fba418c02094535aa883d27937e5a108c677dfee 100644
--- a/qa/qa/specs/features/api/10_govern/project_access_token_spec.rb
+++ b/qa/qa/specs/features/api/10_govern/project_access_token_spec.rb
@@ -57,10 +57,6 @@ module QA
           wait_until_project_is_ready(different_project)
         end
 
-        after do
-          different_project.remove_via_api!
-        end
-
         it 'cannot be used to create a file via the project API', :smoke,
           testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347860' do
           expect do
diff --git a/qa/qa/specs/features/api/1_manage/rate_limits_spec.rb b/qa/qa/specs/features/api/1_manage/rate_limits_spec.rb
index 0b5dd9c5a2494bb46fe886c4091ed97c0ee630f6..a123d530ebbca0bdbffdbfd3337596fdfa6472e3 100644
--- a/qa/qa/specs/features/api/1_manage/rate_limits_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/rate_limits_spec.rb
@@ -9,10 +9,6 @@ module QA
       let(:api_client) { Runtime::API::Client.new(:gitlab, user: rate_limited_user) }
       let!(:request) { Runtime::API::Request.new(api_client, '/users') }
 
-      after do
-        rate_limited_user.remove_via_api!
-      end
-
       it 'throttles authenticated api requests by user',
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347881' do
         with_application_settings(
diff --git a/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb b/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
index ed6bf6a75447a5868ed1b0da78775e1c9891dcb5..3f1a483914143cfe2433d0218299048f188f4cd9 100644
--- a/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
+++ b/qa/qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb
@@ -12,9 +12,8 @@ module QA
       let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
       let!(:runner) { create(:project_runner, project: project, name: "runner-for-#{project.name}", tags: ["runner-for-#{project.name}"]) }
 
-      after do |example|
+      after do
         runner.remove_via_api!
-        project.remove_via_api! unless example.exception
       end
 
       it 'sets merge when pipeline succeeds', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347843' do
diff --git a/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb b/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
index a7b59f55384e97a222885fe02d15fd9f0d3058a9..21ae5792992483d18322e3aaf8ef81887bf53cb4 100644
--- a/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
+++ b/qa/qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb
@@ -8,10 +8,6 @@ module QA
 
       let(:project) { create(:project, :with_readme, name: 'push-postreceive-idempotent') }
 
-      after do
-        project&.remove_via_api!
-      end
-
       it 'pushes and creates a single push event three times', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347680' do
         verify_single_event_per_push(repeat: 3)
       end
diff --git a/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb b/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
index b49ca3453c615da35c79c4acce0d7f0275c2a201..791bb27c2beee2850c46698f387bfe20cf19129a 100644
--- a/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
+++ b/qa/qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb
@@ -25,11 +25,6 @@ module QA
         Support::Waiter.wait_until { !pipeline_schedule[:id].nil? && pipeline_schedule[:active] == true }
       end
 
-      after do
-        user.remove_via_api!
-        project.remove_via_api!
-      end
-
       it 'pipeline schedule is canceled', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347999' do
         user.block!
 
diff --git a/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb b/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
index e24aad3dff2d09bee3298ad428678a578fcc65cd..8f6d6501331e345a8100c700a5c7308cd0ae1414 100644
--- a/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/api/9_data_stores/user_inherited_access_spec.rb
@@ -30,10 +30,6 @@ module QA
           parent_group.add_member(parent_group_user)
         end
 
-        after do
-          parent_group_user.remove_via_api!
-        end
-
         it(
           'is allowed to push code to sub-group project via the CLI',
           :blocking,
@@ -109,10 +105,6 @@ module QA
           sub_group.add_member(sub_group_user)
         end
 
-        after do
-          sub_group_user.remove_via_api!
-        end
-
         it(
           'is not allowed to push code to parent group project via the CLI',
           :blocking,
diff --git a/qa/qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb b/qa/qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb
index 39e8e4603d83fa92847cc1876823175342b16910..524e814f2efa47a91303d842da727323bdf06fe1 100644
--- a/qa/qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb
+++ b/qa/qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb
@@ -33,14 +33,6 @@ module QA
         group.add_member(developer_user, Resource::Members::AccessLevel::DEVELOPER)
       end
 
-      after do
-        group.set_require_two_factor_authentication(value: 'false')
-        group.remove_via_api! do |resource|
-          resource.api_client = admin_api_client
-        end
-        developer_user.remove_via_api!
-      end
-
       it(
         'allows enforcing 2FA via UI and logging in with 2FA', :blocking,
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347931'
diff --git a/qa/qa/specs/features/browser_ui/10_govern/login/register_spec.rb b/qa/qa/specs/features/browser_ui/10_govern/login/register_spec.rb
index 22a45bae66decb1d7f07cd14705dd9a38387b1bd..e478975507abb115e7e33b297fd0a256ff645e67 100644
--- a/qa/qa/specs/features/browser_ui/10_govern/login/register_spec.rb
+++ b/qa/qa/specs/features/browser_ui/10_govern/login/register_spec.rb
@@ -80,13 +80,6 @@ module QA
             Support::Waiter.wait_until(max_duration: 120, sleep_interval: 3) { !user.exists? }
           end
 
-          after do
-            if recreated_user
-              recreated_user.api_client = admin_api_client
-              recreated_user.remove_via_api!
-            end
-          end
-
           it 'allows recreating with same credentials', :blocking, :external_api_calls,
             testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347868' do
             expect(Page::Main::Menu.perform(&:signed_in?)).to be_falsy
diff --git a/qa/qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb b/qa/qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb
index 9265ff4f3bea5846139f307c3028f707dced7807..edee3f7534fa271d7d743c3a7ed4883f83c6e69c 100644
--- a/qa/qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb
+++ b/qa/qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb
@@ -5,10 +5,6 @@ module QA
     describe 'Project access tokens', :smoke, :health_check, product_group: :authentication do
       let(:project_access_token) { QA::Resource::ProjectAccessToken.fabricate_via_browser_ui! }
 
-      after do
-        project_access_token.project.remove_via_api!
-      end
-
       it(
         'can be created and revoked via the UI',
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347688'
diff --git a/qa/qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb b/qa/qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb
index 5e4bb93b22d27a1da0e29beb8dd5bed86604df60..23210f61c6d2a80e0625f06ca83d297dd8b3e743 100644
--- a/qa/qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb
+++ b/qa/qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb
@@ -25,10 +25,6 @@ module QA
         @project = create(:project, :with_readme, name: 'project-for-user-group-access-termination', group: group)
       end
 
-      after(:all) do
-        @sandbox.remove_via_api!
-      end
-
       context 'when parent group membership is terminated' do
         before do
           @sandbox.remove_member(@user)
diff --git a/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
index c1c6ad145f1ac5018668b8f26dbb85cc5a1d6638..c753c760841414330f819fdab3f4f6d618610fd2 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/integrations/slash_commands_spec.rb
@@ -32,10 +32,6 @@ module QA
           end
         end
 
-        after do
-          project.remove_via_api!
-        end
-
         it 'creates an issue', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/377890' do
           with_slack_tab do
             Vendor::Slack::Page::Chat.perform do |chat_page|
@@ -92,10 +88,6 @@ module QA
           context 'with target project' do
             let(:target) { create(:project, :with_readme, name: 'target_slack_project') }
 
-            after do
-              target.remove_via_api!
-            end
-
             it 'moves an issue', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/377894' do
               with_slack_tab do
                 Vendor::Slack::Page::Chat.perform do |chat_page|
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
index e1561f69df06b3d5ca64ba223a07e52b1eeebf46..4f53bc4ba5c5cb5356346530118d888762b52cd6 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb
@@ -20,10 +20,6 @@ module QA
         create(:issue, project: project).visit!
       end
 
-      after do
-        user&.remove_via_api!
-      end
-
       it 'mentions a user in a comment', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347949' do
         Page::Project::Issue::Show.perform do |show|
           show.select_all_activities_filter
diff --git a/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb
index 7de4c8a3f099278f0b9f61f96300563399c41eff..aa18d8a573753e9a15598d67da038df8903a13a2 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb
@@ -12,10 +12,6 @@ module QA
         Flow::Login.sign_in
       end
 
-      after do
-        initial_wiki.project.remove_via_api!
-      end
-
       it 'by creating a formatted page with an image uploaded',
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347640' do
         initial_wiki.visit!
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
index 2894dc6bbaa3cea9689f52973f7cdd6ce7412e7f..3cd724fb4edd84a51252803021c27abadf3b835f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb
@@ -16,10 +16,6 @@ module QA
         commit.visit!
       end
 
-      after do
-        project.remove_via_api!
-      end
-
       it 'creates a merge request', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347716' do
         Page::Project::Commit::Show.perform(&:revert_commit)
         Page::MergeRequest::New.perform(&:create_merge_request)
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
index fa51e07729ca7edd34cc068f72ecd305d2181af8..771e642d1af6be5140a8324f3497b36ab152e5c1 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb
@@ -3,10 +3,6 @@
 module QA
   RSpec.describe 'Create' do
     describe 'Repository License Detection', product_group: :source_code do
-      after do
-        project.remove_via_api!
-      end
-
       let(:project) { create(:project) }
 
       shared_examples 'project license detection' do
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
index 5ddda9108a05949eaaa9b02cba484863e801b136..deced0aab77b71df2e645d4c3ab420cd85d8c607 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb
@@ -16,7 +16,6 @@ module QA
 
       after do
         runner.remove_via_api!
-        project.remove_via_api!
       end
 
       it 'creates 2 trigger jobs and passes corresponding matrix variables', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348000' do
diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
index 85c5028cd3def5c893f1d164dc9d41cf1d23359c..591e7216d550fd7e8cd718b5acb68540a3d4606e 100644
--- a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
+++ b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
@@ -16,7 +16,6 @@ module QA
 
       after do
         runner.remove_via_api!
-        project.remove_via_api!
       end
 
       keys = [
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
index 7b9b5359c907e88c4f40de71e29f6e380ef85013..62dd23eec5a4902599653d0a15f4cbfc847f7c67 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/group/group_member_access_request_spec.rb
@@ -25,10 +25,6 @@ module QA
         end
       end
 
-      after do
-        user&.remove_via_api!
-      end
-
       it 'generates a todo item for the group owner', :blocking,
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/370132' do
         Page::Dashboard::Todos.perform do |todos|
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
index 84c891608e9ebb0f9daf317df4e3588c3f3573c4..f71cc3f139052bfdaa04deeb0df0a5d72c2a74df 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/dashboard_images_spec.rb
@@ -4,13 +4,8 @@ module QA
   RSpec.describe 'Data Stores', product_group: :tenant_scale do
     shared_examples 'loads all images' do |admin|
       let(:api_client) { Runtime::API::Client.as_admin }
-
       let(:user) { create(:user, admin: admin, api_client: api_client) }
 
-      after do
-        user.remove_via_api!
-      end
-
       it do
         Flow::Login.sign_in(as: user)
 
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
index fa32737f668c60e04977844c3ca664be3ec34d6f..42072c83d9f7c842f133a0a4f5b121f4602d13b0 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/project/invite_group_to_project_spec.rb
@@ -52,24 +52,13 @@ module QA
             personal_namespace: Runtime::User.username)
         end
 
-        after do
-          project.remove_via_api!
-          group.remove_via_api!
-        end
-
         it_behaves_like 'invites group to project'
       end
 
       context 'with a group project', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349340' do
         let(:group) { create(:group, path: "group-for-group-project-#{SecureRandom.hex(8)}") }
-
         let(:project) { create(:project, :private, name: 'group-project', description: 'test group project') }
 
-        after do
-          project.remove_via_api!
-          group.remove_via_api!
-        end
-
         it_behaves_like 'invites group to project'
       end
     end
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
index 70f2065609fe8e3a39ce40b7d481b595f83c17b9..19318fdbe60696dd4d70c9d20f354e8f0bc34d2e 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/follow_user_activity_spec.rb
@@ -43,13 +43,6 @@ module QA
         followed_user_api_client.personal_access_token
       end
 
-      after do
-        project&.api_client = admin_api_client
-        project&.remove_via_api!
-        followed_user&.remove_via_api!
-        following_user&.remove_via_api!
-      end
-
       it 'can be followed and their activity seen', :blocking,
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347678' do
         Flow::Login.sign_in(as: following_user)
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
index 1d451970a9251b444fa4e33236f5bab97dbde52b..3d9a98048376a1a9c12b58c7563ad8243683cd53 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
@@ -28,10 +28,6 @@ module QA
           parent_group.add_member(parent_group_user)
         end
 
-        after do
-          parent_group_user.remove_via_api!
-        end
-
         it(
           'is allowed to edit the sub-group project files', :blocking,
           testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/363467'
@@ -66,10 +62,6 @@ module QA
           sub_group.add_member(sub_group_user)
         end
 
-        after do
-          sub_group_user.remove_via_api!
-        end
-
         it(
           'is not allowed to edit the parent group project files', :blocking,
           testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/363466'
diff --git a/qa/qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb b/qa/qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb
index a971eeda7665beb675b5ecc4fca46f210773d2f2..839db30fd8c1623e8f9924a5ff16e0dbf7f299f5 100644
--- a/qa/qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb
+++ b/qa/qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb
@@ -17,16 +17,6 @@ module QA
         group.sandbox.add_member(user_with_minimal_access, Resource::Members::AccessLevel::MINIMAL_ACCESS)
       end
 
-      after do
-        user_with_minimal_access&.remove_via_api!
-        project&.remove_via_api!
-        begin
-          group&.remove_via_api!
-        rescue Resource::ApiFabricator::ResourceNotDeletedError
-          # It is ok if the group is already marked for deletion by another test
-        end
-      end
-
       it 'is not allowed to push code via the CLI', :blocking,
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347873' do
         expect do
diff --git a/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb b/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb
index 44c489e73b1c68685b3492b4bd834915ea80308a..6cf6b24c8b61f8e810da2d30a84dc88af7a8518d 100644
--- a/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb
@@ -9,11 +9,6 @@ module QA
       let(:group) { create(:group, sandbox: root_group, path: "#{group_name}-#{SecureRandom.hex(4)}") }
       let(:project) { create(:project, name: "project-to-test-PrAT-#{SecureRandom.hex(8)}", group: group) }
 
-      after do |example|
-        # If a test fails leave the groups so we can investigate them
-        root_group.remove_via_api! unless example.exception
-      end
-
       shared_examples 'Group sync' do |testcases|
         it 'has LDAP users synced', testcase: testcases[0] do
           verify_users_synced(sync_users)
diff --git a/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_saml_enforced_sso_git_access_spec.rb b/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_saml_enforced_sso_git_access_spec.rb
index 7c97f24979812e3abe5e322e1799678aa5645d10..d470dfd92723307b0f458afe31fe8595f6431bf6 100644
--- a/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_saml_enforced_sso_git_access_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/10_govern/group/group_saml_enforced_sso_git_access_spec.rb
@@ -29,8 +29,6 @@ module QA
       end
 
       after do
-        group.remove_via_api!
-
         Flow::Saml.remove_saml_idp_service(saml_idp_service)
       end
 
diff --git a/qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb b/qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb
index a06cb77d4f2dd752b4d93c2fa7d11a25d4b72f62..0c1d5d3f31fac80d91d5017f242601fd3ccda12e 100644
--- a/qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb
@@ -123,10 +123,6 @@ module QA
           Page::Main::Menu.perform(&:click_stop_impersonation_link)
         end
 
-        after do
-          user_for_impersonation.remove_via_api!
-        end
-
         it_behaves_like 'audit event', ["Started Impersonation", "Stopped Impersonation"]
       end
 
diff --git a/qa/qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb b/qa/qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb
index 22665dc9614b465232a1d36371e2ea6992a5408b..3900c745cb2b9dbd70ff03b7baa3b6e382c7d82b 100644
--- a/qa/qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb
@@ -20,10 +20,6 @@ module QA
         group_for_trial.visit!
       end
 
-      after do
-        user.remove_via_api!
-      end
-
       describe 'starts a free trial' do
         context 'when visiting trials page with multiple eligible namespaces' do
           let!(:group) do
@@ -37,10 +33,6 @@ module QA
             Runtime::Browser.visit(:gitlab, EE::Page::Trials::New)
           end
 
-          after do
-            group.remove_via_api!
-          end
-
           it(
             'registers for a new trial',
             testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347671'
diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb
index 921d0cb244a3e1878d7a48b237b57b937f5007cc..1a87b941eda5f189bc7c80561de98e85a0be37bf 100644
--- a/qa/qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb
@@ -23,12 +23,6 @@ def login(user = nil)
         Flow::Login.sign_in
       end
 
-      after do
-        # Cleanup so that retries can start fresh
-        project&.group&.remove_member(approver2)
-        project&.remove_via_api!
-      end
-
       it 'allows multiple approval rules with users and groups', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347771' do
         # Create a merge request with 2 rules
         merge_request = Resource::MergeRequest.fabricate_via_browser_ui! do |resource|
diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb
index 786db6b8b15c5684b4200136b00c2a2d34cd6da9..77f02dfc2c39d1ba9f51952873594e3127ddf2f0 100644
--- a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb
@@ -17,12 +17,6 @@ module QA
           project.visit!
         end
 
-        after do
-          group_or_project.remove_member(approver)
-          approver.remove_via_api!
-          project.remove_via_api!
-        end
-
         context 'and the code owner is the root group', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347804' do
           let(:codeowner) { root_group.path }
           let(:group_or_project) { root_group }
diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb
index 209c4fb11a55fb5586aa65b4f6961433a674920a..a5713ef1d35eae105faf13f7eec255c51ce155bd 100644
--- a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb
@@ -16,11 +16,6 @@ module QA
           project.visit!
         end
 
-        after do
-          group_or_project.remove_member(approver)
-          approver.remove_via_api!
-        end
-
         context 'and the code owner is the root group', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347801' do
           let(:codeowner) { project.group.sandbox.path }
           let(:group_or_project) { project.group.sandbox }
diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb
index 9831244d447efdd483053a6d158ec8a3d6ecd15d..359b2c432094389af3ec77a9b1926ff2f723efb0 100644
--- a/qa/qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb
@@ -57,10 +57,6 @@ module QA
           end
         end
 
-        after do
-          project.remove_via_api!
-        end
-
         it_behaves_like 'user without push access', :user_maintainer, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347775'
         it_behaves_like 'selected developer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347774'
       end
@@ -90,11 +86,6 @@ module QA
           end
         end
 
-        after do
-          project.remove_via_api!
-          group.remove_via_api!
-        end
-
         it_behaves_like 'user without push access', :user_maintainer, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347772'
         it_behaves_like 'selected developer', 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347773'
       end
@@ -125,12 +116,6 @@ module QA
           end
         end
 
-        after do
-          project.remove_via_api!
-          parent_group.remove_via_api!
-          sub_group.remove_via_api!
-        end
-
         it_behaves_like 'user without push access', :user_developer, 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/436937'
       end
 
diff --git a/qa/qa/specs/features/ee/browser_ui/4_verify/job_trace_archival_spec.rb b/qa/qa/specs/features/ee/browser_ui/4_verify/job_trace_archival_spec.rb
index 3de301ba6a7acaf7f9e8322227fd95245fd1dada..bf133b6ddaacc8a1e508813ba3700e6a54c3d5bb 100644
--- a/qa/qa/specs/features/ee/browser_ui/4_verify/job_trace_archival_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/4_verify/job_trace_archival_spec.rb
@@ -28,7 +28,6 @@ module QA
 
       after do
         runner.remove_via_api!
-        project.remove_via_api!
       end
 
       it 'continues to display the archived trace',
diff --git a/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb b/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb
index a894ecc6cddcccd57a4ff0c9992fb0e69f7f63a3..4cced40fc34209f3b71ba6d35a0a825cfc1b4fa0 100644
--- a/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb
@@ -46,12 +46,6 @@ module QA
         imported_project # import project
       end
 
-      after do
-        imported_project.remove_via_api!
-        group.remove_via_api!
-        user.remove_via_api!
-      end
-
       it(
         'user commits to GitHub triggers CI pipeline',
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347679',
diff --git a/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb b/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb
index 291472974571262bb37567c5091415dec51e77fc..448847eecb46684805d0efb50289525bab89c1c7 100644
--- a/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb
@@ -37,9 +37,7 @@ module QA
       end
 
       after do
-        [runner, upstream_project, downstream_project, group].each do |item|
-          item.remove_via_api!
-        end
+        runner.remove_via_api!
       end
 
       context 'when upstream project new tag pipeline finishes' do
diff --git a/qa/qa/specs/features/ee/browser_ui/4_verify/transient/merge_trains_transient_bug_spec.rb b/qa/qa/specs/features/ee/browser_ui/4_verify/transient/merge_trains_transient_bug_spec.rb
index 417d4e6e75c36a5478845f55a6c3a798ecdd6e57..a4563c1a0e9080a56ee5320ec36e2afc4afe70cf 100644
--- a/qa/qa/specs/features/ee/browser_ui/4_verify/transient/merge_trains_transient_bug_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/4_verify/transient/merge_trains_transient_bug_spec.rb
@@ -33,12 +33,6 @@ module QA
         Flow::MergeRequest.enable_merge_trains
       end
 
-      after do
-        runner.remove_via_api! if runner
-        project.remove_via_api!
-        group.remove_via_api!
-      end
-
       it 'confirms that a merge train consistently completes and updates the UI', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348019' do
         Runtime::Env.transient_trials.times do |i|
           QA::Runtime::Logger.info("Transient bug test action - Trial #{i}")
diff --git a/qa/qa/specs/features/ee/browser_ui/9_data_stores/elasticsearch/elasticsearch_reindexing_spec.rb b/qa/qa/specs/features/ee/browser_ui/9_data_stores/elasticsearch/elasticsearch_reindexing_spec.rb
index 29aad6826d9dca504ac7075994e7cfb5193f5cc6..12381ac6b27489a47a8c5fe439b0aff8ccbc4644 100644
--- a/qa/qa/specs/features/ee/browser_ui/9_data_stores/elasticsearch/elasticsearch_reindexing_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/9_data_stores/elasticsearch/elasticsearch_reindexing_spec.rb
@@ -30,10 +30,6 @@ module QA
         end.project.visit!
       end
 
-      after do
-        project.remove_via_api!
-      end
-
       it(
         'tests reindexing after push', :blocking,
         retry: 3,
diff --git a/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/prevent_forking_outside_group_spec.rb b/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/prevent_forking_outside_group_spec.rb
index 894b6c4b37bd6ad0a458bec762218d1202c66862..501412cc61fc10bb3bc2155d1810684814c68dce 100644
--- a/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/prevent_forking_outside_group_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/prevent_forking_outside_group_spec.rb
@@ -19,8 +19,6 @@ module QA
 
       after do
         project.group.sandbox.update_group_setting(group_setting: 'prevent_forking_outside_group', value: false)
-        project.remove_via_api!
-        group_for_fork.remove_via_api!
       end
 
       context 'when disabled' do
diff --git a/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/share_group_with_group_spec.rb b/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/share_group_with_group_spec.rb
index 91d803951f267e2a033437540d983bf511401eaf..2ebf23aa2b923ab3af67d353b09f8d8c3d5c416b 100644
--- a/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/share_group_with_group_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/9_data_stores/group/share_group_with_group_spec.rb
@@ -16,12 +16,6 @@ module QA
         source_group_with_members.add_member(maintainer_user, Resource::Members::AccessLevel::MAINTAINER)
       end
 
-      after do
-        project.remove_via_api!
-        source_group_with_members.remove_via_api!
-        target_group_with_project.remove_via_api!
-      end
-
       it 'can be shared with another group with correct access level', :blocking,
         testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347935' do
         Flow::Login.sign_in