diff --git a/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.json b/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.json
deleted file mode 100644
index 04a32148992590f2f779e2500769c1d7f8b159bd..0000000000000000000000000000000000000000
--- a/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "_readme": [
-    "This file simulates a list of packages installed in the active directory of a virtual project.",
-    "It will be compared against staged.installed.json.",
-    "See \\Drupal\\Tests\\automatic_updates\\Kernel\\StatusCheck\\StagedProjectsValidatorTest::testErrors()"
-  ],
-  "packages": [
-    {
-      "name": "drupal/core",
-      "version": "9.8.0",
-      "type": "drupal-core",
-      "extra": {
-        "drupal-scaffold": {
-          "file-mapping": {}
-        }
-      }
-    },
-    {
-      "name": "drupal/test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "drupal/dev-test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/dev-removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    }
-  ],
-  "dev": true,
-  "dev-package-names": [
-    "drupal/dev-test_module",
-    "other/dev-removed"
-  ]
-}
diff --git a/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.php b/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.php
deleted file mode 100644
index 0111e9a997ed25cb6f8a8738a90d5b2d80111a44..0000000000000000000000000000000000000000
--- a/tests/fixtures/StagedProjectsValidatorTest/new_project_added/vendor/composer/installed.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/**
- * @file
- */
-
-return [
-  'versions' => [
-    'drupal/test_module' => [
-      'type' => 'drupal-module',
-      'install_path' => '../../modules/test_module',
-    ],
-    'drupal/dev-test_module' => [
-      'type' => 'drupal-module',
-      'install_path' => '../../modules/dev-test_module',
-    ],
-  ],
-];
diff --git a/tests/fixtures/StagedProjectsValidatorTest/no_errors/vendor/composer/installed.json b/tests/fixtures/StagedProjectsValidatorTest/no_errors/vendor/composer/installed.json
deleted file mode 100644
index 95c7c4d9c74547f7afc0601af4a5a501ad4dd1e0..0000000000000000000000000000000000000000
--- a/tests/fixtures/StagedProjectsValidatorTest/no_errors/vendor/composer/installed.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "_readme": [
-    "This file simulates a list of packages installed in the active directory of a virtual project.",
-    "It will be compared against staged.installed.json.",
-    "See \\Drupal\\Tests\\automatic_updates\\Kernel\\StatusCheck\\StagedProjectsValidatorTest::testErrors()"
-  ],
-  "packages": [
-    {
-      "name": "drupal/core",
-      "version": "9.8.0",
-      "type": "drupal-core",
-      "extra": {
-        "drupal-scaffold": {
-          "file-mapping": {}
-        }
-      }
-    },
-    {
-      "name": "drupal/test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "other/changed",
-      "description": "This project version is changed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "drupal/dev-test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/dev-removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "other/dev-changed",
-      "description": "This project version is changed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    }
-  ],
-  "dev": true,
-  "dev-package-names": [
-    "drupal/dev-test_module",
-    "other/dev-removed",
-    "other/dev-changed"
-  ]
-}
diff --git a/tests/fixtures/StagedProjectsValidatorTest/project_removed/vendor/composer/installed.json b/tests/fixtures/StagedProjectsValidatorTest/project_removed/vendor/composer/installed.json
deleted file mode 100644
index f9effe638d97c765d707fd3f368033a786ba1448..0000000000000000000000000000000000000000
--- a/tests/fixtures/StagedProjectsValidatorTest/project_removed/vendor/composer/installed.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "_readme": [
-    "This file simulates a list of packages installed in the active directory of a virtual project.",
-    "It will be compared against staged.installed.json.",
-    "See \\Drupal\\Tests\\automatic_updates\\Kernel\\StatusCheck\\StagedProjectsValidatorTest::testErrors()"
-  ],
-  "packages": [
-    {
-      "name": "drupal/core",
-      "version": "9.8.0",
-      "type": "drupal-core",
-      "extra": {
-        "drupal-scaffold": {
-          "file-mapping": {}
-        }
-      }
-    },
-    {
-      "name": "drupal/test_theme",
-      "version": "1.3.0",
-      "type": "drupal-theme"
-    },
-    {
-      "name": "drupal/test_module2",
-      "version": "1.3.1",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "drupal/dev-test_theme",
-      "version": "1.3.0",
-      "type": "drupal-custom-theme"
-    },
-    {
-      "name": "drupal/dev-test_module2",
-      "version": "1.3.1",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/dev-removed",
-      "description": "This project is removed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    }
-  ],
-  "dev": true,
-  "dev-package-names": [
-    "drupal/dev-test_theme",
-    "drupal/dev-test_module2",
-    "other/dev-removed"
-  ]
-}
diff --git a/tests/fixtures/StagedProjectsValidatorTest/version_changed/vendor/composer/installed.json b/tests/fixtures/StagedProjectsValidatorTest/version_changed/vendor/composer/installed.json
deleted file mode 100644
index 05b1d9ddd1dbf9383581b2987e125b2f34499d50..0000000000000000000000000000000000000000
--- a/tests/fixtures/StagedProjectsValidatorTest/version_changed/vendor/composer/installed.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "_readme": [
-    "This file simulates a list of packages installed in the active directory of a virtual project.",
-    "It will be compared against staged.installed.json.",
-    "See \\Drupal\\Tests\\automatic_updates\\Kernel\\StatusCheck\\StagedProjectsValidatorTest::testErrors()"
-  ],
-  "packages": [
-    {
-      "name": "drupal/core",
-      "version": "9.8.0",
-      "type": "drupal-core",
-      "extra": {
-        "drupal-scaffold": {
-          "file-mapping": {}
-        }
-      }
-    },
-    {
-      "name": "drupal/test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/changed",
-      "description": "This project version is changed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    },
-    {
-      "name": "drupal/dev-test_module",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "other/dev-changed",
-      "description": "This project version is changed but there should be no error because it is not a Drupal project.",
-      "version": "1.3.1",
-      "type": "library"
-    }
-  ],
-  "dev": true,
-  "dev-package-names": [
-    "drupal/dev-test_module",
-    "other/dev-changed"
-  ]
-}
diff --git a/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php b/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
index 13d7f2b6a99df7acd0bac6b5099be4c01061b07a..3c1fb6afb067f23275b4a1bfe1a02989e318954d 100644
--- a/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
+++ b/tests/src/Kernel/StatusCheck/StagedProjectsValidatorTest.php
@@ -72,7 +72,30 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
    * Tests that an error is raised if Drupal extensions are unexpectedly added.
    */
   public function testProjectsAdded(): void {
-    $this->copyFixtureFolderToActiveDirectory(__DIR__ . '/../../../fixtures/StagedProjectsValidatorTest/new_project_added');
+    $active_dir = $this->container->get('package_manager.path_locator')
+      ->getProjectRoot();
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal_module',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/dev-test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal_module',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/dev-removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+      'dev_requirement' => TRUE,
+    ]);
 
     $updater = $this->container->get('automatic_updates.updater');
     $updater->begin(['drupal' => '9.8.1']);
