diff --git a/core/lib/Drupal/Component/Plugin/ConfigurablePluginInterface.php b/core/lib/Drupal/Component/Plugin/ConfigurablePluginInterface.php
index b77d3a2..47679a7 100644
--- a/core/lib/Drupal/Component/Plugin/ConfigurablePluginInterface.php
+++ b/core/lib/Drupal/Component/Plugin/ConfigurablePluginInterface.php
@@ -12,7 +12,7 @@
  *
  * @ingroup plugin_api
  */
-interface ConfigurablePluginInterface {
+interface ConfigurablePluginInterface extends DependentPluginInterface {
 
   /**
    * Returns this plugin's configuration.
@@ -38,29 +38,4 @@ public function setConfiguration(array $configuration);
    */
   public function defaultConfiguration();
 
-  /**
-   * Calculates dependencies for the configured plugin.
-   *
-   * Dependencies are saved in the plugin's configuration entity and are used to
-   * determine configuration synchronization order. For example, if the plugin
-   * integrates with specific user roles, this method should return an array of
-   * dependencies listing the specified roles.
-   *
-   * @return array
-   *   An array of dependencies grouped by type (config, content, module,
-   *   theme). For example:
-   *   @code
-   *   array(
-   *     'config' => array('user.role.anonymous', 'user.role.authenticated'),
-   *     'content' => array('node:article:f0a189e6-55fb-47fb-8005-5bef81c44d6d'),
-   *     'module' => array('node', 'user'),
-   *     'theme' => array('seven'),
-   *   );
-   *   @endcode
-   *
-   * @see \Drupal\Core\Config\Entity\ConfigDependencyManager
-   * @see \Drupal\Core\Entity\EntityInterface::getConfigDependencyName()
-   */
-  public function calculateDependencies();
-
 }
diff --git a/core/lib/Drupal/Component/Plugin/DependentPluginInterface.php b/core/lib/Drupal/Component/Plugin/DependentPluginInterface.php
new file mode 100644
index 0000000..736596a
--- /dev/null
+++ b/core/lib/Drupal/Component/Plugin/DependentPluginInterface.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Component\Plugin\DependentPluginInterface.
+ */
+
+namespace Drupal\Component\Plugin;
+
+/**
+ * Provides an interface for a plugin that has dependencies.
+ *
+ * @ingroup plugin_api
+ */
+interface DependentPluginInterface {
+
+  /**
+   * Calculates dependencies for the configured plugin.
+   *
+   * Dependencies are saved in the plugin's configuration entity and are used to
+   * determine configuration synchronization order. For example, if the plugin
+   * integrates with specific user roles, this method should return an array of
+   * dependencies listing the specified roles.
+   *
+   * @return array
+   *   An array of dependencies grouped by type (module, theme, entity). For
+   *   example:
+   *   @code
+   *   array(
+   *     'entity' => array('user.role.anonymous', 'user.role.authenticated'),
+   *     'module' => array('node', 'user'),
+   *     'theme' => array('seven'),
+   *   );
+   *   @endcode
+   *
+   * @see \Drupal\Core\Config\Entity\ConfigDependencyManager
+   * @see \Drupal\Core\Config\Entity\ConfigEntityInterface::getConfigDependencyName()
+   */
+  public function calculateDependencies();
+
+}
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
index ef7f645..69555d0 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
@@ -172,8 +172,12 @@ public function getDependentEntities($type, $name) {
         $entities_to_check[] =  $entity->getConfigDependencyName();
       }
     }
-
-    return array_merge($dependent_entities, $this->createGraphConfigEntityDependencies($entities_to_check));
+    $dependencies = array_merge($this->createGraphConfigEntityDependencies($entities_to_check), $dependent_entities);
+    // Sort dependencies in the reverse order of the graph. So the least
+    // dependent is at the top. For example, this ensures that fields are
+    // always after field storages. This is because field storages need to be
+    // created before a field.
+    return array_reverse(array_intersect_key($this->graph, $dependencies));
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php
index f512022..12194a3 100644
--- a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php
+++ b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Entity\Entity;
 
+use Drupal\Core\Entity\EntityDisplayPluginCollection;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Entity\Display\EntityFormDisplayInterface;
 use Drupal\Core\Entity\EntityDisplayBase;
