diff --git a/tests/src/Functional/ViewsTest.php b/tests/src/Functional/ViewsTest.php
index 7da8f196..359407b0 100644
--- a/tests/src/Functional/ViewsTest.php
+++ b/tests/src/Functional/ViewsTest.php
@@ -341,13 +341,17 @@ protected function regressionTests() {
   /**
    * Tests setting the "Fulltext search" filter to "Required".
    *
+   * This previously caused problems with form validation and caching.
+   *
    * @see https://www.drupal.org/node/2869121
+   * @see https://www.drupal.org/node/2873246
    */
   protected function regressionTest2869121() {
     // Make sure setting the fulltext filter to "Required" works as expected.
     $view = View::load('search_api_test_view');
     $displays = $view->get('display');
     $displays['default']['display_options']['filters']['search_api_fulltext']['expose']['required'] = TRUE;
+    $displays['default']['display_options']['cache']['type'] = 'search_api_time';
     $view->set('display', $displays);
     $view->save();
 
@@ -383,10 +387,14 @@ protected function regressionTest2869121() {
     ])->save();
 
     $this->drupalGet('');
-    $this->submitForm([], 'Search');
-    $this->assertSession()->addressEquals('search-api-test');
-    $this->assertSession()->responseNotContains('Error message');
-    $this->assertSession()->pageTextNotContains('search results');
+    // We submit the form three times, to make extra sure all Views caches are
+    // triggered.
+    for ($i = 0; $i < 3; ++$i) {
+      $this->submitForm([], 'Search');
+      $this->assertSession()->addressEquals('search-api-test');
+      $this->assertSession()->responseNotContains('Error message');
+      $this->assertSession()->pageTextNotContains('search results');
+    }
   }
 
   /**
