diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
index c39f2f8..1b0c84c 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
@@ -71,7 +71,7 @@ public function testBlocks($block_id, $new_page_text, $element_selector, $label_
         $this->waitForNoElement("#toolbar-administration a.is-active");
       }
       $page->find('css', $toolbar_item)->click();
-      $this->waitForElement("{$toolbar_item}.is-active");
+      $this->waitForElementVisibleAndAjaxRequest("{$toolbar_item}.is-active");
     }
     $this->toggleEditingMode();
     if (isset($toolbar_item)) {
@@ -166,7 +166,7 @@ public function providerTestBlocks() {
    * Enables Editing mode by pressing "Edit" button in the toolbar.
    */
   protected function toggleEditingMode() {
-    $this->waitForElement('div[data-contextual-id="block:block=powered:langcode=en|outside_in::langcode=en"] .contextual-links a', 10000);
+    $this->waitForElementVisibleAndAjaxRequest('div[data-contextual-id="block:block=powered:langcode=en|outside_in::langcode=en"] .contextual-links a');
     // Waiting for QuickEdit icon animation.
     $this->assertSession()->assertWaitOnAjaxRequest();
 
@@ -235,7 +235,7 @@ public function testQuickEditLinks() {
       $this->drupalGet('node/' . $node->id());
       // Waiting for Toolbar module.
       // @todo Remove the hack after https://www.drupal.org/node/2542050.
-      $this->waitForElement('.toolbar-fixed');
+      $this->waitForElementVisibleAndAjaxRequest('.toolbar-fixed');
       // Waiting for Toolbar animation.
       $web_assert->assertWaitOnAjaxRequest();
       // The 2nd page load we should already be in edit mode.
@@ -244,7 +244,7 @@ public function testQuickEditLinks() {
       }
       // In Edit mode clicking field should open QuickEdit toolbar.
       $page->find('css', $body_selector)->click();
-      $this->waitForElement($quick_edit_selector);
+      $this->waitForElementVisibleAndAjaxRequest($quick_edit_selector);
       // Exit Edit mode.
       $this->toggleEditingMode();
       // Exiting Edit mode should close QuickEdit toolbar.
@@ -257,7 +257,7 @@ public function testQuickEditLinks() {
       $this->toggleEditingMode();
       $this->openBlockForm($block_selector);
       $page->find('css', $body_selector)->click();
-      $this->waitForElement($quick_edit_selector);
+      $this->waitForElementVisibleAndAjaxRequest($quick_edit_selector);
       // Offcanvas should be closed when opening QuickEdit toolbar.
       $this->waitForOffCanvasToClose();
 
@@ -272,7 +272,7 @@ public function testQuickEditLinks() {
     $this->toggleEditingMode();
     // Open QuickEdit toolbar before going into Edit mode.
     $this->clickContextualLink('.node', "Quick edit");
-    $this->waitForElement($quick_edit_selector);
+    $this->waitForElementVisibleAndAjaxRequest($quick_edit_selector);
     // Open off-canvas and enter Edit mode via contextual link.
     $this->clickContextualLink($block_selector, "Quick edit");
     $this->waitForOffCanvasToOpen();
@@ -281,7 +281,7 @@ public function testQuickEditLinks() {
     // Open QuickEdit toolbar via contextual link while in Edit mode.
     $this->clickContextualLink('.node', "Quick edit", FALSE);
     $this->waitForOffCanvasToClose();
-    $this->waitForElement($quick_edit_selector);
+    $this->waitForElementVisibleAndAjaxRequest($quick_edit_selector);
   }
 
 }
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
index 48ba899..42dc9f0 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
@@ -40,9 +40,7 @@ public function enableTheme($theme) {
    * Waits for Off-canvas tray to open.
    */
   protected function waitForOffCanvasToOpen() {
-    $web_assert = $this->assertSession();
-    $web_assert->assertWaitOnAjaxRequest();
-    $this->waitForElement('#drupal-offcanvas');
+    $this->waitForElementVisibleAndAjaxRequest('#drupal-offcanvas');
   }
 
   /**
@@ -53,19 +51,6 @@ protected function waitForOffCanvasToClose() {
   }
 
   /**
-   * Waits for an element to appear on the page.
-   *
-   * @param string $selector
-   *   CSS selector.
-   * @param int $timeout
-   *   (optional) Timeout in milliseconds, defaults to 10000.
-   */
-  protected function waitForElement($selector, $timeout = 10000) {
-    $condition = "(jQuery('$selector').length > 0)";
-    $this->assertJsCondition($condition, $timeout);
-  }
-
-  /**
    * Gets the Off-Canvas tray element.
    *
    * @return \Behat\Mink\Element\NodeElement|null
@@ -131,4 +116,15 @@ protected function toggleContextualTriggerVisibility($selector) {
     $this->getSession()->executeScript("jQuery('{$selector} .contextual .trigger').toggleClass('visually-hidden');");
   }
 
+  /**
+   * Wait for an element to be visible and Ajax request to finish.
+   *
+   * @param string $css_selector
+   *   The CSS selector.
+   */
+  protected function waitForElementVisibleAndAjaxRequest($css_selector) {
+    $this->assertSession()->waitForElementVisible('css', $css_selector);
+    $this->assertSession()->assertWaitOnAjaxRequest();
+  }
+
 }