@@ -243,4 +244,23 @@ public function __wakeup() {
     $this->__construct($values, $this->entityTypeId);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getPluginCollections() {
+    $configurations = array();
+    foreach ($this->getComponents() as $field_name => $configuration) {
+      if (!empty($configuration['type']) && ($field_definition = $this->getFieldDefinition($field_name))) {
+        $configurations[$configuration['type']] = $configuration + array(
+          'field_definition' => $field_definition,
+          'form_mode' => $this->mode,
+        );
+      }
+    }
+
+    return array(
+      'widgets' => new EntityDisplayPluginCollection($this->pluginManager, $configurations)
+    );
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Entity/Entity/EntityViewDisplay.php b/core/lib/Drupal/Core/Entity/Entity/EntityViewDisplay.php
index 9a73268..17d6b44 100644
--- a/core/lib/Drupal/Core/Entity/Entity/EntityViewDisplay.php
+++ b/core/lib/Drupal/Core/Entity/Entity/EntityViewDisplay.php
@@ -9,6 +9,7 @@
 
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
+use Drupal\Core\Entity\EntityDisplayPluginCollection;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Entity\EntityDisplayBase;
 
@@ -252,4 +253,22 @@ public function buildMultiple(array $entities) {
     return $build_list;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getPluginCollections() {
+    $configurations = array();
+    foreach ($this->getComponents() as $field_name => $configuration) {
+      if (!empty($configuration['type']) && ($field_definition = $this->getFieldDefinition($field_name))) {
+        $configurations[$configuration['type']] = $configuration + array(
+          'field_definition' => $field_definition,
+          'view_mode' => $this->originalMode,
+        );
+      }
+    }
+
+    return array(
+      'formatters' => new EntityDisplayPluginCollection($this->pluginManager, $configurations)
+    );
+  }
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
index e46dff0..8c8be56 100644
--- a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
@@ -11,13 +11,14 @@
 use Drupal\Core\Config\Entity\ThirdPartySettingsTrait;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Entity\Display\EntityDisplayInterface;
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\FieldConfigInterface;
 
 /**
  * Provides a common base class for entity view and form displays.
  */
-abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDisplayInterface {
+abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDisplayInterface, EntityWithPluginCollectionInterface {
 
   use ThirdPartySettingsTrait;
 
@@ -175,17 +176,6 @@ public function calculateDependencies() {
       if ($field) {
         $this->addDependency('config', $field->getConfigDependencyName());
       }
-      // Create a dependency on the module that provides the formatter or
-      // widget.
-      if (isset($component['type']) && $definition = $this->pluginManager->getDefinition($component['type'], FALSE)) {
-        $this->addDependency('module', $definition['provider']);
-      }
-      // Create dependencies on any modules providing third party settings.
-      if (isset($component['third_party_settings'])) {
-        foreach($component['third_party_settings'] as $module => $settings) {
-          $this->addDependency('module', $module);
-        }
-      }
     }
     // Depend on configured modes.
     if ($this->mode != 'default') {
diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayPluginCollection.php b/core/lib/Drupal/Core/Entity/EntityDisplayPluginCollection.php
new file mode 100644
index 0000000..d58e841
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/EntityDisplayPluginCollection.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\filter\EntityDisplayPluginCollection.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Drupal\Core\Plugin\DefaultLazyPluginCollection;
+
+/**
+ * A collection of formatters or widgets.
+ */
+class EntityDisplayPluginCollection extends DefaultLazyPluginCollection {
+
+  /**
+   * The key within the plugin configuration that contains the plugin ID.
+   *
+   * @var string
+   */
+  protected $pluginKey = 'type';
+
+}
diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php
index 79eb14b..b34c56a 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Field;
 
+use Drupal\Component\Plugin\DependentPluginInterface;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Config\Entity\ThirdPartySettingsTrait;
 use Drupal\Core\Entity\EntityStorageInterface;
@@ -228,6 +229,19 @@ public function getTargetBundle() {
    */
   public function calculateDependencies() {
     parent::calculateDependencies();
+    // Add dependencies from field item. We can not use
+    // self::calculatePluginDependencies() because instantiating a field type
+    // plugin without the entity is not possible.
+    /** @var $field_type_manager \Drupal\Core\Field\FieldTypePluginManagerInterface */
+    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
+    $definition = $field_type_manager->getDefinition($this->getType());
+    $this->addDependency('module', $definition['provider']);
+    // Plugins can declare additional dependencies in their definition.
+    if (isset($definition['config_dependencies'])) {
+      $this->addDependencies($definition['config_dependencies']);
+    }
+    $this->addDependencies($definition['class']::calculateDependencies($this));
+
     $bundle_entity_type_id = $this->entityManager()->getDefinition($this->entity_type)->getBundleEntityType();
     if ($bundle_entity_type_id != 'bundle') {
       // If the target entity type uses entities to manage its bundles then
diff --git a/core/lib/Drupal/Core/Field/FieldItemBase.php b/core/lib/Drupal/Core/Field/FieldItemBase.php
index ec0c22d..d2a4770 100644
--- a/core/lib/Drupal/Core/Field/FieldItemBase.php
+++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
@@ -26,6 +26,13 @@
 abstract class FieldItemBase extends Map implements FieldItemInterface {
 
   /**
+   * The data definition.
+   *
+   * @var \Drupal\Core\Field\TypedData\FieldItemDataDefinitionInterface
+   */
+  protected $definition;
+
+  /**
    * {@inheritdoc}
    */
   public static function defaultStorageSettings() {
@@ -289,4 +296,11 @@ public static function fieldSettingsFromConfigData(array $settings) {
     return $settings;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function calculateDependencies(FieldDefinitionInterface $definition) {
+    return array();
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Field/FieldItemInterface.php b/core/lib/Drupal/Core/Field/FieldItemInterface.php
index 10628f5..25435a6 100644
--- a/core/lib/Drupal/Core/Field/FieldItemInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemInterface.php
@@ -372,4 +372,31 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
    */
   public function fieldSettingsForm(array $form, FormStateInterface $form_state);
 
+  /**
+   * Calculates dependencies for the configured plugin.
+   *
+   * Dependencies are saved in the plugin's configuration entity and are used to
+   * determine configuration synchronization order. For example, if the plugin
+   * integrates with specific user roles, this method should return an array of
+   * dependencies listing the specified roles.
+   *
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $definition
+   *   The field definition.
+   *
+   * @return array
+   *   An array of dependencies grouped by type (module, theme, entity). For
+   *   example:
+   *   @code
+   *   array(
+   *     'entity' => array('user.role.anonymous', 'user.role.authenticated'),
+   *     'module' => array('node', 'user'),
+   *     'theme' => array('seven'),
+   *   );
+   *   @endcode
+   *
+   * @see \Drupal\Core\Config\Entity\ConfigDependencyManager
+   * @see \Drupal\Core\Config\Entity\ConfigEntityInterface::getConfigDependencyName()
+   */
+  public static function calculateDependencies(FieldDefinitionInterface $definition);
+
 }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
index 63c9a66..cd327f0 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Field\Plugin\Field\FieldType;
 
+use Drupal\Core\Config\Entity\ConfigEntityType;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Entity\TypedData\EntityDataDefinition;
@@ -242,4 +243,34 @@ public function hasUnsavedEntity() {
     return $this->target_id === NULL && ($entity = $this->entity) && $entity->isNew();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function calculateDependencies(FieldDefinitionInterface $definition) {
+    $dependencies = [];
+
+    // Public access of default_value and we're not using
+    // $definition->getDefaultValue() because we don't have an entity
+    // which is problematic because we're ignoring default value callbacks. But
+    // since callback can vary depending on the entity perhaps they should not
+    // by supported anyway.
+    if (is_array($definition->default_value) && count($definition->default_value)) {
+      $target_entity_type = \Drupal::entityManager()->getDefinition($definition->getFieldStorageDefinition()->getSetting('target_type'));
+      if ($target_entity_type instanceof ConfigEntityType) {
+        $key = 'config';
+      }
+      else {
+        $key = 'content';
+      }
+      $dependencies = [
+        $key => []
+      ];
+      foreach ($definition->default_value as $uuid) {
+        $entity = \Drupal::entityManager()->loadEntityByUuid($target_entity_type->id(), $uuid);
+        $dependencies[$key][] = $entity->getConfigDependencyName();
+      }
+    }
+    return $dependencies;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Field/PluginSettingsBase.php b/core/lib/Drupal/Core/Field/PluginSettingsBase.php
index 37f69f3..9459dd1 100644
--- a/core/lib/Drupal/Core/Field/PluginSettingsBase.php
+++ b/core/lib/Drupal/Core/Field/PluginSettingsBase.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Field;
 
+use Drupal\Component\Plugin\DependentPluginInterface;
 use Drupal\Core\Plugin\PluginBase;
 
 /**
@@ -14,7 +15,7 @@
  *
  * This class handles lazy replacement of default settings values.
  */
-abstract class PluginSettingsBase extends PluginBase implements PluginSettingsInterface {
+abstract class PluginSettingsBase extends PluginBase implements PluginSettingsInterface, DependentPluginInterface {
 
   /**
    * The plugin settings.
@@ -108,4 +109,17 @@ public function setThirdPartySetting($module, $key, $value) {
     return $this;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function calculateDependencies() {
+    if (!empty($this->thirdPartySettings)) {
+      // Create dependencies on any modules providing third party settings.
+      return array(
+        'module' => array_keys($this->thirdPartySettings)
+      );
+    }
+    return array();
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Plugin/PluginDependencyTrait.php b/core/lib/Drupal/Core/Plugin/PluginDependencyTrait.php
index 2114d38..434cd69 100644
--- a/core/lib/Drupal/Core/Plugin/PluginDependencyTrait.php
+++ b/core/lib/Drupal/Core/Plugin/PluginDependencyTrait.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Plugin;
 
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
+use Drupal\Component\Plugin\DependentPluginInterface;
 use Drupal\Component\Plugin\PluginInspectionInterface;
 use Drupal\Core\Entity\DependencyTrait;
 
@@ -36,8 +37,8 @@ protected function calculatePluginDependencies(PluginInspectionInterface $instan
     if (isset($definition['config_dependencies'])) {
       $this->addDependencies($definition['config_dependencies']);
     }
-    // If a plugin is configurable, calculate its dependencies.
-    if ($instance instanceof ConfigurablePluginInterface && $plugin_dependencies = $instance->calculateDependencies()) {
+    // If a plugin is dependent, calculate its dependencies.
+    if ($instance instanceof DependentPluginInterface && $plugin_dependencies = $instance->calculateDependencies()) {
       $this->addDependencies($plugin_dependencies);
     }
   }
diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
index 9206d23..df26422 100644
--- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php
+++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
@@ -255,7 +255,7 @@ public function getPropertyInstance(TypedDataInterface $object, $property_name,
     }
     $key = $definition->getDataType();
     if ($settings = $definition->getSettings()) {
-      $key .= ':' . implode(',', $settings);
+      $key .= ':' . serialize($settings);
     }
     $key .= ':' . $object->getPropertyPath() . '.';
     // If we are creating list items, we always use 0 in the key as all list
diff --git a/core/modules/aggregator/aggregator.info.yml b/core/modules/aggregator/aggregator.info.yml
index af55280..5814712 100644
--- a/core/modules/aggregator/aggregator.info.yml
+++ b/core/modules/aggregator/aggregator.info.yml
@@ -6,5 +6,6 @@ version: VERSION
 core: 8.x
 configure: aggregator.admin_settings
 dependencies:
+  - entity_reference
   - file
   - options
diff --git a/core/modules/config/src/Tests/ConfigImportRecreateTest.php b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
index b569c5f..964128f 100644
--- a/core/modules/config/src/Tests/ConfigImportRecreateTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
@@ -31,7 +31,7 @@ class ConfigImportRecreateTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('system', 'entity', 'field', 'text', 'user', 'node');
+  public static $modules = array('system', 'entity', 'field', 'text', 'user', 'node', 'entity_reference');
 
   protected function setUp() {
     parent::setUp();
diff --git a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
index fc0d0ed..7dc7cd6 100644
--- a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
@@ -34,7 +34,7 @@ class ConfigImportRenameValidationTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('system', 'user', 'node', 'field', 'text', 'entity', 'config_test');
+  public static $modules = array('system', 'user', 'node', 'field', 'text', 'entity', 'config_test', 'entity_reference');
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
index 479fc20..e9d7605 100644
--- a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
+++ b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
@@ -39,7 +39,7 @@ protected function setUp() {
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent('field_boolean', array(
-        'type' => 'boolean',
+        'type' => 'boolean_checkbox',
       ))
       ->save();
   }
diff --git a/core/modules/field/src/Tests/FieldAttachOtherTest.php b/core/modules/field/src/Tests/FieldAttachOtherTest.php
index ff8569c..d3e65b3 100644
--- a/core/modules/field/src/Tests/FieldAttachOtherTest.php
+++ b/core/modules/field/src/Tests/FieldAttachOtherTest.php
@@ -20,6 +20,8 @@ class FieldAttachOtherTest extends FieldUnitTestBase {
 
   protected function setUp() {
     parent::setUp();
+    $this->installSchema('system', array('router'));
+    $this->container->get('router.builder')->rebuild();
     $this->installEntitySchema('entity_test_rev');
     $this->createFieldWithStorage();
   }
diff --git a/core/modules/field/src/Tests/FieldUnitTestBase.php b/core/modules/field/src/Tests/FieldUnitTestBase.php
index e89147b..5fadfde 100644
--- a/core/modules/field/src/Tests/FieldUnitTestBase.php
+++ b/core/modules/field/src/Tests/FieldUnitTestBase.php
@@ -21,7 +21,7 @@
    *
    * @var array
    */
-  public static $modules = array('user', 'entity', 'system', 'field', 'text', 'entity_test', 'field_test');
+  public static $modules = array('user', 'entity', 'system', 'field', 'text', 'entity_test', 'field_test', 'entity_reference');
 
   /**
    * Bag of created field storages and fields.
diff --git a/core/modules/field/src/Tests/TestItemWithDependenciesTest.php b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
new file mode 100644
index 0000000..b5ad7e1
--- /dev/null
+++ b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\Tests\TestItemWithDependenciesTest.
+ */
+
+namespace Drupal\field\Tests;
+
+/**
+ * Tests the new entity API for the test field with dependencies type.
+ *
+ * @group field
+ */
+class TestItemWithDependenciesTest extends FieldUnitTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('field_test');
+
+  /**
+   * The name of the field to use in this test.
+   *
+   * @var string
+   */
+  protected $field_name = 'field_test';
+
+  /**
+   * Tests that field types can add dependencies to field config entities.
+   */
+  public function testTestItemWithDepenencies() {
+    // Create a 'test_field_with_dependencies' field and storage for validation.
+    entity_create('field_storage_config', array(
+      'field_name' => $this->field_name,
+      'entity_type' => 'entity_test',
+      'type' => 'test_field_with_dependencies',
+    ))->save();
+    $field = entity_create('field_config', array(
+      'entity_type' => 'entity_test',
+      'field_name' => $this->field_name,
+      'bundle' => 'entity_test',
+    ));
+    $field->save();
+
+    // Validate that the field configuration entity has the expected
+    // dependencies.
+    $this->assertEqual([
+      'content' => ['node:article:uuid'],
+      'config' => ['field.storage.entity_test.field_test'],
+      'module' => ['field_test', 'test_module']
+    ], $field->getDependencies());
+  }
+
+}
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithDependencies.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithDependencies.php
new file mode 100644
index 0000000..9e59399
--- /dev/null
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithDependencies.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field_test\Plugin\Field\FieldType\TestItemWithDependencies.
+ */
+
+namespace Drupal\field_test\Plugin\Field\FieldType;
+
+
+/**
+ * Defines the 'test_field_with_dependencies' entity field item.
+ *
+ * @FieldType(
+ *   id = "test_field_with_dependencies",
+ *   label = @Translation("Test field with dependencies"),
+ *   description = @Translation("Dummy field type used for tests."),
+ *   default_widget = "test_field_widget",
+ *   default_formatter = "field_test_default",
+ *   config_dependencies = {
+ *     "module" = {
+ *       "test_module"
+ *     }
+ *   }
+ * )
+ */
+
+class TestItemWithDependencies extends TestItem {
+
+  /**
+   * {inheritdoc}
+   */
+  public function calculateDependencies() {
+    return ['content' => ['node:article:uuid']];
+  }
+
+}
diff --git a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
index 63f2d4b..423e1e0 100644
--- a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
@@ -54,6 +54,13 @@ class FieldConfigEntityUnitTest extends UnitTestCase {
   protected $fieldStorage;
 
   /**
+   * The mock typed data manager;
+   *
+   * @var \Drupal\Core\TypedData\TypedDataManager|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $typedDataManager;
+
+  /**
    * {@inheritdoc}
    */
   protected function setUp() {
@@ -66,10 +73,15 @@ protected function setUp() {
 
     $this->typedConfigManager = $this->getMock('Drupal\Core\Config\TypedConfigManagerInterface');
 
+    $this->typedDataManager = $this->getMockBuilder('Drupal\Core\TypedData\TypedDataManager')
+      ->disableOriginalConstructor()
+      ->getMock();
+
     $container = new ContainerBuilder();
     $container->set('entity.manager', $this->entityManager);
     $container->set('uuid', $this->uuid);
     $container->set('config.typed', $this->typedConfigManager);
+    $container->set('typed_data_manager', $this->typedDataManager);
     \Drupal::setContainer($container);
 
     // Create a mock FieldStorageConfig object.
@@ -80,7 +92,9 @@ protected function setUp() {
     $this->fieldStorage->expects($this->any())
       ->method('getName')
       ->will($this->returnValue('field_test'));
-
+    $this->fieldStorage->expects($this->any())
+      ->method('getSettings')
+      ->willReturn(array());
     // Place the field in the mocked entity manager's field registry.
     $this->entityManager->expects($this->any())
       ->method('getFieldStorageDefinitions')
diff --git a/core/modules/field_ui/src/Tests/EntityDisplayTest.php b/core/modules/field_ui/src/Tests/EntityDisplayTest.php
index 3a76027..5150f58 100644
--- a/core/modules/field_ui/src/Tests/EntityDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/EntityDisplayTest.php
@@ -17,7 +17,7 @@
  */
 class EntityDisplayTest extends KernelTestBase {
 
-  public static $modules = array('field_ui', 'field', 'entity_test', 'user', 'text', 'field_test', 'node', 'system');
+  public static $modules = array('field_ui', 'field', 'entity_test', 'user', 'text', 'field_test', 'node', 'system', 'entity_reference');
 
   protected function setUp() {
     parent::setUp();
@@ -305,7 +305,7 @@ public function testRenameDeleteBundle() {
     $dependencies = $new_form_display->calculateDependencies();
     $expected_form_dependencies = array(
       'config' => array('field.field.node.article_rename.body', 'node.type.article_rename'),
-      'module' => array('text')
+      'module' => array('entity_reference', 'text')
     );
     $this->assertEqual($expected_form_dependencies, $dependencies);
 
diff --git a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
index 12b41c7..768c142 100644
--- a/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/EntityFormDisplayTest.php
@@ -17,7 +17,7 @@
  */
 class EntityFormDisplayTest extends KernelTestBase {
 
-  public static $modules = array('field_ui', 'field', 'entity_test', 'field_test', 'user', 'text');
+  public static $modules = array('field_ui', 'field', 'entity_test', 'field_test', 'user', 'text', 'entity_reference');
 
   protected function setUp() {
     parent::setUp();
diff --git a/core/modules/menu_link_content/src/Entity/MenuLinkContent.php b/core/modules/menu_link_content/src/Entity/MenuLinkContent.php
index e9aa9c0..9b44af0 100644
--- a/core/modules/menu_link_content/src/Entity/MenuLinkContent.php
+++ b/core/modules/menu_link_content/src/Entity/MenuLinkContent.php
@@ -359,7 +359,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'weight' => 0,
       ))
       ->setDisplayOptions('form', array(
-        'type' => 'integer',
+        'type' => 'number',
         'weight' => 20,
       ));
 
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_entity_form_display_subject.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_entity_form_display_subject.yml
index 54efa18..785dfb5 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_entity_form_display_subject.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_entity_form_display_subject.yml
@@ -9,7 +9,7 @@ source:
     field_name: subject
     form_mode: default
     options:
-      type: string
+      type: string_textfield
       weight: 10
 process:
   entity_type: 'constants/entity_type'
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
index db62fd7..de74309 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
@@ -44,7 +44,7 @@ process:
         filefield_widget: file_generic
         imagefield_widget: image_image
         phone_textfield: telephone_default
-        optionwidgets_onoff: checkbox
+        optionwidgets_onoff: boolean_checkbox
         optionwidgets_buttons: options_buttons
         optionwidgets_select: options_select
   'options/settings':
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
index c7b3cd5..320dae2 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
@@ -30,7 +30,9 @@ public function transform($value, MigrateExecutable $migrate_executable, Row $ro
       case 'text_textfield':
       case 'number':
       case 'phone_textfield':
-        $default['value'] = $widget_settings['default_value'][0]['value'];
+        if (!empty($widget_settings['default_value'][0]['value'])) {
+          $default['value'] = $widget_settings['default_value'][0]['value'];
+        }
         break;
 
       case 'imagefield_widget':
@@ -39,19 +41,28 @@ public function transform($value, MigrateExecutable $migrate_executable, Row $ro
         break;
 
       case 'date_select':
-        $default['value'] = $widget_settings['default_value'];
+        if (!empty($widget_settings['default_value'])) {
+          $default['value'] = $widget_settings['default_value'];
+        }
         break;
 
       case 'email_textfield':
-        $default['value'] = $widget_settings['default_value'][0]['email'];
+        if (!empty($widget_settings['default_value'][0]['email'])) {
+          $default['value'] = $widget_settings['default_value'][0]['email'];
+        }
         break;
 
       case 'link':
-        $default['title'] = $widget_settings['default_value'][0]['title'];
-        $default['url'] = $widget_settings['default_value'][0]['url'];
+        if (!empty($widget_settings['default_value'][0]['url'])) {
+          $default['title'] = $widget_settings['default_value'][0]['title'];
+          $default['url'] = $widget_settings['default_value'][0]['url'];
+        }
         break;
     }
-    return array($default);
+    if (!empty($default)) {
+      $default = array($default);
+    }
+    return $default;
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableEntityFormDisplaySubjectTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableEntityFormDisplaySubjectTest.php
index 11bb90a..67539b6 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableEntityFormDisplaySubjectTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableEntityFormDisplaySubjectTest.php
@@ -59,7 +59,7 @@ protected function setUp() {
   public function testCommentEntityFormDisplay() {
     $component = entity_get_form_display('comment', 'comment', 'default')
       ->getComponent('subject');
-    $this->assertEqual($component['type'], 'string');
+    $this->assertEqual($component['type'], 'string_textfield');
     $this->assertEqual($component['weight'], 10);
     $component = entity_get_form_display('comment', 'comment_no_subject', 'default')
       ->getComponent('subject');
diff --git a/core/modules/node/src/Tests/Config/NodeImportChangeTest.php b/core/modules/node/src/Tests/Config/NodeImportChangeTest.php
index 015c008..2b05d02 100644
--- a/core/modules/node/src/Tests/Config/NodeImportChangeTest.php
+++ b/core/modules/node/src/Tests/Config/NodeImportChangeTest.php
@@ -21,7 +21,7 @@ class NodeImportChangeTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'entity', 'field', 'text', 'system', 'node_test_config', 'user');
+  public static $modules = array('node', 'entity', 'field', 'text', 'system', 'node_test_config', 'user', 'entity_reference');
 
   /**
    * Set the default field storage backend for fields created during tests.
diff --git a/core/modules/node/src/Tests/Config/NodeImportCreateTest.php b/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
index ffcafcb..033143f 100644
--- a/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
+++ b/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
@@ -22,7 +22,7 @@ class NodeImportCreateTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'entity', 'field', 'text', 'system', 'user');
+  public static $modules = array('node', 'entity', 'field', 'text', 'system', 'user', 'entity_reference');
 
   /**
    * Set the default field storage backend for fields created during tests.
diff --git a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
index d71a152..a254a0a 100644
--- a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
+++ b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
@@ -56,6 +56,7 @@
   protected function setUp() {
     parent::setUp();
     $this->installSchema('system', array('router'));
+    $this->container->get('router.builder')->rebuild();
 
     $this->fieldStorageDefinition = array(
       'field_name' => $this->fieldName,
diff --git a/core/modules/quickedit/src/Tests/EditorSelectionTest.php b/core/modules/quickedit/src/Tests/EditorSelectionTest.php
index 1db8ab7..336fbec 100644
--- a/core/modules/quickedit/src/Tests/EditorSelectionTest.php
+++ b/core/modules/quickedit/src/Tests/EditorSelectionTest.php
@@ -58,7 +58,7 @@ public function testText() {
       // Instance settings.
       array(),
       // Widget type & settings.
-      'string',
+      'string_textfield',
       array('size' => 42),
       // 'default' formatter type & settings.
       'string',
diff --git a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
index 32b3d26..072d888 100644
--- a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
+++ b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
@@ -73,7 +73,7 @@ public function testSimpleEntityType() {
       // Instance settings.
       array(),
       // Widget type & settings.
-      'string',
+      'string_textfield',
       array('size' => 42),
       // 'default' formatter type & settings.
       'string',
diff --git a/core/modules/quickedit/src/Tests/QuickEditTestBase.php b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
index a9e8038..8b590e0 100644
--- a/core/modules/quickedit/src/Tests/QuickEditTestBase.php
+++ b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
@@ -19,7 +19,7 @@
    *
    * @var array
    */
-  public static $modules = array('system', 'entity', 'entity_test', 'field', 'field_test', 'filter', 'user', 'text', 'quickedit');
+  public static $modules = array('system', 'entity', 'entity_test', 'field', 'field_test', 'filter', 'user', 'text', 'quickedit', 'entity_reference');
 
   /**
    * Bag of created fields.
diff --git a/core/modules/rdf/src/Tests/Field/LinkFieldRdfaTest.php b/core/modules/rdf/src/Tests/Field/LinkFieldRdfaTest.php
index 8478bae..e806a60 100644
--- a/core/modules/rdf/src/Tests/Field/LinkFieldRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/LinkFieldRdfaTest.php
@@ -114,7 +114,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
 
     // Test the link formatter: trim at 80, no other settings.
     $formatter = array(
-      'type' => $type . ' link',
+      'type' => 'link',
       'settings' => array(
         'trim_length' => 80,
         'url_only' => FALSE,
@@ -127,7 +127,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
 
     // Test the link formatter: trim at 40, nofollow, new window.
     $formatter = array(
-      'type' => $type . ' link',
+      'type' => 'link',
       'settings' => array(
         'trim_length' => 40,
         'url_only' => FALSE,
@@ -141,7 +141,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
     // Test the link formatter: trim at 40, URL only (not plaintext) nofollow,
     // new window.
     $formatter = array(
-      'type' => $type . ' link',
+      'type' => 'link',
       'settings' => array(
         'trim_length' => 40,
         'url_only' => TRUE,
@@ -154,7 +154,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
 
     // Test the link_separate formatter: trim at 40, nofollow, new window.
     $formatter = array(
-      'type' => $type . ' link_separate',
+      'type' => 'link_separate',
       'settings' => array(
         'trim_length' => 40,
         'rel' => 'nofollow',
@@ -171,7 +171,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
     );
     // Test the link formatter: trim at 20, url only (as plaintext.)
     $formatter = array(
-      'type' => $type . ' link',
+      'type' => 'link',
       'settings' => array(
         'trim_length' => 20,
         'url_only' => TRUE,
@@ -184,7 +184,7 @@ public function runTestAllFormatters($expected_rdf, $type = NULL) {
 
     // Test the link formatter: do not trim, url only (as plaintext.)
     $formatter = array(
-      'type' => $type . ' link',
+      'type' => 'link',
       'settings' => array(
         'trim_length' => 0,
         'url_only' => TRUE,
diff --git a/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php b/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
index e6a0de7..f5974bb 100644
--- a/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/NumberFieldRdfaTest.php
@@ -21,7 +21,7 @@ public function testIntegerFormatter() {
     $testValue = 3;
     $this->createTestField();
     $this->createTestEntity($testValue);
-    $this->assertFormatterRdfa(array('type' => $this->fieldType), 'http://schema.org/baseSalary', array('value' => $testValue));
+    $this->assertFormatterRdfa(array('type' => 'number_integer'), 'http://schema.org/baseSalary', array('value' => $testValue));
 
     // Test that the content attribute is not created.
     $result = $this->xpathContent($this->getRawContent(), '//div[contains(@class, "field-item") and @content]');
@@ -34,7 +34,7 @@ public function testIntegerFormatter() {
   public function testIntegerFormatterWithSettings() {
     $this->fieldType = 'integer';
     $formatter = array(
-      'type' => $this->fieldType,
+      'type' => 'number_integer',
       'settings' => array(
         'thousand_separator' => '.',
         'prefix_suffix' => TRUE,
@@ -62,7 +62,7 @@ public function testFloatFormatter() {
     $testValue = 3.33;
     $this->createTestField();
     $this->createTestEntity($testValue);
-    $this->assertFormatterRdfa(array('type' => $this->fieldType), 'http://schema.org/baseSalary', array('value' => $testValue));
+    $this->assertFormatterRdfa(array('type' => 'number_unformatted'), 'http://schema.org/baseSalary', array('value' => $testValue));
 
     // Test that the content attribute is not created.
     $result = $this->xpathContent($this->getRawContent(), '//div[contains(@class, "field-item") and @content]');
@@ -75,7 +75,7 @@ public function testFloatFormatter() {
   public function testFloatFormatterWithSettings() {
     $this->fieldType = 'float';
     $formatter = array(
-      'type' => $this->fieldType,
+      'type' => 'number_decimal',
       'settings' => array(
         'thousand_separator' => '.',
         'decimal_separator' => ',',
@@ -102,7 +102,7 @@ public function testFloatFormatterWithSettings() {
   public function testFloatFormatterWithScale() {
     $this->fieldType = 'float';
     $formatter = array(
-      'type' => $this->fieldType,
+      'type' => 'number_decimal',
       'settings' => array(
         'scale' => 5,
       ),
@@ -123,7 +123,7 @@ public function testFloatFormatterWithScale() {
   public function testFloatFormatterWithScaleExercised() {
     $this->fieldType = 'float';
     $formatter = array(
-      'type' => $this->fieldType,
+      'type' => 'number_decimal',
       'settings' => array(
         'scale' => 5,
       ),
@@ -146,7 +146,7 @@ public function testDecimalFormatter() {
     $testValue = 3.33;
     $this->createTestField();
     $this->createTestEntity($testValue);
-    $this->assertFormatterRdfa(array('type' => $this->fieldType), 'http://schema.org/baseSalary', array('value' => $testValue));
+    $this->assertFormatterRdfa(array('type' => 'number_decimal'), 'http://schema.org/baseSalary', array('value' => $testValue));
 
     // Test that the content attribute is not created.
     $result = $this->xpathContent($this->getRawContent(), '//div[contains(@class, "field-item") and @content]');
@@ -159,7 +159,7 @@ public function testDecimalFormatter() {
   public function testDecimalFormatterWithSettings() {
     $this->fieldType = 'decimal';
     $formatter = array(
-      'type' => $this->fieldType,
+      'type' => 'number_decimal',
       'settings' => array(
         'thousand_separator' => 't',
         'decimal_separator' => '#',
diff --git a/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php b/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
index 85662d2..002db43 100644
--- a/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
@@ -52,7 +52,7 @@ protected function setUp() {
    */
   public function testAllFormatters() {
     // Tests the plain formatter.
-    $this->assertFormatterRdfa(array('type' => 'text_plain'), 'http://schema.org/telephone', array('value' => $this->testValue));
+    $this->assertFormatterRdfa(array('type' => 'string'), 'http://schema.org/telephone', array('value' => $this->testValue));
     // Tests the telephone link formatter.
     $this->assertFormatterRdfa(array('type' => 'telephone_link'), 'http://schema.org/telephone', array('value' => 'tel:' . $this->testValue, 'type' => 'uri'));
 
diff --git a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php b/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
index ada31f2..c1dc0ff 100644
--- a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
@@ -20,7 +20,7 @@
    *
    * @var array
    */
-  public static $modules = array('entity', 'user', 'system', 'field', 'text', 'filter', 'entity_test');
+  public static $modules = array('entity', 'user', 'system', 'field', 'text', 'filter', 'entity_test', 'entity_reference');
 
   /**
    * The entity manager service.
diff --git a/core/modules/system/src/Tests/Entity/FieldAccessTest.php b/core/modules/system/src/Tests/Entity/FieldAccessTest.php
index e87eb44..33d0e39 100644
--- a/core/modules/system/src/Tests/Entity/FieldAccessTest.php
+++ b/core/modules/system/src/Tests/Entity/FieldAccessTest.php
@@ -22,7 +22,7 @@ class FieldAccessTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity', 'entity_test', 'field', 'system', 'text', 'filter', 'user');
+  public static $modules = array('entity', 'entity_test', 'field', 'system', 'text', 'filter', 'user', 'entity_reference');
 
   /**
    * Holds the currently active global user ID that initiated the test run.
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
index b4cb26e..462448e 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTest.php
@@ -90,7 +90,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'weight' => -5,
       ))
       ->setDisplayOptions('form', array(
-        'type' => 'string',
+        'type' => 'string_textfield',
         'weight' => -5,
       ));
 
diff --git a/core/modules/views/src/Tests/Entity/RowEntityRenderersTest.php b/core/modules/views/src/Tests/Entity/RowEntityRenderersTest.php
index e820532..b4284b1 100644
--- a/core/modules/views/src/Tests/Entity/RowEntityRenderersTest.php
+++ b/core/modules/views/src/Tests/Entity/RowEntityRenderersTest.php
@@ -25,7 +25,7 @@ class RowEntityRenderersTest extends ViewUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity', 'field', 'filter', 'text', 'node', 'user', 'language');
+  public static $modules = array('entity', 'field', 'filter', 'text', 'node', 'user', 'language', 'entity_reference');
 
   /**
    * Views used by this test.
diff --git a/core/modules/views/src/Tests/ViewExecutableTest.php b/core/modules/views/src/Tests/ViewExecutableTest.php
index 6ecca04..867f04c 100644
--- a/core/modules/views/src/Tests/ViewExecutableTest.php
+++ b/core/modules/views/src/Tests/ViewExecutableTest.php
@@ -30,7 +30,7 @@
  */
 class ViewExecutableTest extends ViewUnitTestBase {
 
-  public static $modules = array('system', 'node', 'comment', 'user', 'filter', 'entity', 'field', 'text');
+  public static $modules = array('system', 'node', 'comment', 'user', 'filter', 'entity', 'field', 'text', 'entity_reference');
 
   /**
    * Views used by this test.
