diff --git a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php
index 9b8742b57cf87facd4217727f2eb82580f58c40d..47aa70dcd9e1db5340e59f0f2b933b4762345351 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php
@@ -1256,6 +1256,11 @@ public function testProvidedElements(array $plugins, array $text_editor_settings
       $text_editor->getConfigDependencyName(),
       $text_editor->toArray()
     );
+    // @todo Remove in https://www.drupal.org/project/drupal/issues/3361534, which moves this into ::assertConfigSchema()
+    $this->assertSame([], array_map(
+      fn ($v) => sprintf("[%s] %s", $v->getPropertyPath(), (string) $v->getMessage()),
+      iterator_to_array($this->typedConfig->createFromNameAndData($text_editor->getConfigDependencyName(), $text_editor->toArray())->validate())
+    ));
 
     $provided_elements = $this->manager->getProvidedElements($plugins, $text_editor);
     $this->assertSame($expected_elements, $provided_elements);
@@ -1374,6 +1379,10 @@ public function providerTestProvidedElements(): array {
         ],
         'text_editor_settings' => [
           'plugins' => [],
+          // Deviate from the default toolbar items because that would cause
+          // the `ckeditor5_heading` plugin to be enabled.
+          // @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::getDefaultSettings()
+          'toolbar' => ['items' => ['bold', 'italic']],
         ],
         'expected_elements' => [
           'p' => [
diff --git a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
index 1f4c8a5327ed806caf1ecd2e76624d7b36403770..16004e8a2b0ff5a60e3f5510e0a30bded7ae164f 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
@@ -580,15 +580,36 @@ public function testPair(array $ckeditor5_settings, array $editor_image_upload_s
       'label' => 'View Mode 2',
     ])->save();
     assert($text_editor instanceof EditorInterface);
+    $text_format = FilterFormat::create([
+      'filters' => $filters,
+    ]);
+    assert($text_format instanceof FilterFormatInterface);
+    // TRICKY: because we're validating using `editor.editor.*` as the config
+    // name, TextEditorObjectDependentValidatorTrait will load the stored
+    // filter format. That has not yet been updated at this point, so in order
+    // for validation to pass, it must first be saved.
+    // @see \Drupal\ckeditor5\Plugin\Validation\Constraint\TextEditorObjectDependentValidatorTrait::createTextEditorObjectFromContext()
+    // @todo Remove this work-around in https://www.drupal.org/project/drupal/issues/3231354
+    $text_format
+      ->set('format', $text_editor->id())
+      ->set('name', $this->randomString())
+      ->save();
+
     $this->assertConfigSchema(
       $this->typedConfig,
       $text_editor->getConfigDependencyName(),
       $text_editor->toArray()
     );
-    $text_format = FilterFormat::create([
-      'filters' => $filters,
-    ]);
-    assert($text_format instanceof FilterFormatInterface);
+    // TRICKY: only validate the Editor entity in isolation if we expect NO
+    // violations: when violations are expected, this would just find the very
+    // violations that the next assertion is checking.
+    // @todo Remove in https://www.drupal.org/project/drupal/issues/3361534, which moves this into ::assertConfigSchema()
+    if (empty($expected_violations)) {
+      $this->assertSame([], array_map(
+        fn ($v) => sprintf("[%s] %s", $v->getPropertyPath(), (string) $v->getMessage()),
+        iterator_to_array($this->typedConfig->createFromNameAndData($text_editor->getConfigDependencyName(), $text_editor->toArray())->validate())
+      ));
+    }
 
     $this->assertSame($expected_violations, $this->validatePairToViolationsArray($text_editor, $text_format, TRUE));
   }
@@ -1062,7 +1083,7 @@ public function providerPair(): array {
       'filters' => [],
       'violations' => [],
     ];
-    $data['INVALID: drupalMedia toolbar item condition NOT met: media filter enabled'] = [
+    $data['INVALID: drupalMedia toolbar item condition NOT met: media filter disabled'] = [
       'settings' => [
         'toolbar' => [
           'items' => [
@@ -1086,13 +1107,17 @@ public function providerPair(): array {
             'drupalMedia',
           ],
         ],
-        'plugins' => [],
+        'plugins' => [
+          'media_media' => [
+            'allow_view_mode_override' => FALSE,
+          ],
+        ],
       ],
       'image_upload' => [
         'status' => FALSE,
       ],
       'filters' => [
-        'filter_html' => [
+        'media_embed' => [
           'id' => 'media_embed',
           'provider' => 'media',
           'status' => TRUE,
@@ -1104,9 +1129,7 @@ public function providerPair(): array {
           ],
         ],
       ],
-      'violations' => [
-        'settings.toolbar.items.0' => 'The <em class="placeholder">Drupal media</em> toolbar item requires the <em class="placeholder">Embed media</em> filter to be enabled.',
-      ],
+      'violations' => [],
     ];
     $data['VALID: HTML format: very minimal toolbar + wildcard in source editing HTML'] = [
       'settings' => [