diff --git a/core/lib/Drupal/Core/Block/BlockManager.php b/core/lib/Drupal/Core/Block/BlockManager.php
index a837340..30b52b6 100644
--- a/core/lib/Drupal/Core/Block/BlockManager.php
+++ b/core/lib/Drupal/Core/Block/BlockManager.php
@@ -20,7 +20,6 @@ class BlockManager extends DefaultPluginManager implements BlockManagerInterface
 
   use CategorizingPluginManagerTrait {
     getSortedDefinitions as traitGetSortedDefinitions;
-    getGroupedDefinitions as traitGetGroupedDefinitions;
   }
   use ContextAwarePluginManagerTrait;
 
@@ -54,7 +53,7 @@ public function processDefinition(&$definition, $plugin_id) {
    * {@inheritdoc}
    */
   public function getSortedDefinitions(array $definitions = NULL) {
-    // Sort the plugins first by category, then by label.
+    // Sort the plugins first by category, then by admin label.
     $definitions = $this->traitGetSortedDefinitions($definitions, 'admin_label');
     // Do not display the 'broken' plugin in the UI.
     unset($definitions['broken']);
@@ -64,16 +63,6 @@ public function getSortedDefinitions(array $definitions = NULL) {
   /**
    * {@inheritdoc}
    */
-  public function getGroupedDefinitions(array $definitions = NULL) {
-    $definitions = $this->traitGetGroupedDefinitions($definitions, 'admin_label');
-    // Do not display the 'broken' plugin in the UI.
-    unset($definitions[$this->t('Block')]['broken']);
-    return $definitions;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getFallbackPluginId($plugin_id, array $configuration = []) {
     return 'broken';
   }
diff --git a/core/tests/Drupal/KernelTests/Core/Block/BlockManagerTest.php b/core/tests/Drupal/KernelTests/Core/Block/BlockManagerTest.php
new file mode 100644
index 0000000..ff8cfb1
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Block/BlockManagerTest.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Block;
+
+use Drupal\Core\Block\Plugin\Block\Broken;
+use Drupal\Core\Block\Plugin\Block\PageTitleBlock;
+use Drupal\Core\Menu\Plugin\Block\LocalActionsBlock;
+use Drupal\Core\Menu\Plugin\Block\LocalTasksBlock;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Block\BlockManager
+ *
+ * @group block
+ */
+class BlockManagerTest extends KernelTestBase {
+
+  /**
+   * The available block definitions.
+   *
+   * @var array
+   */
+  protected $blockDefinitions = [
+    'broken' => [
+      'admin_label' => 'Broken/Missing',
+      'category' => 'Block',
+      'id' => 'broken',
+      'class' => Broken::class,
+      'provider' => 'core',
+    ],
+    'page_title_block' => [
+      'admin_label' => 'Page title',
+      'category' => 'core',
+      'id' => 'page_title_block',
+      'class' => PageTitleBlock::class,
+      'provider' => 'core',
+    ],
+    'local_actions_block' => [
+      'admin_label' => 'Primary admin actions',
+      'category' => 'core',
+      'id' => 'local_actions_block',
+      'class' => LocalActionsBlock::class,
+      'provider' => 'core',
+    ],
+    'local_tasks_block' => [
+      'admin_label' => 'Tabs',
+      'category' => 'core',
+      'id' => 'local_tasks_block',
+      'class' => LocalTasksBlock::class,
+      'provider' => 'core',
+    ],
+  ];
+
+  /**
+   * @covers ::getDefinitions
+   */
+  public function testDefinitions() {
+    $expected = $this->blockDefinitions;
+    $definitions = \Drupal::service('plugin.manager.block')->getDefinitions();
+    $this->assertEquals($expected, $definitions);
+  }
+
+  /**
+   * @covers ::getSortedDefinitions
+   */
+  public function testSortedDefinitions() {
+    $expected = $this->blockDefinitions;
+    // Do not include the 'broken' plugin.
+    unset($expected['broken']);
+
+    $definitions = \Drupal::service('plugin.manager.block')->getSortedDefinitions();
+    $this->assertEquals($expected, $definitions);
+    // Ensure the order is as expected.
+    $this->assertSame(array_keys($expected), array_keys($definitions));
+  }
+
+  /**
+   * @covers ::getGroupedDefinitions
+   */
+  public function testGroupedDefinitions() {
+    $expected = $this->blockDefinitions;
+    // Do not include the 'broken' plugin.
+    unset($expected['broken']);
+    // Group the plugins by their category.
+    $expected = ['core' => $expected];
+
+    $definitions = \Drupal::service('plugin.manager.block')->getGroupedDefinitions();
+    $this->assertEquals($expected, $definitions);
+  }
+
+}
