diff --git a/core/modules/book/tests/src/Functional/BookContentModerationTest.php b/core/modules/book/tests/src/Functional/BookContentModerationTest.php
index 5d6a34063c..9798bc2f01 100644
--- a/core/modules/book/tests/src/Functional/BookContentModerationTest.php
+++ b/core/modules/book/tests/src/Functional/BookContentModerationTest.php
@@ -3,7 +3,7 @@
 namespace Drupal\Tests\book\Functional;
 
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests Book and Content Moderation integration.
@@ -13,6 +13,7 @@
 class BookContentModerationTest extends BrowserTestBase {
 
   use BookTestTrait;
+  use ContentModerationTestTrait;
 
   /**
    * Modules to install.
@@ -30,7 +31,7 @@ protected function setUp() {
     $this->drupalPlaceBlock('system_breadcrumb_block');
     $this->drupalPlaceBlock('page_title_block');
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'book');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Functional/ContentModerationTestTrait.php b/core/modules/content_moderation/tests/src/Functional/ContentModerationTestTrait.php
new file mode 100644
index 0000000000..d703cb1874
--- /dev/null
+++ b/core/modules/content_moderation/tests/src/Functional/ContentModerationTestTrait.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace Drupal\Tests\content_moderation\Functional;
+
+use Drupal\workflows\Entity\Workflow;
+
+/**
+ * Trait ContentModerationTestTraint.
+ */
+trait ContentModerationTestTrait {
+
+  /**
+   * Creates the editorial workflow.
+   *
+   * @return \Drupal\workflows\Entity\Workflow
+   *   The editorial workflow entity.
+   */
+  protected function createEditorialWorkflow() {
+    $workflow = Workflow::create([
+      'type' => 'content_moderation',
+      'id' => 'editorial',
+      'label' => 'Editorial',
+      'type_settings' => [
+        'states' => [
+          'archived' => [
+            'label' => 'Archived',
+            'weight' => 5,
+            'published' => FALSE,
+            'default_revision' => TRUE,
+          ],
+          'draft' => [
+            'label' => 'Draft',
+            'published' => FALSE,
+            'default_revision' => FALSE,
+            'weight' => -5,
+          ],
+          'published' => [
+            'label' => 'Published',
+            'published' => TRUE,
+            'default_revision' => TRUE,
+            'weight' => 0,
+          ],
+        ],
+        'transitions' => [
+          'archive' => [
+            'label' => 'Archive',
+            'from' => ['published'],
+            'to' => 'archived',
+            'weight' => 2,
+          ],
+          'archived_draft' => [
+            'label' => 'Restore to Draft',
+            'from' => ['archived'],
+            'to' => 'draft',
+            'weight' => 3,
+          ],
+          'archived_published' => [
+            'label' => 'Restore',
+            'from' => ['archived'],
+            'to' => 'published',
+            'weight' => 4,
+          ],
+          'create_new_draft' => [
+            'label' => 'Create New Draft',
+            'to' => 'draft',
+            'weight' => 0,
+            'from' => [
+              'draft',
+              'published',
+            ],
+          ],
+          'publish' => [
+            'label' => 'Publish',
+            'to' => 'published',
+            'weight' => 1,
+            'from' => [
+              'draft',
+              'published',
+            ],
+          ],
+        ],
+      ],
+    ]);
+    $workflow->save();
+    return $workflow;
+  }
+
+}
diff --git a/core/modules/content_moderation/tests/src/Functional/ModeratedContentViewTest.php b/core/modules/content_moderation/tests/src/Functional/ModeratedContentViewTest.php
index 7891b60f58..953c6385a5 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModeratedContentViewTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModeratedContentViewTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\content_moderation\Functional;
 
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests moderated content administration page functionality.
@@ -12,6 +11,8 @@
  */
 class ModeratedContentViewTest extends BrowserTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * A user with permission to bypass access content.
    *
@@ -34,7 +35,7 @@ public function setUp() {
     $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article'])->save();
     $this->drupalCreateContentType(['type' => 'unmoderated_type', 'name' => 'Unmoderated type'])->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'article');
     $workflow->save();
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationActionsTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationActionsTest.php
index 32d10fa045..fddb4f5eb2 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationActionsTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationActionsTest.php
@@ -5,7 +5,6 @@
 use Drupal\node\Entity\Node;
 use Drupal\simpletest\ContentTypeCreationTrait;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Test the content moderation actions.
@@ -15,6 +14,7 @@
 class ModerationActionsTest extends BrowserTestBase {
 
   use ContentTypeCreationTrait;
+  use ContentModerationTestTrait;
 
   /**
    * Modules to enable.
@@ -38,7 +38,7 @@ public function setUp() {
     $standard_bundle = $this->createContentType(['type' => 'standard_bundle']);
     $standard_bundle->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated_bundle');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
index bb9e92d6ea..0f65a11137 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\content_moderation\Functional;
 
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
-use Drupal\workflows\Entity\Workflow;
 use Drupal\Core\Url;
 
 /**
@@ -153,9 +152,8 @@ public function testModerationForm() {
    */
   public function testNonBundleModerationForm() {
     $this->drupalLogin($this->rootUser);
-    $workflow = Workflow::load('editorial');
-    $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_mulrevpub', 'entity_test_mulrevpub');
-    $workflow->save();
+    $this->workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_mulrevpub', 'entity_test_mulrevpub');
+    $this->workflow->save();
 
     // Create new moderated content in draft.
     $this->drupalPostForm('entity_test_mulrevpub/add', ['moderation_state[0][state]' => 'draft'], t('Save'));
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationRevisionRevertTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationRevisionRevertTest.php
index 479e9dff6b..685ddd80af 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationRevisionRevertTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationRevisionRevertTest.php
@@ -4,7 +4,6 @@
 
 use Drupal\simpletest\ContentTypeCreationTrait;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Test revision revert.
@@ -14,6 +13,7 @@
 class ModerationRevisionRevertTest extends BrowserTestBase {
 
   use ContentTypeCreationTrait;
+  use ContentModerationTestTrait;
 
   /**
    * Modules to enable.
@@ -34,7 +34,7 @@ public function setUp() {
     $moderated_bundle = $this->createContentType(['type' => 'moderated_bundle']);
     $moderated_bundle->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated_bundle');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationStateAccessTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateAccessTest.php
index 74c457b0bf..184be6e413 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationStateAccessTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateAccessTest.php
@@ -5,7 +5,6 @@
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests the view access control handler for moderation state entities.
@@ -14,6 +13,8 @@
  */
 class ModerationStateAccessTest extends BrowserTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -99,7 +100,7 @@ protected function createNodeType($label, $machine_name) {
     ]);
     $node_type->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', $machine_name);
     $workflow->save();
     return $node_type;
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
index ad77b43372..d103b83e2c 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
@@ -12,6 +12,8 @@
  */
 abstract class ModerationStateTestBase extends BrowserTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * Profile to use.
    *
@@ -46,6 +48,13 @@
     'use editorial transition archived_published',
   ];
 
+  /**
+   * The editorial workflow entity.
+   *
+   * @var \Drupal\workflows\Entity\Workflow
+   */
+  protected $workflow;
+
   /**
    * Modules to enable.
    *
@@ -64,6 +73,7 @@
    */
   protected function setUp() {
     parent::setUp();
+    $this->workflow = $this->createEditorialWorkflow();
     $this->adminUser = $this->drupalCreateUser($this->permissions);
     $this->drupalPlaceBlock('local_tasks_block', ['id' => 'tabs_block']);
     $this->drupalPlaceBlock('page_title_block');
diff --git a/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php b/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php
index e5b296d7f4..b92fd3a0d4 100644
--- a/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php
@@ -17,6 +17,8 @@
  */
 class ViewsModerationStateFilterTest extends ViewTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -45,6 +47,8 @@ protected function setUp($import_test_views = TRUE) {
       'type' => 'example_b',
     ])->save();
 
+    $this->createEditorialWorkflow();
+
     $new_workflow = Workflow::create([
       'type' => 'content_moderation',
       'id' => 'new_workflow',
diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php
index af59651410..460fe1116a 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php
@@ -6,7 +6,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Test the ContentModerationState storage schema.
@@ -16,6 +16,8 @@
  */
 class ContentModerationStateStorageSchemaTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -45,7 +47,7 @@ protected function setUp() {
     NodeType::create([
       'type' => 'example',
     ])->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
   }
diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php
index ef63472146..8c0172b2bc 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php
@@ -12,6 +12,7 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\workflows\Entity\Workflow;
 
 /**
@@ -21,6 +22,8 @@
  */
 class ContentModerationStateTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -275,7 +278,7 @@ public function testMultilingualModeration() {
     ]);
     $node_type->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -388,7 +391,7 @@ public function testModerationWithFieldConfigOverride() {
       'type' => 'test_type',
     ])->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'test_type');
     $workflow->save();
 
@@ -415,7 +418,7 @@ public function testModerationWithFieldConfigOverride() {
    * Tests that entities with special languages can be moderated.
    */
   public function testModerationWithSpecialLanguages() {
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
 
@@ -436,7 +439,7 @@ public function testModerationWithSpecialLanguages() {
    * Tests that a non-translatable entity type with a langcode can be moderated.
    */
   public function testNonTranslatableEntityTypeModeration() {
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
 
@@ -470,7 +473,7 @@ public function testNonLangcodeEntityTypeModeration() {
     // Update the entity type in order to remove the 'langcode' field.
     \Drupal::entityDefinitionUpdateManager()->applyUpdates();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
 
@@ -500,7 +503,7 @@ public function testWorkflowDependencies() {
     ]);
     $node_type->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     // Test both a config and non-config based bundle and entity type.
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
@@ -543,7 +546,7 @@ public function testWorkflowNonConfigBundleDependencies() {
     // Create a bundle not based on any particular configuration.
     entity_test_create_bundle('test_bundle');
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test', 'test_bundle');
     $workflow->save();
 
@@ -653,7 +656,7 @@ protected function createEntity($entity_type_id) {
       }
     }
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle($entity_type_id, $bundle_id);
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowConfigTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowConfigTest.php
index 931056e3d6..2c70d5a4af 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowConfigTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowConfigTest.php
@@ -6,7 +6,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests how Content Moderation handles workflow config changes.
@@ -15,6 +15,8 @@
  */
 class ContentModerationWorkflowConfigTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -63,7 +65,7 @@ protected function setUp() {
       'type' => 'example',
     ])->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()
       ->addState('test1', 'Test one')
       ->addState('test2', 'Test two')
diff --git a/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php b/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php
index 84bade4578..d045d7cb3e 100644
--- a/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php
@@ -6,7 +6,7 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests the correct default revision is set.
@@ -15,6 +15,8 @@
  */
 class DefaultRevisionStateTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -68,7 +70,7 @@ public function testMultilingual() {
 
     $this->container->get('content_translation.manager')->setEnabled('node', 'example', TRUE);
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/EntityOperationsTest.php b/core/modules/content_moderation/tests/src/Kernel/EntityOperationsTest.php
index 63f2c9a732..e7e0e32a68 100644
--- a/core/modules/content_moderation/tests/src/Kernel/EntityOperationsTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/EntityOperationsTest.php
@@ -5,7 +5,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * @coversDefaultClass \Drupal\content_moderation\EntityOperations
@@ -14,6 +14,8 @@
  */
 class EntityOperationsTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -48,7 +50,7 @@ protected function createNodeType() {
       'label' => 'Page',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->save();
   }
diff --git a/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php b/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php
index aeed8486f5..001e7583da 100644
--- a/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php
@@ -6,7 +6,7 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * @coversDefaultClass \Drupal\content_moderation\Plugin\Validation\Constraint\ModerationStateConstraintValidator
@@ -14,6 +14,8 @@
  */
 class EntityStateChangeValidationTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -50,7 +52,7 @@ public function testValidTransition() {
       'type' => 'example',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -78,7 +80,7 @@ public function testInvalidTransition() {
       'type' => 'example',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -104,7 +106,7 @@ public function testInvalidState() {
       'type' => 'example',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -136,7 +138,7 @@ public function testInvalidStateWithoutExisting() {
 
     // Enable moderation to test validation on existing content, with no
     // explicit state.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addState('deleted_state', 'Deleted state');
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
@@ -169,7 +171,7 @@ public function testInvalidStateMultilingual() {
     ]);
     $node_type->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -232,7 +234,7 @@ public function testExistingContentWithNoModeration() {
     $nid = $node->id();
 
     // Enable moderation for our node type.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
@@ -278,7 +280,7 @@ public function testExistingMultilingualContentWithNoModeration() {
     $node_fr->save();
 
     // Enable moderation for our node type.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/InitialStateTest.php b/core/modules/content_moderation/tests/src/Kernel/InitialStateTest.php
index 3db6a662ce..7954d2320b 100644
--- a/core/modules/content_moderation/tests/src/Kernel/InitialStateTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/InitialStateTest.php
@@ -6,7 +6,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests the correct initial states are set on install.
@@ -15,6 +15,8 @@
  */
 class InitialStateTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -66,7 +68,7 @@ public function testInitialState() {
     $entity_test->save();
 
     \Drupal::service('module_installer')->install(['content_moderation'], TRUE);
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationInformationTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationInformationTest.php
index a313bc9c31..f94a690810 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ModerationInformationTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ModerationInformationTest.php
@@ -4,7 +4,7 @@
 
 use Drupal\entity_test\Entity\EntityTestRev;
 use Drupal\KernelTests\KernelTestBase;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * @coversDefaultClass \Drupal\content_moderation\ModerationInformation
@@ -12,6 +12,8 @@
  */
 class ModerationInformationTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -33,7 +35,7 @@ protected function setUp() {
    * @covers ::getLatestRevisionId
    */
   public function testDefaultAndLatestRevisionId() {
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
index c477016640..1224f98c2d 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
@@ -5,7 +5,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * @coversDefaultClass \Drupal\content_moderation\Plugin\Field\ModerationStateFieldItemList
@@ -14,6 +14,8 @@
  */
 class ModerationStateFieldItemListTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -51,7 +53,7 @@ protected function setUp() {
       'type' => 'example',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationStateWidgetTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationStateWidgetTest.php
index c40e753953..796198e34c 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ModerationStateWidgetTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ModerationStateWidgetTest.php
@@ -8,7 +8,7 @@
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * @coversDefaultClass \Drupal\content_moderation\Plugin\Field\FieldWidget\ModerationStateWidget
@@ -16,6 +16,8 @@
  */
 class ModerationStateWidgetTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * Modules to install.
    *
@@ -46,7 +48,7 @@ protected function setUp() {
       'type' => 'unmoderated',
     ])->save();
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated');
     $workflow->save();
   }
diff --git a/core/modules/content_moderation/tests/src/Kernel/NodeAccessTest.php b/core/modules/content_moderation/tests/src/Kernel/NodeAccessTest.php
index 6716ca3610..fcf700e4ee 100644
--- a/core/modules/content_moderation/tests/src/Kernel/NodeAccessTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/NodeAccessTest.php
@@ -4,9 +4,9 @@
 
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\node\Traits\NodeCreationTrait;
 use Drupal\Tests\user\Traits\UserCreationTrait;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests with node access enabled.
@@ -17,6 +17,7 @@ class NodeAccessTest extends KernelTestBase {
 
   use NodeCreationTrait;
   use UserCreationTrait;
+  use ContentModerationTestTrait;
 
   /**
    * The moderation information service.
@@ -58,7 +59,7 @@ protected function setUp() {
       'label' => 'Page',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php b/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php
index c32123df92..62eb56423f 100644
--- a/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php
@@ -5,7 +5,7 @@
 use Drupal\Core\Render\RenderContext;
 use Drupal\entity_test\Entity\EntityTestRev;
 use Drupal\KernelTests\KernelTestBase;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Test the state field formatter.
@@ -14,6 +14,8 @@
  */
 class StateFormatterTest extends KernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -36,7 +38,7 @@ protected function setUp() {
     $this->installEntitySchema('content_moderation_state');
     $this->installConfig('content_moderation');
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
     $workflow->save();
   }
diff --git a/core/modules/content_moderation/tests/src/Kernel/ViewsDataIntegrationTest.php b/core/modules/content_moderation/tests/src/Kernel/ViewsDataIntegrationTest.php
index 00e107295a..21292f31fb 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ViewsDataIntegrationTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ViewsDataIntegrationTest.php
@@ -4,9 +4,9 @@
 
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
 use Drupal\views\Views;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests the views integration of content_moderation.
@@ -15,6 +15,8 @@
  */
 class ViewsDataIntegrationTest extends ViewsKernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -44,7 +46,7 @@ protected function setUp($import_test_views = TRUE) {
       'type' => 'page',
     ]);
     $node_type->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_mulrevpub', 'entity_test_mulrevpub');
     $workflow->save();
diff --git a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php
index da7ac9299d..33c3c5a278 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php
@@ -6,6 +6,7 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
 use Drupal\views\Views;
 use Drupal\workflows\Entity\Workflow;
@@ -19,6 +20,8 @@
  */
 class ViewsModerationStateFilterTest extends ViewsKernelTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -69,7 +72,7 @@ protected function setUp($import_test_views = TRUE) {
    * Tests the content moderation state filter.
    */
   public function testStateFilterViewsRelationship() {
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->getTypePlugin()->addState('translated_draft', 'Bar');
     $configuration = $workflow->getTypePlugin()->getConfiguration();
@@ -156,7 +159,7 @@ public function testStateFilterViewsRelationship() {
    * Test the moderation filter with a non-translatable entity type.
    */
   public function testNonTranslatableEntityType() {
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_no_bundle', 'entity_test_no_bundle');
     $workflow->save();
 
@@ -182,7 +185,7 @@ public function testStateFilterStatesList() {
 
     // Adding a content type to the editorial workflow will enable all of the
     // editorial states.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example');
     $workflow->save();
     $this->assertPluginStates([
@@ -237,7 +240,7 @@ public function testStateFilterStatesList() {
     ]);
 
     // Deleting a state from a workflow will remove the state from the filter.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->deleteState('archived');
     $workflow->save();
     $this->assertPluginStates([
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationPendingRevisionTestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationPendingRevisionTestBase.php
index 3a3a058962..9972f805b3 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationPendingRevisionTestBase.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationPendingRevisionTestBase.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\content_translation\Functional;
 
 use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
 
 /**
@@ -11,6 +12,7 @@
 abstract class ContentTranslationPendingRevisionTestBase extends ContentTranslationTestBase {
 
   use ContentTypeCreationTrait;
+  use ContentModerationTestTrait;
 
   /**
    * {@inheritdoc}
@@ -64,6 +66,8 @@ protected function setUp() {
 
     // @todo Remove this line once https://www.drupal.org/node/2945928 is fixed.
     $this->config('node.settings')->set('use_admin_theme', '1')->save();
+
+    $this->createEditorialWorkflow();
   }
 
   /**
diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php
index be018f4ce1..16fa88aa46 100644
--- a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php
@@ -3,7 +3,7 @@
 namespace Drupal\Tests\menu_ui\Functional;
 
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests Menu UI and Content Moderation integration.
@@ -12,6 +12,8 @@
  */
 class MenuUiContentModerationTest extends BrowserTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * Modules to install.
    *
@@ -34,7 +36,7 @@ protected function setUp() {
       'display_submitted' => FALSE,
     ]);
 
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->save();
   }
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6AuditIdsTest.php b/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6AuditIdsTest.php
index bee030eeec..33eac1dc81 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6AuditIdsTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6AuditIdsTest.php
@@ -7,8 +7,8 @@
 use Drupal\migrate\Audit\IdAuditor;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\migrate_drupal\Traits\CreateTestContentEntitiesTrait;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests the migration auditor for ID conflicts.
@@ -19,6 +19,7 @@ class MigrateDrupal6AuditIdsTest extends MigrateDrupal6TestBase {
 
   use FileSystemModuleDiscoveryDataProviderTrait;
   use CreateTestContentEntitiesTrait;
+  use ContentModerationTestTrait;
 
   /**
    * {@inheritdoc}
@@ -44,7 +45,7 @@ protected function setUp() {
     $this->installEntitySchema('content_moderation_state');
     $this->installConfig('content_moderation');
     NodeType::create(['type' => 'page'])->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->save();
   }
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrateDrupal7AuditIdsTest.php b/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrateDrupal7AuditIdsTest.php
index d12445bd64..c13e403495 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrateDrupal7AuditIdsTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrateDrupal7AuditIdsTest.php
@@ -7,8 +7,8 @@
 use Drupal\migrate\Audit\IdAuditor;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 use Drupal\Tests\migrate_drupal\Traits\CreateTestContentEntitiesTrait;
-use Drupal\workflows\Entity\Workflow;
 
 /**
  * Tests the migration auditor for ID conflicts.
@@ -19,6 +19,7 @@ class MigrateDrupal7AuditIdsTest extends MigrateDrupal7TestBase {
 
   use FileSystemModuleDiscoveryDataProviderTrait;
   use CreateTestContentEntitiesTrait;
+  use ContentModerationTestTrait;
 
   /**
    * {@inheritdoc}
@@ -44,7 +45,7 @@ protected function setUp() {
     $this->installEntitySchema('content_moderation_state');
     $this->installConfig('content_moderation');
     NodeType::create(['type' => 'page'])->save();
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'page');
     $workflow->save();
   }
diff --git a/core/modules/path/tests/src/Functional/PathContentModerationTest.php b/core/modules/path/tests/src/Functional/PathContentModerationTest.php
index 87f117b9aa..b1c705e9b4 100644
--- a/core/modules/path/tests/src/Functional/PathContentModerationTest.php
+++ b/core/modules/path/tests/src/Functional/PathContentModerationTest.php
@@ -4,7 +4,7 @@
 
 use Drupal\node\Entity\NodeType;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\workflows\Entity\Workflow;
+use Drupal\Tests\content_moderation\Functional\ContentModerationTestTrait;
 
 /**
  * Tests path aliases with Content Moderation.
@@ -14,6 +14,8 @@
  */
 class PathContentModerationTest extends BrowserTestBase {
 
+  use ContentModerationTestTrait;
+
   /**
    * Modules to install.
    *
@@ -32,7 +34,7 @@ protected function setUp() {
     $node_type->save();
 
     // Set the content type as moderated.
-    $workflow = Workflow::load('editorial');
+    $workflow = $this->createEditorialWorkflow();
     $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated');
     $workflow->save();
 
diff --git a/core/modules/content_moderation/config/install/workflows.workflow.editorial.yml b/core/profiles/standard/config/optional/workflows.workflow.editorial.yml
similarity index 100%
rename from core/modules/content_moderation/config/install/workflows.workflow.editorial.yml
rename to core/profiles/standard/config/optional/workflows.workflow.editorial.yml
