diff --git a/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php b/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php
index 73379cbf9e03a9dde13e9ac528bccac072e430dc..67209855936c5aefa75674f3e94b7a12ca5c835b 100644
--- a/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php
+++ b/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\KernelTests\KernelTestBase;
-use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\EventSubscriber\ComposerExecutableValidator;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
@@ -16,29 +15,7 @@ use Prophecy\Argument;
  *
  * @group package_manager
  */
-class ComposerExecutableValidatorTest extends KernelTestBase {
-
-  use ValidationTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected static $modules = ['package_manager'];
-
-  /**
-   * Runs the validator under test, and asserts its results match expectations.
-   *
-   * @param \Drupal\package_manager\ValidationResult[] $expected_results
-   *   The expected validation results.
-   */
-  private function assertResults(array $expected_results): void {
-    $stage = $this->prophesize('\Drupal\package_manager\Stage');
-    $event = new PreCreateEvent($stage->reveal());
-    $this->container->get('package_manager.validator.composer_executable')
-      ->validateStage($event);
-
-    $this->assertValidationResultsEqual($expected_results, $event->getResults());
-  }
+class ComposerExecutableValidatorTest extends PackageManagerKernelTestBase {
 
   /**
    * Tests that an error is raised if the Composer executable isn't found.
diff --git a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
index 9e33cdc73adaf9fd584571b4c18396674f7a75e6..47f783f4e1afd8fd8a1aca2e24d88aa53622b571 100644
--- a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
+++ b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php
@@ -2,26 +2,16 @@
 
 namespace Drupal\Tests\package_manager\Kernel;
 
-use Drupal\KernelTests\KernelTestBase;
-use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\EventSubscriber\DiskSpaceValidator;
 use Drupal\package_manager\ValidationResult;
 use Drupal\Component\Utility\Bytes;
-use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
 
 /**
  * @covers \Drupal\package_manager\EventSubscriber\DiskSpaceValidator
  *
  * @group package_manager
  */
-class DiskSpaceValidatorTest extends KernelTestBase {
-
-  use ValidationTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected static $modules = ['package_manager'];
+class DiskSpaceValidatorTest extends PackageManagerKernelTestBase {
 
   /**
    * Data provider for ::testDiskSpaceValidation().
@@ -201,11 +191,7 @@ class DiskSpaceValidatorTest extends KernelTestBase {
     $validator->sharedDisk = $shared_disk;
     $validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space);
 
-    $stage = $this->prophesize('\Drupal\package_manager\Stage');
-    $event = new PreCreateEvent($stage->reveal());
-    $validator->validateStage($event);
-
-    $this->assertValidationResultsEqual($expected_results, $event->getResults());
+    $this->assertResults($expected_results);
   }
 
 }
diff --git a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
new file mode 100644
index 0000000000000000000000000000000000000000..bcaaa645b9206dfa5e79fb4ff0120a940a86b629
--- /dev/null
+++ b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\Tests\package_manager\Kernel;
+
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\package_manager\Stage;
+use Drupal\package_manager\StageException;
+use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
+
+/**
+ * Base class for kernel tests of Package Manager's functionality.
+ */
+abstract class PackageManagerKernelTestBase extends KernelTestBase {
+
+  use ValidationTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'package_manager',
+    'package_manager_bypass',
+  ];
+
+  protected function assertResults(array $expected_results): void {
+    $stage = new Stage(
+      $this->container->get('package_manager.path_locator'),
+      $this->container->get('package_manager.beginner'),
+      $this->container->get('package_manager.stager'),
+      $this->container->get('package_manager.committer'),
+      $this->container->get('package_manager.cleaner'),
+      $this->container->get('event_dispatcher'),
+    );
+    try {
+      $stage->create();
+      $stage->require(['drupal/core:9.8.1']);
+      $stage->apply();
+      $stage->destroy();
+    }
+    catch (StageException $e) {
+      $this->assertValidationResultsEqual($expected_results, $e->getResults());
+    }
+  }
+
+}
diff --git a/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php b/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php
index d388630745533ac87d23c2b8db1e6743a24d63a9..316b85d343189b4e276212a95ffdf20d098d98f3 100644
--- a/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php
+++ b/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php
@@ -2,39 +2,14 @@
 
 namespace Drupal\Tests\package_manager\Kernel;
 
-use Drupal\KernelTests\KernelTestBase;
-use Drupal\package_manager\Event\PreCreateEvent;
 use Drupal\package_manager\ValidationResult;
-use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
 
 /**
  * @covers \Drupal\package_manager\EventSubscriber\PendingUpdatesValidator
  *
  * @group package_manager
  */
-class PendingUpdatesValidatorTest extends KernelTestBase {
-
-  use ValidationTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected static $modules = ['package_manager'];
-
-  /**
-   * Runs the validator under test, and asserts its results match expectations.
-   *
-   * @param \Drupal\package_manager\ValidationResult[] $expected_results
-   *   The expected validation results.
-   */
-  private function assertResults(array $expected_results): void {
-    $stage = $this->prophesize('\Drupal\package_manager\Stage');
-    $event = new PreCreateEvent($stage->reveal());
-    $this->container->get('package_manager.validator.pending_updates')
-      ->validateStage($event);
-
-    $this->assertValidationResultsEqual($expected_results, $event->getResults());
-  }
+class PendingUpdatesValidatorTest extends PackageManagerKernelTestBase {
 
   /**
    * Tests that no error is raised if there are no pending updates.