diff --git a/core/modules/system/tests/src/Functional/Update/UpdateEntityDisplayBaseFieldDependenciesTest.php b/core/modules/system/tests/src/Functional/Update/UpdateEntityDisplayBaseFieldDependenciesTest.php
new file mode 100644
index 0000000000..c2ee6b511c
--- /dev/null
+++ b/core/modules/system/tests/src/Functional/Update/UpdateEntityDisplayBaseFieldDependenciesTest.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\Tests\system\Functional\Update;
+
+use Drupal\Core\Entity\Entity\EntityFormDisplay;
+use Drupal\Core\Entity\Entity\EntityViewDisplay;
+use Drupal\FunctionalTests\Update\UpdatePathTestBase;
+
+/**
+ * Tests system_post_update_add_base_field_dependency_entity_displays().
+ *
+ * @group Update
+ */
+class UpdateEntityDisplayBaseFieldDependenciesTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
+    ];
+  }
+
+  /**
+   * Tests that entity displays are updated with base field dependencies.
+   */
+  public function testUpdate() {
+    $this->runUpdates();
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityDisplayBaseTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityDisplayBaseTest.php
index ec1a55cbbe..d1ebb029cc 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityDisplayBaseTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityDisplayBaseTest.php
@@ -4,6 +4,7 @@
 
 use Drupal\comment\Entity\CommentType;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
+use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\KernelTests\KernelTestBase;
@@ -18,7 +19,16 @@ class EntityDisplayBaseTest extends KernelTestBase {
   /**
    * {@inheritdoc}
    */
-  public static $modules = ['entity_test', 'entity_test_third_party', 'field', 'system', 'comment'];
+  public static $modules = ['entity_test', 'entity_test_third_party', 'field', 'system', 'comment', 'entity_test_extra', 'user'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+    // We need the users_data schema to exist to uninstall a module.
+    $this->installSchema('user', ['users_data']);
+  }
 
   /**
    * @covers ::preSave
@@ -150,4 +160,35 @@ public function testOnDependencyRemoval() {
     $this->assertSame($expected_dependencies, $entity_display->getDependencies());
   }
 
+  /**
+   * Tests base fields dependency management.
+   *
+   * Base fields should have their provider added to dependencies. They should
+   * be removed when the module providing them is uninstalled.
+   */
+  public function testBaseFields() {
+    $definitions['new_base_field'] = BaseFieldDefinition::create('string')
+      ->setName('new_base_field')
+      ->setLabel(t('A new revisionable base field'))
+      ->setRevisionable(TRUE);
+    $this->container->get('state')->set('entity_test.additional_base_field_definitions', $definitions);
+    $entity_display = EntityViewDisplay::create([
+      'targetEntityType' => 'entity_test',
+      'bundle' => 'entity_test',
+      'mode' => 'default',
+      'status' => TRUE,
+      'content' => [
+        'foo' => ['type' => 'visible'],
+        'new_base_field' => ['type' => 'visible'],
+        'name' => ['type' => 'hidden', 'region' => 'content'],
+      ],
+    ]);
+    $entity_display->save();
+    $this->assertEquals(['module' => ['entity_test', 'entity_test_extra']], $entity_display->getDependencies());
+    $this->container->get('module_installer')->uninstall(['entity_test_extra']);
+    $entity_display = $entity_display::load($entity_display->id());
+    $this->assertEquals(['module' => ['entity_test']], $entity_display->getDependencies());
+    $this->assertEquals(['foo', 'name'], array_keys($entity_display->getComponents()));
+  }
+
 }
