diff --git a/core/modules/editor/editor.libraries.yml b/core/modules/editor/editor.libraries.yml
index 2727f7da3d90d86cb7d00984f3c1fab5313abb73..085839505b7a74ff96404b4b475cea5bf2e9f27b 100644
--- a/core/modules/editor/editor.libraries.yml
+++ b/core/modules/editor/editor.libraries.yml
@@ -30,13 +30,3 @@ drupal.editor.dialog:
     - core/drupal.dialog
     - core/drupal.ajax
     - core/drupalSettings
-
-quickedit.inPlaceEditor.formattedText:
-  version: VERSION
-  js:
-    js/editor.formattedTextEditor.js: { attributes: { defer: true } }
-  dependencies:
-    - quickedit/quickedit
-    - editor/drupal.editor
-    - core/drupal.ajax
-    - core/drupalSettings
diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module
index f95dd8bfd022151a4935175b05894075b316e783..fcada7ffb8a4ad1fc498f6162614a120c66e7dd3 100644
--- a/core/modules/editor/editor.module
+++ b/core/modules/editor/editor.module
@@ -68,18 +68,6 @@ function editor_element_info_alter(&$types) {
   $types['text_format']['#pre_render'][] = 'element.editor:preRenderTextFormat';
 }
 
-/**
- * Implements hook_field_formatter_info_alter().
- *
- * @see quickedit_field_formatter_info_alter()
- */
-function editor_field_formatter_info_alter(&$info) {
-  // Update \Drupal\text\Plugin\Field\FieldFormatter\TextDefaultFormatter's
-  // annotation to indicate that it supports the 'editor' in-place editor
-  // provided by this module.
-  $info['text_default']['quickedit'] = ['editor' => 'editor'];
-}
-
 /**
  * Implements hook_form_FORM_ID_alter().
  */
diff --git a/core/modules/editor/editor.routing.yml b/core/modules/editor/editor.routing.yml
index 0c5b2249bba9809abd5cdad802eea5f9d981b2d3..5bc0ce5c885fa3f40df631ac8cf5ee3272ba5495 100644
--- a/core/modules/editor/editor.routing.yml
+++ b/core/modules/editor/editor.routing.yml
@@ -5,18 +5,6 @@ editor.filter_xss:
   requirements:
     _entity_access: 'filter_format.use'
 
-editor.field_untransformed_text:
-  path: '/editor/{entity_type}/{entity}/{field_name}/{langcode}/{view_mode_id}'
-  defaults:
-    _controller: '\Drupal\editor\EditorController::getUntransformedText'
-  options:
-    parameters:
-      entity:
-        type: entity:{entity_type}
-  requirements:
-    _permission: 'access in-place editing'
-    _access_quickedit_entity_field: 'TRUE'
-
 editor.image_dialog:
   path: '/editor/dialog/image/{editor}'
   defaults:
diff --git a/core/modules/editor/src/Ajax/GetUntransformedTextCommand.php b/core/modules/editor/src/Ajax/GetUntransformedTextCommand.php
index 5a3768667935df8b63d610f16aaec27a9d05f460..f6eae819e2a72d80510613bad8d707d4e9a4eaf0 100644
--- a/core/modules/editor/src/Ajax/GetUntransformedTextCommand.php
+++ b/core/modules/editor/src/Ajax/GetUntransformedTextCommand.php
@@ -4,9 +4,16 @@
 
 use Drupal\Core\Ajax\BaseCommand;
 
