diff --git a/core/lib/Drupal/Core/Render/Element/Details.php b/core/lib/Drupal/Core/Render/Element/Details.php
index ae25d34..f0a41d3 100644
--- a/core/lib/Drupal/Core/Render/Element/Details.php
+++ b/core/lib/Drupal/Core/Render/Element/Details.php
@@ -79,6 +79,26 @@ public static function preRenderDetails($element) {
       $element['#attributes']['open'] = 'open';
     }
 
+    // Loop through widgets looking for errors, make sure to enable #open if any are found.
+    if (!empty($element['#parents'])) {
+      $parents = implode('][', $element['#parents']);
+      if (!empty($element['#groups'][$parents])) {
+        $children = Element::children($element['#groups'][$parents]);
+        if (!empty($children)) {
+          foreach ($children as $key) {
+            $child = $element['#groups'][$parents][$key];
+            if (isset($child['widget'])) {
+              foreach (Element::children($child['widget']) as $widget) {
+                if (isset($child['widget'][$widget]['value']) && $child['widget'][$widget]['value']['#errors'] != NULL) {
+                  $element['#attributes']['open'] = 'open';
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+
     // Do not render optional details elements if there are no children.
     if (isset($element['#parents'])) {
       $group = implode('][', $element['#parents']);
diff --git a/core/modules/node/src/Tests/NodeEditFormTest.php b/core/modules/node/src/Tests/NodeEditFormTest.php
index fe10b38..c80c7d8 100644
--- a/core/modules/node/src/Tests/NodeEditFormTest.php
+++ b/core/modules/node/src/Tests/NodeEditFormTest.php
@@ -113,6 +113,13 @@ public function testNodeEdit() {
     $first_node_version = node_revision_load($node->getRevisionId());
     $second_node_version = node_revision_load($revised_node->getRevisionId());
     $this->assertNotIdentical($first_node_version->getRevisionUser()->id(), $second_node_version->getRevisionUser()->id(), 'Each revision has a distinct user.');
+
+    // Test Details validation.
+    $edit = array();
+    $edit['created[0][value][time]'] = NULL;
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
+    $this->assertRaw('The Authored on date is invalid.');
+    //Todo: assert that the details is open.
   }
 
   /**