@@ -128,7 +151,41 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
    * Tests that errors are raised if Drupal extensions are unexpectedly removed.
    */
   public function testProjectsRemoved(): void {
-    $this->copyFixtureFolderToActiveDirectory(__DIR__ . '/../../../fixtures/StagedProjectsValidatorTest/project_removed');
+    $active_dir = $this->container->get('package_manager.path_locator')
+      ->getProjectRoot();
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/test_theme',
+      'version' => '1.3.0',
+      'type' => 'drupal-theme',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/test_module2',
+      'version' => '1.3.1',
+      'type' => 'drupal-module',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/dev-test_theme',
+      'version' => '1.3.0',
+      'type' => 'drupal-custom-theme',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/dev-test_module2',
+      'version' => '1.3.1',
+      'type' => 'drupal-module',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/dev-removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+      'dev_requirement' => TRUE,
+    ]);
 
     $updater = $this->container->get('automatic_updates.updater');
     $updater->begin(['drupal' => '9.8.1']);
@@ -160,7 +217,30 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
    * Tests that errors are raised if Drupal extensions are unexpectedly updated.
    */
   public function testVersionsChanged(): void {
-    $this->copyFixtureFolderToActiveDirectory(__DIR__ . '/../../../fixtures/StagedProjectsValidatorTest/version_changed');
+    $active_dir = $this->container->get('package_manager.path_locator')
+      ->getProjectRoot();
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/changed',
+      'version' => '1.3.1',
+      'type' => 'library',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/dev-test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/dev-changed',
+      'version' => '1.3.1',
+      'type' => 'library',
+      'dev_requirement' => TRUE,
+    ]);
 
     $updater = $this->container->get('automatic_updates.updater');
     $updater->begin(['drupal' => '9.8.1']);
@@ -200,7 +280,41 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
    * Tests that no errors occur if only core and its dependencies are updated.
    */
   public function testNoErrors(): void {
-    $this->copyFixtureFolderToActiveDirectory(__DIR__ . '/../../../fixtures/StagedProjectsValidatorTest/no_errors');
+    $active_dir = $this->container->get('package_manager.path_locator')
+      ->getProjectRoot();
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/changed',
+      'version' => '1.3.1',
+      'type' => 'library',
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'drupal/dev-test_module',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/dev-removed',
+      'version' => '1.3.1',
+      'type' => 'library',
+      'dev_requirement' => TRUE,
+    ]);
+    $this->addPackage($active_dir, [
+      'name' => 'other/dev-changed',
+      'version' => '1.3.1',
+      'type' => 'library',
+      'dev_requirement' => TRUE,
+    ]);
 
     $updater = $this->container->get('automatic_updates.updater');
     $updater->begin(['drupal' => '9.8.1']);