+@trigger_error('The ' . __NAMESPACE__ . '\GetUntransformedTextCommand is deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. There is no replacement. See https://www.drupal.org/node/3271653', E_USER_DEPRECATED);
+
 /**
  * AJAX command to rerender a formatted text field without any transformation
  * filters.
+ *
+ * @deprecated in drupal:9.5.0 and is removed from drupal:10.0.0.
+ * There is no replacement.
+ *
+ * @see http://www.drupal.org/node/3271653
  */
 class GetUntransformedTextCommand extends BaseCommand {
 
diff --git a/core/modules/editor/src/EditorController.php b/core/modules/editor/src/EditorController.php
index 81441772c09fb9abce2913baf595c366436fb0be..7c4500e55363a227b00599b9d0ad616ee842c0cd 100644
--- a/core/modules/editor/src/EditorController.php
+++ b/core/modules/editor/src/EditorController.php
@@ -2,11 +2,7 @@
 
 namespace Drupal\editor;
 
-use Drupal\Core\Ajax\AjaxResponse;
 use Drupal\Core\Controller\ControllerBase;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\editor\Ajax\GetUntransformedTextCommand;
-use Drupal\filter\Plugin\FilterInterface;
 use Drupal\filter\FilterFormatInterface;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
@@ -17,33 +13,6 @@
  */
 class EditorController extends ControllerBase {
 
-  /**
-   * Returns an Ajax response to render a text field without transformation filters.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The entity of which a formatted text field is being rerendered.
-   * @param string $field_name
-   *   The name of the (formatted text) field that is being rerendered
-   * @param string $langcode
-   *   The name of the language for which the formatted text field is being
-   *   rerendered.
-   * @param string $view_mode_id
-   *   The view mode the formatted text field should be rerendered in.
-   *
-   * @return \Drupal\Core\Ajax\AjaxResponse
-   *   The Ajax response.
-   */
-  public function getUntransformedText(EntityInterface $entity, $field_name, $langcode, $view_mode_id) {
-    $response = new AjaxResponse();
-
-    // Direct text editing is only supported for single-valued fields.
-    $field = $entity->getTranslation($langcode)->$field_name;
-    $editable_text = check_markup($field->value, $field->format, $langcode, [FilterInterface::TYPE_TRANSFORM_REVERSIBLE, FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE]);
-    $response->addCommand(new GetUntransformedTextCommand($editable_text));
-
-    return $response;
-  }
-
   /**
    * Apply the necessary XSS filtering for using a certain text format's editor.
    *
diff --git a/core/modules/editor/src/Plugin/InPlaceEditor/Editor.php b/core/modules/editor/src/Plugin/InPlaceEditor/Editor.php
index dab14ef01f5d3dbe9da42d343e2d481162c24c2f..84da9c469b6a224b78f759d4c39b60d23a69b851 100644
--- a/core/modules/editor/src/Plugin/InPlaceEditor/Editor.php
+++ b/core/modules/editor/src/Plugin/InPlaceEditor/Editor.php
@@ -14,9 +14,22 @@
  * @InPlaceEditor(
  *   id = "editor"
  * )
+ *
+ * @deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. There is no
+ * replacement.
+ *
+ * @see https://www.drupal.org/node/3271653
  */
 class Editor extends PluginBase implements InPlaceEditorInterface {
 
+  /**
+   * Constructs an Editor object.
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
+    @trigger_error('Drupal\editor\InPlaceEditor\Editor is deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. There is no replacement. See https://www.drupal.org/node/3271653', E_USER_DEPRECATED);
+    parent::__construct($configuration, $plugin_id, $plugin_definition);
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -88,7 +101,7 @@ public function getAttachments() {
     $attachments = $manager->getAttachments($formats);
 
     // Also include editor.module's formatted text editor.
-    $attachments['library'][] = 'editor/quickedit.inPlaceEditor.formattedText';
+    $attachments['library'][] = 'quickedit/quickedit.inPlaceEditor.formattedText';
 
     return $attachments;
   }
diff --git a/core/modules/editor/tests/src/Kernel/EditorGetUntransformedTextCommandTest.php b/core/modules/editor/tests/src/Kernel/EditorGetUntransformedTextCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..7c36bc36b2cecdb419ebd7918d1c8fc9cfb94f7f
--- /dev/null
+++ b/core/modules/editor/tests/src/Kernel/EditorGetUntransformedTextCommandTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\editor\Kernel;
+
+use Drupal\editor\Ajax\GetUntransformedTextCommand;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests the class \Drupal\editor\Ajax\GetUntransformedTextCommand deprecation.
+ *
+ * @group editor
+ * @group legacy
+ */
+class EditorGetUntransformedTextCommandTest extends KernelTestBase {
+
+  /**
+   * Tests class \Drupal\editor\Ajax\GetUntransformedTextCommand deprecation.
+   */
+  public function testGetUntransformedTextCommandDeprecation() {
+    $this->expectDeprecation('The Drupal\editor\Ajax\GetUntransformedTextCommand is deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. There is no replacement. See https://www.drupal.org/node/3271653');
+    new GetUntransformedTextCommand('');
+  }
+
+}
diff --git a/core/modules/editor/js/editor.formattedTextEditor.es6.js b/core/modules/quickedit/js/editors/formattedTextEditor.es6.js
similarity index 99%
rename from core/modules/editor/js/editor.formattedTextEditor.es6.js
rename to core/modules/quickedit/js/editors/formattedTextEditor.es6.js
index 6e69d785f7c0c4a752e1ec8ea059c62ed9b08b97..05bc4e7168ea4684e420e30e9afc1c5c84e0679b 100644
--- a/core/modules/editor/js/editor.formattedTextEditor.es6.js
+++ b/core/modules/quickedit/js/editors/formattedTextEditor.es6.js
@@ -219,7 +219,7 @@
           url: Drupal.quickedit.util.buildUrl(
             fieldID,
             Drupal.url(
-              'editor/!entity_type/!id/!field_name/!langcode/!view_mode',
+              'quickedit/!entity_type/!id/!field_name/!langcode/!view_mode',
             ),
           ),
           submit: { nocssjs: true },
diff --git a/core/modules/editor/js/editor.formattedTextEditor.js b/core/modules/quickedit/js/editors/formattedTextEditor.js
similarity index 97%
rename from core/modules/editor/js/editor.formattedTextEditor.js
rename to core/modules/quickedit/js/editors/formattedTextEditor.js
index 2519b90406d63db7af44374181389cbcd1f83a01..597a76d309ccbc6fc61e0a87ab047927b5f1e7dc 100644
--- a/core/modules/editor/js/editor.formattedTextEditor.js
+++ b/core/modules/quickedit/js/editors/formattedTextEditor.js
@@ -118,7 +118,7 @@
     _getUntransformedText: function _getUntransformedText(callback) {
       var fieldID = this.fieldModel.get('fieldID');
       var textLoaderAjax = Drupal.ajax({
-        url: Drupal.quickedit.util.buildUrl(fieldID, Drupal.url('editor/!entity_type/!id/!field_name/!langcode/!view_mode')),
+        url: Drupal.quickedit.util.buildUrl(fieldID, Drupal.url('quickedit/!entity_type/!id/!field_name/!langcode/!view_mode')),
         submit: {
           nocssjs: true
         }
diff --git a/core/modules/quickedit/quickedit.libraries.yml b/core/modules/quickedit/quickedit.libraries.yml
index 8e8d998bcae8b62a9c42aba70001f27ba1916e15..7678e94aa4e90634bd6361ed359a7acacade9820 100644
--- a/core/modules/quickedit/quickedit.libraries.yml
+++ b/core/modules/quickedit/quickedit.libraries.yml
@@ -49,6 +49,16 @@ quickedit.inPlaceEditor.form:
   dependencies:
     - quickedit/quickedit
 
+quickedit.inPlaceEditor.formattedText:
+  version: VERSION
+  js:
+    js/editors/formattedTextEditor.js: { attributes: { defer: true } }
+  dependencies:
+    - quickedit/quickedit
+    - editor/drupal.editor
+    - core/drupal.ajax
+    - core/drupalSettings
+
 quickedit.inPlaceEditor.plainText:
   version: VERSION
   js:
diff --git a/core/modules/quickedit/quickedit.module b/core/modules/quickedit/quickedit.module
index 219b975ebcbf2e8eaa96ed4526e78cfc8b58887c..e72b5578f5a563e776224d5c37af89bd05f204ff 100644
--- a/core/modules/quickedit/quickedit.module
+++ b/core/modules/quickedit/quickedit.module
@@ -118,6 +118,13 @@ function quickedit_field_formatter_info_alter(&$info) {
       $info[$key]['quickedit'] = ['editor' => 'form'];
     }
   }
+
+  // Update \Drupal\text\Plugin\Field\FieldFormatter\TextDefaultFormatter's
+  // annotation to indicate that it supports the 'editor' in-place editor
+  // provided by this module, if enabled.
+  if (\Drupal::moduleHandler()->moduleExists('editor')) {
+    $info['text_default']['quickedit'] = ['editor' => 'editor'];
+  }
 }
 
 /**
diff --git a/core/modules/quickedit/quickedit.routing.yml b/core/modules/quickedit/quickedit.routing.yml
index b63b8a2f13161adc207168bebea89f10c1867028..35723d5aebb05ee54009925dff9bc0800a7f2a1c 100644
--- a/core/modules/quickedit/quickedit.routing.yml
+++ b/core/modules/quickedit/quickedit.routing.yml
@@ -61,3 +61,15 @@ quickedit.image_info:
     _permission: 'access in-place editing'
     _access_quickedit_entity_field: 'TRUE'
     _method: 'GET'
+
+quickedit.field_untransformed_text:
+  path: '/quickedit/{entity_type}/{entity}/{field_name}/{langcode}/{view_mode_id}'
+  defaults:
+    _controller: '\Drupal\quickedit\QuickEditController::getUntransformedText'
+  options:
+    parameters:
+      entity:
+        type: entity:{entity_type}
+  requirements:
+    _permission: 'access in-place editing'
+    _access_quickedit_entity_field: 'TRUE'
diff --git a/core/modules/quickedit/src/Ajax/GetUntransformedTextCommand.php b/core/modules/quickedit/src/Ajax/GetUntransformedTextCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f934516155ba11dca17786048b2327d41cb60df
--- /dev/null
+++ b/core/modules/quickedit/src/Ajax/GetUntransformedTextCommand.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Drupal\quickedit\Ajax;
+
+use Drupal\Core\Ajax\BaseCommand;
+
+/**
+ * AJAX command to rerender formatted text field without transformation filters.
+ */
+class GetUntransformedTextCommand extends BaseCommand {
+
+  /**
+   * Constructs a GetUntransformedTextCommand object.
+   *
+   * @param string $data
+   *   The data to pass on to the client side.
+   */
+  public function __construct($data) {
+    parent::__construct('editorGetUntransformedText', $data);
+  }
+
+}
diff --git a/core/modules/quickedit/src/Plugin/InPlaceEditor/Editor.php b/core/modules/quickedit/src/Plugin/InPlaceEditor/Editor.php
new file mode 100644
index 0000000000000000000000000000000000000000..5eb6805cbd358b10c0313451b3824e931285bfd2
--- /dev/null
+++ b/core/modules/quickedit/src/Plugin/InPlaceEditor/Editor.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Drupal\quickedit\Plugin\InPlaceEditor;
+
+use Drupal\Component\Plugin\PluginBase;
+use Drupal\Core\Field\FieldItemListInterface;
+use Drupal\filter\Entity\FilterFormat;
+use Drupal\filter\Plugin\FilterInterface;
+use Drupal\quickedit\Plugin\InPlaceEditorInterface;
+
+/**
+ * Defines the formatted text in-place editor.
+ *
+ * @InPlaceEditor(
+ *   id = "editor",
+ *   provider = "editor",
+ * )
+ */
+class Editor extends PluginBase implements InPlaceEditorInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isCompatible(FieldItemListInterface $items) {
+    $field_definition = $items->getFieldDefinition();
+
+    // This editor is incompatible with multivalued fields.
+    if ($field_definition->getFieldStorageDefinition()->getCardinality() != 1) {
+      return FALSE;
+    }
+    // This editor is compatible with formatted ("rich") text fields; but only
+    // if there is a currently active text format, that text format has an
+    // associated editor and that editor supports inline editing.
+    elseif ($editor = editor_load($items[0]->format)) {
+      $definition = \Drupal::service('plugin.manager.editor')->getDefinition($editor->getEditor());
+      if ($definition['supports_inline_editing'] === TRUE) {
+        return TRUE;
+      }
+    }
+
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getMetadata(FieldItemListInterface $items) {
+    $format_id = $items[0]->format;
+    $metadata['format'] = $format_id;
+    $metadata['formatHasTransformations'] = $this->textFormatHasTransformationFilters($format_id);
+    return $metadata;
+  }
+
+  /**
+   * Returns whether the text format has transformation filters.
+   *
+   * @param int $format_id
+   *   A text format ID.
+   *
+   * @return bool
+   */
+  protected function textFormatHasTransformationFilters($format_id) {
+    $format = FilterFormat::load($format_id);
+    return (bool) count(array_intersect([FilterInterface::TYPE_TRANSFORM_REVERSIBLE, FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE], $format->getFiltertypes()));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getAttachments() {
+    $user = \Drupal::currentUser();
+
+    $user_format_ids = array_keys(filter_formats($user));
+    $manager = \Drupal::service('plugin.manager.editor');
+    $definitions = $manager->getDefinitions();
+
+    // Filter the current user's formats to those that support inline editing.
+    $formats = [];
+    foreach ($user_format_ids as $format_id) {
+      if ($editor = editor_load($format_id)) {
+        $editor_id = $editor->getEditor();
+        if (isset($definitions[$editor_id]['supports_inline_editing']) && $definitions[$editor_id]['supports_inline_editing'] === TRUE) {
+          $formats[] = $format_id;
+        }
+      }
+    }
+
+    // Get the attachments for all text editors that the user might use.
+    $attachments = $manager->getAttachments($formats);
+
+    // Also include quickedit.module's formatted text editor.
+    $attachments['library'][] = 'quickedit/quickedit.inPlaceEditor.formattedText';
+
+    return $attachments;
+  }
+
+}
diff --git a/core/modules/quickedit/src/QuickEditController.php b/core/modules/quickedit/src/QuickEditController.php
index 6a2a794ea2afb95ecb5376bc84074438e8c7bbc6..05c20474865654a8e1e841110853b4a67e7407ed 100644
--- a/core/modules/quickedit/src/QuickEditController.php
+++ b/core/modules/quickedit/src/QuickEditController.php
@@ -8,6 +8,7 @@
 use Drupal\Core\Render\RendererInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\TempStore\PrivateTempStoreFactory;
+use Drupal\filter\Plugin\FilterInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
@@ -20,6 +21,7 @@
 use Drupal\quickedit\Ajax\FieldFormSavedCommand;
 use Drupal\quickedit\Ajax\FieldFormValidationErrorsCommand;
 use Drupal\quickedit\Ajax\EntitySavedCommand;
+use Drupal\quickedit\Ajax\GetUntransformedTextCommand;
 
 /**
  * Returns responses for Quick Edit module routes.
@@ -356,4 +358,34 @@ public function entitySave(EntityInterface $entity) {
     return $response;
   }
 
+  /**
+   * Returns Ajax response to render text field without transformation filters.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The entity of which a formatted text field is being rerendered.
+   * @param string $field_name
+   *   The name of the (formatted text) field that is being rerendered.
+   * @param string $langcode
+   *   The name of the language for which the formatted text field is being
+   *   rerendered.
+   * @param string $view_mode_id
+   *   The view mode the formatted text field should be rerendered in.
+   *
+   * @return \Drupal\Core\Ajax\AjaxResponse
+   *   The Ajax response.
+   */
+  public function getUntransformedText(EntityInterface $entity, $field_name, $langcode, $view_mode_id) {
+    $response = new AjaxResponse();
+
+    // Direct text editing is only supported for single-valued fields.
+    $field = $entity->getTranslation($langcode)->$field_name;
+    $editable_text = check_markup($field->value, $field->format, $langcode, [
+      FilterInterface::TYPE_TRANSFORM_REVERSIBLE,
+      FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
+    ]);
+    $response->addCommand(new GetUntransformedTextCommand($editable_text));
+
+    return $response;
+  }
+
 }
diff --git a/core/modules/quickedit/tests/src/Functional/EditorIntegrationLoadingTest.php b/core/modules/quickedit/tests/src/Functional/EditorIntegrationLoadingTest.php
index bce74ceec80d74c33ea62462565bb40dafcb794e..ac384563e6f403ebfa32094ea8769401e1ebc179 100644
--- a/core/modules/quickedit/tests/src/Functional/EditorIntegrationLoadingTest.php
+++ b/core/modules/quickedit/tests/src/Functional/EditorIntegrationLoadingTest.php
@@ -93,7 +93,7 @@ public function testUsersWithoutPermission() {
 
       // Retrieving the untransformed text should result in a 403 response and
       // return a different error message depending of the missing permission.
-      $response = $client->post($this->buildUrl('editor/node/1/body/en/full'), [
+      $response = $client->post($this->buildUrl('quickedit/node/1/body/en/full'), [
         'query' => http_build_query([MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']),
         'cookies' => $this->getSessionCookies(),
         'headers' => [
@@ -127,7 +127,7 @@ public function testUserWithPermission() {
     // Ensure the text is transformed.
     $this->assertSession()->responseContains('<p>Do you also love Drupal?</p><figure role="group" class="caption caption-img"><img src="druplicon.png" /><figcaption>Druplicon</figcaption></figure>');
     $client = $this->getHttpClient();
-    $response = $client->post($this->buildUrl('editor/node/1/body/en/full'), [
+    $response = $client->post($this->buildUrl('quickedit/node/1/body/en/full'), [
       'query' => http_build_query([MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']),
       'cookies' => $this->getSessionCookies(),
       'headers' => [
diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php
index ab8f1f0a1b20e8a4ba1c9b8e01ad7afb4f26b858..9064538b941b0b781c5ecfc27b408036e5030ae4 100644
--- a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php
+++ b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php
@@ -286,7 +286,6 @@ public function testArticleNode() {
    * Tests if a custom can be in-place edited with Quick Edit.
    */
   public function testCustomBlock() {
-    $this->markTestSkipped('This test fails pretty consistently on the latest Chromedriver');
     $block_content_type = BlockContentType::create([
       'id' => 'basic',
       'label' => 'basic',
@@ -321,6 +320,13 @@ public function testCustomBlock() {
     $this->assertEntityInstanceStates([
       'block_content/1[0]' => 'opened',
     ]);
+
+    // The label 'body' will only be shown when the pointer hovers over the
+    // body. This can't be guaranteed by "just" opening the block in QuickEdit.
+    // We explicitly move the pointer first over the page title and afterwards
+    // over the block body to be sure.
+    $this->movePointerTo('.page-title');
+    $this->movePointerTo('[data-quickedit-field-id="block_content/1/body/en/full"]');
     $this->assertQuickEditEntityToolbar((string) $block_content->label(), 'Body');
     $this->assertEntityInstanceFieldStates('block_content', 1, 0, [
       'block_content/1/body/en/full' => 'highlighted',
@@ -340,4 +346,16 @@ public function testCustomBlock() {
     $this->assertSession()->elementExists('css', '#quickedit-entity-toolbar .quickedit-toolgroup.wysiwyg-main > .cke_chrome .cke_top[role="presentation"] .cke_toolbar[role="toolbar"] .cke_toolgroup[role="presentation"] > .cke_button[title~="Bold"][role="button"]');
   }
 
+  /**
+   * Moves mouse pointer to location of $selector.
+   *
+   * @param string $selector
+   *   CSS selector.
+   */
+  protected function movePointerTo($selector) {
+    $driver_session = $this->getSession()->getDriver()->getWebDriverSession();
+    $element = $driver_session->element('css selector', $selector);
+    $driver_session->moveto(['element' => $element->getID()]);
+  }
+
 }
diff --git a/core/modules/quickedit/tests/src/Kernel/EditorIntegrationTest.php b/core/modules/quickedit/tests/src/Kernel/EditorIntegrationTest.php
index 6852bafdb5ea0a3948bb1e6ff755b8bc8fdc5ee5..3fa3278ded00246a0d6810d7a9ea5f0d390144c7 100644
--- a/core/modules/quickedit/tests/src/Kernel/EditorIntegrationTest.php
+++ b/core/modules/quickedit/tests/src/Kernel/EditorIntegrationTest.php
@@ -8,8 +8,8 @@
 use Drupal\editor\Entity\Editor;
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\quickedit\MetadataGenerator;
+use Drupal\quickedit\QuickEditController;
 use Drupal\quickedit_test\MockQuickEditEntityFieldAccessCheck;
-use Drupal\editor\EditorController;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Event\ResponseEvent;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -19,6 +19,7 @@
  * Tests Edit module integration (Editor module's inline editing support).
  *
  * @group quickedit
+ * @group legacy
  */
 class EditorIntegrationTest extends QuickEditTestBase {
 
@@ -56,7 +57,7 @@ class EditorIntegrationTest extends QuickEditTestBase {
   protected $accessChecker;
 
   /**
-   * The name of the field ued for tests.
+   * The name of the field used for tests.
    *
    * @var string
    */
@@ -147,7 +148,8 @@ public function testEditorSelection() {
     $entity->{$this->fieldName}->format = 'filtered_html';
     $entity->save();
 
-    // Editor selection w/ cardinality 1, text format w/o associated text editor.
+    // Editor selection with cardinality 1, text format without associated text
+    // editor.
     $this->assertEquals('form', $this->getSelectedEditor($entity->id(), $this->fieldName), "With cardinality 1, and the filtered_html text format, the 'form' editor is selected.");
 
     // Editor selection w/ cardinality 1, text format w/ associated text editor.
@@ -155,7 +157,7 @@ public function testEditorSelection() {
     $entity->save();
     $this->assertEquals('editor', $this->getSelectedEditor($entity->id(), $this->fieldName), "With cardinality 1, and the full_html text format, the 'editor' editor is selected.");
 
-    // Editor selection with text processing, cardinality >1
+    // Editor selection with text processing, cardinality > 1.
     $this->fields->field_textarea_field_storage->setCardinality(2);
     $this->fields->field_textarea_field_storage->save();
     $this->assertEquals('form', $this->getSelectedEditor($entity->id(), $this->fieldName), "With cardinality >1, and both items using the full_html text format, the 'form' editor is selected.");
@@ -205,13 +207,18 @@ public function testAttachments() {
 
     $editors = ['editor'];
     $attachments = $this->editorSelector->getEditorAttachments($editors);
-    $this->assertSame(['library' => ['editor/quickedit.inPlaceEditor.formattedText']], $attachments, "Expected attachments for Editor module's in-place editor found.");
+    $this->assertSame(['library' => ['quickedit/quickedit.inPlaceEditor.formattedText']], $attachments, "Expected attachments for Editor module's in-place editor found.");
   }
 
   /**
    * Tests GetUntransformedTextCommand AJAX command.
    */
   public function testGetUntransformedTextCommand() {
+    $this->accessChecker = new MockQuickEditEntityFieldAccessCheck();
+    $this->editorSelector = $this->container->get('quickedit.editor.selector');
+    $this->editorManager = $this->container->get('plugin.manager.quickedit.editor');
+    $this->metadataGenerator = new MetadataGenerator($this->accessChecker, $this->editorSelector, $this->editorManager);
+
     // Create an entity with values for the field.
     $entity = EntityTest::create();
     $entity->{$this->fieldName}->value = 'Test';
@@ -220,7 +227,14 @@ public function testGetUntransformedTextCommand() {
     $entity = EntityTest::load($entity->id());
 
     // Verify AJAX response.
-    $controller = new EditorController();
+    $controller = new QuickEditController(
+      $this->container->get('tempstore.private'),
+      $this->metadataGenerator,
+      $this->editorSelector,
+      $this->container->get('renderer'),
+      $this->container->get('entity_display.repository'),
+      $this->container->get('entity.repository'),
+    );
     $request = new Request();
     $response = $controller->getUntransformedText($entity, $this->fieldName, LanguageInterface::LANGCODE_DEFAULT, 'default');
     $expected = [
