diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb
index 93e8c4f3be6e2748341df6bbff9a0908313797ad..fdf1a2a97acf31872bc96455d4862159aeadf951 100644
--- a/qa/qa/resource/merge_request.rb
+++ b/qa/qa/resource/merge_request.rb
@@ -25,6 +25,7 @@ class MergeRequest < Issuable
         :description,
         :merge_when_pipeline_succeeds,
         :detailed_merge_status,
+        :prepared_at,
         :state,
         :reviewers
 
@@ -110,7 +111,9 @@ def fabricate_via_api!
       rescue ResourceNotFoundError, NoValueError # rescue if iid not populated
         populate_target_and_source_if_required
 
-        super
+        url = super
+        wait_for_preparation
+        url
       end
 
       def api_merge_path
@@ -265,6 +268,18 @@ def wait_until_mergable
         raise Support::Repeater::WaitExceededError,
           "Timed out waiting for merge of MR with id '#{iid}'. Final status was '#{detailed_merge_status}'"
       end
+
+      # Wait until the merge request is prepared. Raises WaitExceededError if the MR is not prepared within 60 seconds
+      # https://docs.gitlab.com/ee/api/merge_requests.html#preparation-steps
+      #
+      # @return [void]
+      def wait_for_preparation
+        return if Support::Waiter.wait_until(sleep_interval: 1, raise_on_failure: false, log: false) do
+          reload!.prepared_at
+        end
+
+        raise Support::Repeater::WaitExceededError, "Timed out waiting for MR with id '#{iid}' to be prepared."
+      end
     end
   end
 end
diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb
index 3609ab5a55dcb49867a56a602214ced710eb76b3..fe98acd539dc9065501b3bdc8de0b0d92fb46476 100644
--- a/qa/qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb
+++ b/qa/qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb
@@ -26,8 +26,7 @@ module QA
       end
 
       it 'merge request assigns code owners as approvers',
-        testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347776',
-        quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/416217', type: :bug } do
+        testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347776' do
         # Commit CODEOWNERS to default branch
         Resource::Repository::Commit.fabricate_via_api! do |commit|
           commit.project = project