diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb
index 9507f92f4b24d3eae0a23deef23581818e3f012e..c200f14f4fb030368d3526fb38e42bd15a7c8da9 100644
--- a/qa/qa/page/merge_request/show.rb
+++ b/qa/qa/page/merge_request/show.rb
@@ -20,14 +20,6 @@ class Show < Page::Base
           element :squash_checkbox
         end
 
-        def rebase!
-          click_element :mr_rebase_button
-
-          wait(reload: false) do
-            has_text?('Fast-forward merge without a merge commit')
-          end
-        end
-
         def fast_forward_possible?
           !has_text?('Fast-forward merge is not possible')
         end
@@ -38,7 +30,35 @@ def has_merge_button?
           has_selector?('.accept-merge-request')
         end
 
+        def rebase!
+          # The rebase button is disabled on load
+          wait do
+            has_css?(element_selector_css(:mr_rebase_button))
+          end
+
+          # The rebase button is enabled via JS
+          wait(reload: false) do
+            !first(element_selector_css(:mr_rebase_button)).disabled?
+          end
+
+          click_element :mr_rebase_button
+
+          wait(reload: false) do
+            has_text?('Fast-forward merge without a merge commit')
+          end
+        end
+
         def merge!
+          # The merge button is disabled on load
+          wait do
+            has_css?(element_selector_css(:merge_button))
+          end
+
+          # The merge button is enabled via JS
+          wait(reload: false) do
+            !first(element_selector_css(:merge_button)).disabled?
+          end
+
           click_element :merge_button
 
           wait(reload: false) do
@@ -47,10 +67,16 @@ def merge!
         end
 
         def mark_to_squash
-          wait(reload: true) do
+          # The squash checkbox is disabled on load
+          wait do
             has_css?(element_selector_css(:squash_checkbox))
           end
 
+          # The squash checkbox is enabled via JS
+          wait(reload: false) do
+            !first(element_selector_css(:squash_checkbox)).disabled?
+          end
+
           click_element :squash_checkbox
         end
       end
diff --git a/qa/qa/specs/features/merge_request/squash_spec.rb b/qa/qa/specs/features/merge_request/squash_spec.rb
index f0ad4bfd701a6505b539f9654d6116c27c94613b..4856bbe1a69395cbded306077fb1294dbf312064 100644
--- a/qa/qa/specs/features/merge_request/squash_spec.rb
+++ b/qa/qa/specs/features/merge_request/squash_spec.rb
@@ -24,6 +24,8 @@ module QA
 
       merge_request.visit!
 
+      expect(page).to have_text('to be squashed')
+
       Page::MergeRequest::Show.perform do |merge_request_page|
         merge_request_page.mark_to_squash
         merge_request_page.merge!