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 eb315af..15c16ba 100644
--- a/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
+++ b/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Url;
 use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\Traits\Core\CronRunTrait;
 
 /**
  * Tests BrowserTestBase functionality.
@@ -13,6 +14,8 @@
  */
 class BrowserTestBaseTest extends BrowserTestBase {
 
+  use CronRunTrait;
+
   /**
    * Modules to enable.
    *
@@ -144,4 +147,16 @@ 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();
+    $this->assertSession()->statusCodeEquals(204);
+    $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 ba08cd5..6e53e28 100644
--- a/core/tests/Drupal/Tests/BrowserTestBase.php
+++ b/core/tests/Drupal/Tests/BrowserTestBase.php
@@ -32,6 +32,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;
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..eaeeec6
--- /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/' . $this->container->get('state')->get('system.cron_key'));
+  }
+
+}
