diff --git a/composer.json b/composer.json
index 2016cc1..f038d7f 100644
--- a/composer.json
+++ b/composer.json
@@ -4,7 +4,7 @@
   "type": "drupal-module",
   "homepage": "https://www.drupal.org/project/pluginreference",
   "require": {
-    "drupal/core": "^10.3 || ^11"
+    "drupal/core": "^10.3 || ^11 || ^12"
   },
   "authors": [
     {
diff --git a/pluginreference.info.yml b/pluginreference.info.yml
index c458b8e..7070b68 100644
--- a/pluginreference.info.yml
+++ b/pluginreference.info.yml
@@ -1,7 +1,7 @@
 name: Plugin Reference
 type: module
 description: Provides a field that stores a soft reference to a plugin
-core_version_requirement: ^10.3 || ^11
+core_version_requirement: ^10.3 || ^11 || ^12
 package: Field types
 dependencies:
   - drupal:field
diff --git a/pluginreference.module b/pluginreference.module
index 1673650..36c2fa6 100644
--- a/pluginreference.module
+++ b/pluginreference.module
@@ -5,26 +5,22 @@
  * Provides a field that stores a soft reference to a plugin.
  */
 
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\pluginreference\Hook\PluginreferenceHooks;
 use Drupal\Core\Routing\RouteMatchInterface;
 
 /**
  * Implements hook_help().
  */
+#[LegacyHook]
 function pluginreference_help($route_name, RouteMatchInterface $route_match) {
-  switch ($route_name) {
-    // Main module help for the pluginreference module.
-    case 'help.page.pluginreference':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('This module simply provides a "Plugin reference" field that allows to create soft references to plugins.') . '</p>';
-      return $output;
-  }
+  return \Drupal::service(PluginreferenceHooks::class)->help($route_name, $route_match);
 }
 
 /**
  * Implements hook_form_FORM_ID_alter() for 'field_ui_field_storage_add_form'.
  */
+#[LegacyHook]
 function pluginreference_form_field_ui_field_storage_add_form_alter(array &$form) {
-  unset($form['add']['new_storage_type']['#options']['plugin_reference']['plugin_reference']);
-  $form['add']['new_storage_type']['#options']['plugin_reference']['plugin_reference'] = t('Other…');
+  \Drupal::service(PluginreferenceHooks::class)->formFieldUiFieldStorageAddFormAlter($form);
 }
diff --git a/pluginreference.services.yml b/pluginreference.services.yml
index d17f134..a3bfa98 100644
--- a/pluginreference.services.yml
+++ b/pluginreference.services.yml
@@ -5,3 +5,7 @@ services:
   plugin_reference.plugin_type_helper:
     class: \Drupal\pluginreference\PluginTypeHelper
     arguments: ['@service_container', '@extension.list.module']
+
+  Drupal\pluginreference\Hook\PluginreferenceHooks:
+    class: Drupal\pluginreference\Hook\PluginreferenceHooks
+    autowire: true
diff --git a/src/Hook/PluginreferenceHooks.php b/src/Hook/PluginreferenceHooks.php
new file mode 100644
index 0000000..2eb9c66
--- /dev/null
+++ b/src/Hook/PluginreferenceHooks.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\pluginreference\Hook;
+
+use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Hook implementations for pluginreference.
+ */
+class PluginreferenceHooks {
+  use StringTranslationTrait;
+
+  /**
+   * Implements hook_help().
+   */
+  #[Hook('help')]
+  public function help($route_name, RouteMatchInterface $route_match) {
+    switch ($route_name) {
+      // Main module help for the pluginreference module.
+      case 'help.page.pluginreference':
+        $output = '';
+        $output .= '<h3>' . $this->t('About') . '</h3>';
+        $output .= '<p>' . $this->t('This module simply provides a "Plugin reference" field that allows to create soft references to plugins.') . '</p>';
+        return $output;
+    }
+  }
+
+  /**
+   * Implements hook_form_FORM_ID_alter() for 'field_ui_field_storage_add_form'.
+   */
+  #[Hook('form_field_ui_field_storage_add_form_alter')]
+  public function formFieldUiFieldStorageAddFormAlter(array &$form) {
+    unset($form['add']['new_storage_type']['#options']['plugin_reference']['plugin_reference']);
+    $form['add']['new_storage_type']['#options']['plugin_reference']['plugin_reference'] = $this->t('Other…');
+  }
+
+}
diff --git a/tests/src/Functional/PluginReferenceDefaultValueTest.php b/tests/src/Functional/PluginReferenceDefaultValueTest.php
index 921a55a..3fcf6fc 100644
--- a/tests/src/Functional/PluginReferenceDefaultValueTest.php
+++ b/tests/src/Functional/PluginReferenceDefaultValueTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\Tests\BrowserTestBase;
@@ -12,6 +14,8 @@ use Drupal\Tests\SchemaCheckTestTrait;
  *
  * @group entity_reference
  */
+#[Group('entity_reference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceDefaultValueTest extends BrowserTestBase {
 
   use SchemaCheckTestTrait;
diff --git a/tests/src/Functional/PluginReferenceFieldCreationTest.php b/tests/src/Functional/PluginReferenceFieldCreationTest.php
index bed0144..3cdce55 100644
--- a/tests/src/Functional/PluginReferenceFieldCreationTest.php
+++ b/tests/src/Functional/PluginReferenceFieldCreationTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\field_ui\Traits\FieldUiTestTrait;
@@ -11,6 +13,8 @@ use Drupal\Tests\field_ui\Traits\FieldUiTestTrait;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldCreationTest extends BrowserTestBase {
 
   use FieldUiTestTrait;
diff --git a/tests/src/Functional/PluginReferenceFieldWidgetTest.php b/tests/src/Functional/PluginReferenceFieldWidgetTest.php
index 3464f6c..3c00fbd 100644
--- a/tests/src/Functional/PluginReferenceFieldWidgetTest.php
+++ b/tests/src/Functional/PluginReferenceFieldWidgetTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Component\Utility\Crypt;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
@@ -15,6 +17,8 @@ use Drupal\Tests\pluginreference\Traits\PluginReferenceTrait;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldWidgetTest extends BrowserTestBase {
 
   use PluginReferenceTrait;
diff --git a/tests/src/Functional/Update/PluginReferencePostUpdateAddConfigurationFormOptionToWidget.php b/tests/src/Functional/Update/PluginReferencePostUpdateAddConfigurationFormOptionToWidget.php
index da84fd3..c21348d 100644
--- a/tests/src/Functional/Update/PluginReferencePostUpdateAddConfigurationFormOptionToWidget.php
+++ b/tests/src/Functional/Update/PluginReferencePostUpdateAddConfigurationFormOptionToWidget.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferencePostUpdateAddConfigurationFormOptionToWidget extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/Functional/Update/PluginReferencePostUpdateAddHandlerToPluginReferenceFieldConfigs.php b/tests/src/Functional/Update/PluginReferencePostUpdateAddHandlerToPluginReferenceFieldConfigs.php
index 5fd90f9..4e39f44 100644
--- a/tests/src/Functional/Update/PluginReferencePostUpdateAddHandlerToPluginReferenceFieldConfigs.php
+++ b/tests/src/Functional/Update/PluginReferencePostUpdateAddHandlerToPluginReferenceFieldConfigs.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferencePostUpdateAddHandlerToPluginReferenceFieldConfigs extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/Functional/Update/PluginReferencePostUpdateAddMatchOptionsToAutocompleteWidget.php b/tests/src/Functional/Update/PluginReferencePostUpdateAddMatchOptionsToAutocompleteWidget.php
index 0968165..af907cd 100644
--- a/tests/src/Functional/Update/PluginReferencePostUpdateAddMatchOptionsToAutocompleteWidget.php
+++ b/tests/src/Functional/Update/PluginReferencePostUpdateAddMatchOptionsToAutocompleteWidget.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferencePostUpdateAddMatchOptionsToAutocompleteWidget extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/Functional/Update/PluginReferenceUpdate9001.php b/tests/src/Functional/Update/PluginReferenceUpdate9001.php
index 467e411..c8b2007 100644
--- a/tests/src/Functional/Update/PluginReferenceUpdate9001.php
+++ b/tests/src/Functional/Update/PluginReferenceUpdate9001.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\IgnoreDeprecations;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -10,6 +13,9 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  * @group pluginreference
  * @group legacy
  */
+#[Group('pluginreference')]
+#[IgnoreDeprecations]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceUpdate9001 extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/Functional/Update/PluginReferenceUpdate9002.php b/tests/src/Functional/Update/PluginReferenceUpdate9002.php
index 806739f..28973b6 100644
--- a/tests/src/Functional/Update/PluginReferenceUpdate9002.php
+++ b/tests/src/Functional/Update/PluginReferenceUpdate9002.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceUpdate9002 extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/Functional/Update/PluginReferenceUpdate9003.php b/tests/src/Functional/Update/PluginReferenceUpdate9003.php
index 35cb433..943102d 100644
--- a/tests/src/Functional/Update/PluginReferenceUpdate9003.php
+++ b/tests/src/Functional/Update/PluginReferenceUpdate9003.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Functional\Update;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
 
 /**
@@ -9,6 +11,8 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceUpdate9003 extends UpdatePathTestBase {
 
   /**
diff --git a/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetConfigurationTest.php b/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetConfigurationTest.php
index ccc15fd..504bfae 100644
--- a/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetConfigurationTest.php
+++ b/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetConfigurationTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\FunctionalJavascript;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\Core\Url;
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
@@ -12,6 +14,8 @@ use Drupal\Tests\pluginreference\Traits\PluginReferenceTrait;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldWidgetConfigurationTest extends WebDriverTestBase {
 
   use PluginReferenceTrait;
diff --git a/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetSelectionHandlerTest.php b/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetSelectionHandlerTest.php
index 8fa4405..cc980f6 100644
--- a/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetSelectionHandlerTest.php
+++ b/tests/src/FunctionalJavascript/PluginReferenceFieldWidgetSelectionHandlerTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\FunctionalJavascript;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\Tests\field_ui\Traits\FieldUiJSTestTrait;
@@ -12,6 +14,8 @@ use Drupal\Tests\pluginreference\Traits\PluginReferenceTrait;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldWidgetSelectionHandlerTest extends WebDriverTestBase {
 
   use PluginReferenceTrait;
diff --git a/tests/src/FunctionalJavascript/PluginReferenceSelection/DefaultSelectionUiTest.php b/tests/src/FunctionalJavascript/PluginReferenceSelection/DefaultSelectionUiTest.php
index 350ca63..bb8b1d6 100644
--- a/tests/src/FunctionalJavascript/PluginReferenceSelection/DefaultSelectionUiTest.php
+++ b/tests/src/FunctionalJavascript/PluginReferenceSelection/DefaultSelectionUiTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\FunctionalJavascript\PluginReferenceSelection;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\field\Entity\FieldConfig;
 
@@ -10,6 +12,8 @@ use Drupal\field\Entity\FieldConfig;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class DefaultSelectionUiTest extends SelectionUiTestBase {
 
   /**
diff --git a/tests/src/FunctionalJavascript/PluginReferenceSelection/FilteredSelectionUiTest.php b/tests/src/FunctionalJavascript/PluginReferenceSelection/FilteredSelectionUiTest.php
index 0d20bce..531e4c5 100644
--- a/tests/src/FunctionalJavascript/PluginReferenceSelection/FilteredSelectionUiTest.php
+++ b/tests/src/FunctionalJavascript/PluginReferenceSelection/FilteredSelectionUiTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\FunctionalJavascript\PluginReferenceSelection;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\field\Entity\FieldConfig;
 
@@ -10,6 +12,8 @@ use Drupal\field\Entity\FieldConfig;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class FilteredSelectionUiTest extends SelectionUiTestBase {
 
   /**
diff --git a/tests/src/Kernel/PluginReferenceFieldFormatterTest.php b/tests/src/Kernel/PluginReferenceFieldFormatterTest.php
index 62fa3e4..3c9cb55 100644
--- a/tests/src/Kernel/PluginReferenceFieldFormatterTest.php
+++ b/tests/src/Kernel/PluginReferenceFieldFormatterTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\pluginreference\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\KernelTests\KernelTestBase;
@@ -13,6 +16,8 @@ use Drupal\user\RoleInterface;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldFormatterTest extends KernelTestBase {
 
   use PluginReferenceTrait;
@@ -65,6 +70,7 @@ class PluginReferenceFieldFormatterTest extends KernelTestBase {
    *
    * @dataProvider pluginReferenceIdFormatterDataProvider
    */
+  #[DataProvider('pluginReferenceIdFormatterDataProvider')]
   public function testPluginReferenceIdFormatter(string $entity_type, string $bundle, string $field_name, string $target_type, string $plugin_id, array $configuration, string $expected_output, array $expected_cacheability_metadata): void {
     $this->createPluginReferenceField($entity_type, $bundle, $field_name, $this->randomMachineName(), $target_type);
 
@@ -157,6 +163,7 @@ class PluginReferenceFieldFormatterTest extends KernelTestBase {
    *
    * @dataProvider pluginReferenceLabelFormatterDataProvider
    */
+  #[DataProvider('pluginReferenceLabelFormatterDataProvider')]
   public function testPluginReferenceLabelFormatter(string $entity_type, string $bundle, string $field_name, string $target_type, string $plugin_id, array $configuration, string $expected_output, array $expected_cacheability_metadata): void {
     $this->createPluginReferenceField($entity_type, $bundle, $field_name, $this->randomMachineName(), $target_type);
 
@@ -264,6 +271,7 @@ class PluginReferenceFieldFormatterTest extends KernelTestBase {
    *
    * @dataProvider accessDataProvider
    */
+  #[DataProvider('accessDataProvider')]
   public function testAccess(string $formatter): void {
     $user_role_storage = $this->entityTypeManager->getStorage('user_role');
     $anonymous_role = $user_role_storage->load(RoleInterface::ANONYMOUS_ID);
diff --git a/tests/src/Kernel/PluginReferenceFieldTest.php b/tests/src/Kernel/PluginReferenceFieldTest.php
index 5645e8f..f7a8f62 100644
--- a/tests/src/Kernel/PluginReferenceFieldTest.php
+++ b/tests/src/Kernel/PluginReferenceFieldTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\pluginreference\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\field\Entity\FieldConfig;
@@ -17,6 +19,8 @@ use Drupal\Tests\pluginreference\Traits\PluginReferenceTrait;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceFieldTest extends EntityKernelTestBase {
 
   use PluginReferenceTrait;
diff --git a/tests/src/Kernel/PluginReferenceSelection/DefaultSelectionTest.php b/tests/src/Kernel/PluginReferenceSelection/DefaultSelectionTest.php
index 3ffd2d0..045ace2 100644
--- a/tests/src/Kernel/PluginReferenceSelection/DefaultSelectionTest.php
+++ b/tests/src/Kernel/PluginReferenceSelection/DefaultSelectionTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\pluginreference\Kernel\PluginReferenceSelection;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\pluginreference\Plugin\PluginReferenceSelection\BlockSelection;
 use Drupal\user\RoleInterface;
@@ -13,6 +16,8 @@ use Drupal\user\RoleInterface;
  *
  * @coversDefaultClass \Drupal\pluginreference\Plugin\PluginReferenceSelection\DefaultSelection
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class DefaultSelectionTest extends KernelTestBase {
 
   /**
@@ -61,6 +66,7 @@ class DefaultSelectionTest extends KernelTestBase {
    *
    * @covers ::getReferenceablePlugins
    */
+  #[DataProvider('getReferenceablePluginsDataProvider')]
   public function testGetReferenceablePlugins(array $expected, array $instance_options, ?string $match, string $match_operator, int $limit): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
@@ -194,6 +200,7 @@ class DefaultSelectionTest extends KernelTestBase {
    *
    * @covers ::countReferenceablePlugins
    */
+  #[DataProvider('countReferenceablePluginsDataProvider')]
   public function testCountReferenceablePlugins(int $expected, array $instance_options, ?string $match, string $match_operator): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
@@ -253,6 +260,7 @@ class DefaultSelectionTest extends KernelTestBase {
    *
    * @covers ::validateReferenceablePlugins
    */
+  #[DataProvider('validateReferenceablePluginsDataProvider')]
   public function testValidateReferenceablePlugins(array $expected, array $instance_options, array $plugin_ids): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
diff --git a/tests/src/Kernel/PluginReferenceSelection/FilteredSelectionTest.php b/tests/src/Kernel/PluginReferenceSelection/FilteredSelectionTest.php
index f3d5128..e5c0616 100644
--- a/tests/src/Kernel/PluginReferenceSelection/FilteredSelectionTest.php
+++ b/tests/src/Kernel/PluginReferenceSelection/FilteredSelectionTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\pluginreference\Kernel\PluginReferenceSelection;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\pluginreference\Plugin\PluginReferenceSelection\BlockFilteredSelection;
 use Drupal\user\RoleInterface;
@@ -13,6 +16,8 @@ use Drupal\user\RoleInterface;
  *
  * @coversDefaultClass \Drupal\pluginreference\Plugin\PluginReferenceSelection\FilteredSelection
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class FilteredSelectionTest extends KernelTestBase {
 
   /**
@@ -62,6 +67,7 @@ class FilteredSelectionTest extends KernelTestBase {
    *
    * @covers ::getReferenceablePlugins
    */
+  #[DataProvider('getReferenceablePluginsDataProvider')]
   public function testGetReferenceablePlugins(array $expected, array $instance_options, ?string $match, string $match_operator, int $limit): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
@@ -290,6 +296,7 @@ class FilteredSelectionTest extends KernelTestBase {
    *
    * @covers ::countReferenceablePlugins
    */
+  #[DataProvider('countReferenceablePluginsDataProvider')]
   public function testCountReferenceablePlugins(int $expected, array $instance_options, ?string $match, string $match_operator): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
@@ -421,6 +428,7 @@ class FilteredSelectionTest extends KernelTestBase {
    *
    * @covers ::validateReferenceablePlugins
    */
+  #[DataProvider('validateReferenceablePluginsDataProvider')]
   public function testValidateReferenceablePlugins(array $expected, array $instance_options, array $plugin_ids): void {
     /** @var \Drupal\pluginreference\PluginReferenceSelectionInterface $plugin_reference_selection */
     $plugin_reference_selection = $this->pluginReferenceSelectionManager->getInstance($instance_options);
diff --git a/tests/src/Kernel/PluginReferenceSelectionManagerTest.php b/tests/src/Kernel/PluginReferenceSelectionManagerTest.php
index 445b665..1c02e37 100644
--- a/tests/src/Kernel/PluginReferenceSelectionManagerTest.php
+++ b/tests/src/Kernel/PluginReferenceSelectionManagerTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\pluginreference\Kernel;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\KernelTests\KernelTestBase;
@@ -15,6 +18,8 @@ use Drupal\pluginreference_test\Plugin\PluginReferenceSelection\FieldWidgetTestS
  *
  * @coversDefaultClass \Drupal\pluginreference\PluginReferenceSelectionManager
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceSelectionManagerTest extends KernelTestBase {
 
   /**
@@ -54,6 +59,7 @@ class PluginReferenceSelectionManagerTest extends KernelTestBase {
    *
    * @covers ::getInstance
    */
+  #[DataProvider('getInstanceDataProvider')]
   public function testGetInstance(string $expected, array $options): void {
     if (!isset($options['target_type'])) {
       $this->expectException(\InvalidArgumentException::class);
@@ -117,6 +123,7 @@ class PluginReferenceSelectionManagerTest extends KernelTestBase {
    *
    * @covers ::getPluginId
    */
+  #[DataProvider('getPluginIdDataProvider')]
   public function testGetPluginId(string $expected, string $target_type, string $base_plugin_id): void {
     $this->assertEquals($expected, $this->pluginReferenceSelectionManager->getPluginId($target_type, $base_plugin_id));
   }
@@ -153,6 +160,7 @@ class PluginReferenceSelectionManagerTest extends KernelTestBase {
    *
    * @covers ::getSelectionGroups
    */
+  #[DataProvider('getSelectionGroupsDataProvider')]
   public function testGetSelectionGroups(array $expected, string $target_type): void {
     $selection_groups = $this->pluginReferenceSelectionManager->getSelectionGroups($target_type);
 
@@ -206,6 +214,7 @@ class PluginReferenceSelectionManagerTest extends KernelTestBase {
    *
    * @covers ::getSelectionHandler
    */
+  #[DataProvider('getSelectionHandlerDataProvider')]
   public function testGetSelectionHandler(string $expected, string $target_type, string $handler, array $handler_settings): void {
     $field_name = mb_strtolower($this->randomMachineName());
     $field_storage = FieldStorageConfig::create([
diff --git a/tests/src/Kernel/PluginReferenceValidPluginReferenceConstraintValidatorTest.php b/tests/src/Kernel/PluginReferenceValidPluginReferenceConstraintValidatorTest.php
index 6c3d4f9..46762e7 100644
--- a/tests/src/Kernel/PluginReferenceValidPluginReferenceConstraintValidatorTest.php
+++ b/tests/src/Kernel/PluginReferenceValidPluginReferenceConstraintValidatorTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\KernelTests\Core\Entity;
 
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\entity_test\Entity\EntityTest;
@@ -14,6 +16,8 @@ use Drupal\user\Entity\User;
  *
  * @group pluginreference
  */
+#[Group('pluginreference')]
+#[RunTestsInSeparateProcesses]
 class PluginReferenceValidPluginReferenceConstraintValidatorTest extends EntityKernelTestBase {
 
   use PluginReferenceTrait;
diff --git a/tests/src/Unit/PluginTypeHelperTest.php b/tests/src/Unit/PluginTypeHelperTest.php
index 4c091ea..b8ebae3 100644
--- a/tests/src/Unit/PluginTypeHelperTest.php
+++ b/tests/src/Unit/PluginTypeHelperTest.php
@@ -19,6 +19,7 @@ use Drupal\text\Plugin\Field\FieldWidget\TextfieldWidget;
  * @coversDefaultClass \Drupal\pluginreference\PluginTypeHelper
  * @group pluginreference
  */
+#[\PHPUnit\Framework\Attributes\Group('pluginreference')]
 class PluginTypeHelperTest extends UnitTestCase {
 
   /**
@@ -135,6 +136,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::pluginTypeExists
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('pluginTypeExistsDataProvider')]
   public function testPluginTypeExists(bool $expected, string $plugin_type_id): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->pluginTypeExists($plugin_type_id));
   }
@@ -172,6 +174,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginTypeName
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginTypeNameDataProvider')]
   public function testGetPluginTypeName(string $expected, string $plugin_type_id): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getPluginTypeName($plugin_type_id));
   }
@@ -205,6 +208,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginTypeProvider
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginTypeProviderDataProvider')]
   public function testGetPluginTypeProvider(?string $expected, string $plugin_type_id): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getPluginTypeProvider($plugin_type_id));
   }
@@ -242,6 +246,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginTypeProviderName
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginTypeProviderNameDataProvider')]
   public function testGetPluginTypeProviderName(?string $expected, string $plugin_type_id): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getPluginTypeProviderName($plugin_type_id));
   }
@@ -279,6 +284,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getProviderName
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getProviderNameDataProvider')]
   public function testGetProviderName(string $expected, string $provider): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getProviderName($provider));
   }
@@ -330,6 +336,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginDefinitions
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginDefinitionsDataProvider')]
   public function testGetPluginDefinitions(array $expected, string $plugin_type_id): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getPluginDefinitions($plugin_type_id));
   }
@@ -394,6 +401,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginLabel
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginLabelDataProvider')]
   public function testGetPluginLabel(string $expected, array $plugin_definition): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->getPluginLabel($plugin_definition));
   }
@@ -448,6 +456,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::hasPluginAccessControl
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('hasPluginAccessControlDataProvider')]
   public function testHasPluginAccessControl(bool $expected, array $plugin_definition): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->hasPluginAccessControl($plugin_definition));
   }
@@ -485,6 +494,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::isPluginCacheable
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('isPluginCacheableDataProvider')]
   public function testIsPluginCacheable(bool $expected, array $plugin_definition): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->isPluginCacheable($plugin_definition));
   }
@@ -522,6 +532,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::isPluginConfigurable
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('isPluginConfigurableDataProvider')]
   public function testIsPluginConfigurable(bool $expected, array $plugin_definition): void {
     $this->assertEquals($expected, $this->pluginTypeHelper->isPluginConfigurable($plugin_definition));
   }
@@ -559,6 +570,7 @@ class PluginTypeHelperTest extends UnitTestCase {
    *
    * @covers ::getPluginManager
    */
+  #[\PHPUnit\Framework\Attributes\DataProvider('getPluginManagerDataProvider')]
   public function testGetPluginManager(?string $expected, string $plugin_type_id): void {
     if ($expected === NULL) {
       $this->assertEmpty($this->pluginTypeHelper->getPluginManager($plugin_type_id));
