diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index 3622642..45cee59 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -25,6 +25,7 @@
 use Drupal\Core\Test\AssertMailTrait;
 use Drupal\Core\Url;
 use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait;
+use Drupal\Tests\Traits\Core\CronRunTrait;
 use Drupal\Tests\TestFileCreationTrait;
 use Drupal\Tests\XdebugRequestTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -51,6 +52,7 @@
   use ContentTypeCreationTrait {
     createContentType as drupalCreateContentType;
   }
+  use CronRunTrait;
   use AssertMailTrait {
     getMails as drupalGetMails;
   }
@@ -1952,13 +1954,6 @@ protected function translatePostValues(array $values) {
   }
 
   /**
-   * Runs cron in the Drupal installed by Simpletest.
-   */
-  protected function cronRun() {
-    $this->drupalGet('cron/' . \Drupal::state()->get('system.cron_key'));
-  }
-
-  /**
    * Checks for meta refresh tag and if found call drupalGet() recursively.
    *
    * This function looks for the http-equiv attribute to be set to "Refresh" and
diff --git a/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php b/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
index b0a53dd..ec601e6 100644
--- a/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
+++ b/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
@@ -123,4 +123,15 @@ public function testLegacyAsserts() {
     $this->assertText($sanitized);
   }
 
+  /**
+   * Tests the ::cronRun() method.
+   */
+  public function testCronRun() {
+    $last_cron_time = $this->container->get('state')->get('system.cron_last');
+    $this->cronRun();
+    $next_cron_time = $this->container->get('state')->get('system.cron_last');
+
+    $this->assertGreaterThan($last_cron_time, $next_cron_time);
+  }
+
 }
diff --git a/core/tests/Drupal/Tests/BrowserTestBase.php b/core/tests/Drupal/Tests/BrowserTestBase.php
index 5dfa68a..38e3b37 100644
--- a/core/tests/Drupal/Tests/BrowserTestBase.php
+++ b/core/tests/Drupal/Tests/BrowserTestBase.php
@@ -31,6 +31,7 @@
 use Drupal\simpletest\BlockCreationTrait;
 use Drupal\simpletest\NodeCreationTrait;
 use Drupal\simpletest\UserCreationTrait;
+use Drupal\Tests\Traits\Core\CronRunTrait;
 use Symfony\Component\CssSelector\CssSelectorConverter;
 use Symfony\Component\HttpFoundation\Request;
 use Psr\Http\Message\RequestInterface;
@@ -51,6 +52,7 @@
     placeBlock as drupalPlaceBlock;
   }
   use AssertLegacyTrait;
+  use CronRunTrait;
   use RandomGeneratorTrait;
   use SessionTestTrait;
   use NodeCreationTrait {
diff --git a/core/tests/Drupal/Tests/Traits/Core/CronRunTrait.php b/core/tests/Drupal/Tests/Traits/Core/CronRunTrait.php
new file mode 100644
index 0000000..17ca9fc
--- /dev/null
+++ b/core/tests/Drupal/Tests/Traits/Core/CronRunTrait.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Drupal\Tests\Traits\Core;
+
+/**
+ * Adds ability to run cron from tests.
+ */
+trait CronRunTrait {
+
+  /**
+   * Runs cron on the test site.
+   */
+  protected function cronRun() {
+    $this->drupalGet('cron/' . \Drupal::state()->get('system.cron_key'));
+  }
+
+}
