diff --git a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
index da786a2..f84e9f4 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
@@ -19,7 +19,7 @@ class ContextualDynamicContextTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('contextual', 'node');
+  public static $modules = array('contextual', 'node', 'views');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
index bafb620..d358972 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
@@ -19,7 +19,7 @@ class LocalePathTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'locale', 'path');
+  public static $modules = array('node', 'locale', 'path', 'views');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeLoadMultipleTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeLoadMultipleTest.php
index 25cb01d..c0da254 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeLoadMultipleTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeLoadMultipleTest.php
@@ -12,6 +12,13 @@
  */
 class NodeLoadMultipleTest extends NodeTestBase {
 
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('views');
+
   public static function getInfo() {
     return array(
       'name' => 'Load multiple nodes',
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTitleTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTitleTest.php
index e657d76..106826f 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTitleTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTitleTest.php
@@ -60,9 +60,5 @@ function testNodeTitle() {
 
     // Test node title in comment preview.
     $this->assertEqual(current($this->xpath('//article[@id=:id]/h2/a', array(':id' => 'node-' . $node->nid))), $node->label(), 'Node preview title is equal to node title.', 'Node');
-
-    // Test node title is clickable on teaser list (/node).
-    $this->drupalGet('node');
-    $this->clickLink($node->label());
   }
 }
diff --git a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
index 61b725a..d847929 100644
--- a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
@@ -11,6 +11,14 @@
  * Tests the summary length functionality.
  */
 class SummaryLengthTest extends NodeTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('views');
+
   public static function getInfo() {
     return array(
       'name' => 'Summary length',
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 5415312..91ed0a1 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1732,13 +1732,6 @@ function node_menu() {
     'access arguments' => array('administer content types'),
     'file' => 'content_types.inc',
   );
-
-  $items['node'] = array(
-    'page callback' => 'node_page_default',
-    'access arguments' => array('access content'),
-    'menu_name' => 'tools',
-    'type' => MENU_CALLBACK,
-  );
   $items['node/add'] = array(
     'title' => 'Add content',
     'page callback' => 'node_add_page',
@@ -2372,62 +2365,6 @@ function node_view_multiple($nodes, $view_mode = 'teaser', $langcode = NULL) {
 }
 
 /**
- * Page callback: Generates a listing of promoted nodes.
- *
- * @return array
- *   An array in the format expected by drupal_render().
- *
- * @see node_menu()
- */
-function node_page_default() {
-  $site_config = config('system.site');
-  $select = db_select('node', 'n')
-    ->fields('n', array('nid', 'sticky', 'created'))
-    ->condition('n.promote', 1)
-    ->condition('n.status', 1)
-    ->orderBy('n.sticky', 'DESC')
-    ->orderBy('n.created', 'DESC')
-    ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
-    ->limit(config('node.settings')->get('items_per_page'))
-    ->addTag('node_access');
-
-  $nids = $select->execute()->fetchCol();
-
-  if (!empty($nids)) {
-    $nodes = node_load_multiple($nids);
-    $build['nodes'] = node_view_multiple($nodes);
-
-    // 'rss.xml' is a path, not a file, registered in node_menu().
-    drupal_add_feed('rss.xml', $site_config->get('name') . ' ' . t('RSS'));
-    $build['pager'] = array(
-      '#theme' => 'pager',
-      '#weight' => 5,
-    );
-    drupal_set_title('');
-  }
-  else {
-    drupal_set_title(t('Welcome to @site-name', array('@site-name' => $site_config->get('name'))), PASS_THROUGH);
-
-    $default_message = '<p>' . t('No front page content has been created yet.') . '</p>';
-
-    $default_links = array();
-    if (_node_add_access()) {
-      $default_links[] = l(t('Add new content'), 'node/add');
-    }
-    if (!empty($default_links)) {
-      $default_message .= theme('item_list', array('items' => $default_links));
-    }
-
-    $build['default_message'] = array(
-      '#markup' => $default_message,
-      '#prefix' => '<div id="first-time">',
-      '#suffix' => '</div>',
-    );
-  }
-  return $build;
-}
-
-/**
  * Page callback: Displays a single node.
  *
  * @param Drupal\node\Node $node
diff --git a/core/modules/node/node.views.inc b/core/modules/node/node.views.inc
index bf30614..24c37d6 100644
--- a/core/modules/node/node.views.inc
+++ b/core/modules/node/node.views.inc
@@ -416,6 +416,14 @@ function node_views_data() {
     ),
   );
 
+  $data['node']['node_listing_empty'] = array(
+    'title' => t('Empty Node Frontpage behavior'),
+    'help' => t('Provides a link to the node add overview page.'),
+    'area' => array(
+      'id' => 'node_listing_empty',
+    ),
+  );
+
   // Content revision table
 
   // Define the base group of this table. Fields that don't
diff --git a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDFunctionalTest.php b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDFunctionalTest.php
index b0c940e..405b47f 100644
--- a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDFunctionalTest.php
+++ b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDFunctionalTest.php
@@ -19,7 +19,7 @@ class OpenIDFunctionalTest extends OpenIDTestBase {
    *
    * @var array
    */
-  public static $modules = array('openid_test');
+  public static $modules = array('openid_test', 'views');
 
   protected $web_user;
 
diff --git a/core/modules/views/config/views.view.frontpage.yml b/core/modules/views/config/views.view.frontpage.yml
deleted file mode 100644
index a635a0e..0000000
--- a/core/modules/views/config/views.view.frontpage.yml
+++ /dev/null
@@ -1,95 +0,0 @@
-disabled: true
-api_version: '3.0'
-module: node
-name: frontpage
-description: 'Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.'
-tag: default
-base_table: node
-human_name: 'Front page'
-core: '8'
-display:
-  default:
-    id: default
-    display_title: Master
-    display_plugin: default
-    position: '1'
-    display_options:
-      query:
-        type: views_query
-        options:
-          query_comment: false
-      access:
-        type: none
-      cache:
-        type: none
-      exposed_form:
-        type: basic
-      pager:
-        type: full
-      style:
-        type: default
-      row:
-        type: node
-        options:
-          links: 1
-      sorts:
-        sticky:
-          id: sticky
-          table: node
-          field: sticky
-          order: DESC
-        created:
-          id: created
-          table: node
-          field: created
-          order: DESC
-      filters:
-        promote:
-          id: promote
-          table: node
-          field: promote
-          value: '1'
-          group: 0
-          expose:
-            operator: false
-        status:
-          id: status
-          table: node
-          field: status
-          value: '1'
-          group: 0
-          expose:
-            operator: false
-  page_1:
-    id: page_1
-    display_title: Page
-    display_plugin: page
-    position: '2'
-    display_options:
-      query:
-        type: views_query
-        options: {  }
-      path: frontpage
-  feed_1:
-    id: feed_1
-    display_title: Feed
-    display_plugin: feed
-    position: '3'
-    display_options:
-      query:
-        type: views_query
-        options: {  }
-      defaults:
-        title: false
-      title: 'Front page feed'
-      pager:
-        type: some
-      style:
-        type: rss
-      row:
-        type: node_rss
-      path: rss.xml
-      displays:
-        default: default
-        page: page
-      sitename_title: '1'
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/area/AreaPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/area/AreaPluginBase.php
index fb747ea..d43ec11 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/area/AreaPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/area/AreaPluginBase.php
@@ -151,9 +151,7 @@ public function query() { }
   /**
    * Render the area
    */
-  function render($empty = FALSE) {
-    return '';
-  }
+  abstract function render($empty = FALSE);
 
   /**
    * Area handlers shouldn't have groupby.
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
index ff50f64..0ac4326 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
@@ -131,7 +131,7 @@ public function testTitleArea() {
 
     $view->storage->enable();
 
-    $this->drupalGet('frontpage');
+    $this->drupalGet('node');
     $this->assertText('Overridden title', 'Overridden title found.');
   }
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php b/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
index 770f1bf..37255b0 100644
--- a/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
@@ -26,7 +26,7 @@ public static function getInfo() {
   function testDefaultViews() {
     // Make sure the front page view starts off as disabled (does not appear on
     // the listing page).
-    $edit_href = 'admin/structure/views/view/frontpage/edit';
+    $edit_href = 'admin/structure/views/view/glossary/edit';
     $this->drupalGet('admin/structure/views');
     // @todo Disabled default views do now appear on the front page. Test this
     // behavior with templates instead.
@@ -35,23 +35,23 @@ function testDefaultViews() {
     // Enable the front page view, and make sure it is now visible on the main
     // listing page.
     $this->drupalGet('admin/structure/views/templates');
-    $this->clickViewsOperationLink(t('Enable'), '/frontpage/');
+    $this->clickViewsOperationLink(t('Enable'), '/glossary/');
     $this->assertUrl('admin/structure/views');
     $this->assertLinkByHref($edit_href);
 
     // It should not be possible to revert the view yet.
     // @todo Figure out how to handle this with the new configuration system.
     // $this->assertNoLink(t('Revert'));
-    // $revert_href = 'admin/structure/views/view/frontpage/revert';
+    // $revert_href = 'admin/structure/views/view/glossary/revert';
     // $this->assertNoLinkByHref($revert_href);
 
     // Edit the view and change the title. Make sure that the new title is
     // displayed.
     $new_title = $this->randomName(16);
     $edit = array('title' => $new_title);
-    $this->drupalPost('admin/structure/views/nojs/display/frontpage/page_1/title', $edit, t('Apply'));
-    $this->drupalPost('admin/structure/views/view/frontpage/edit/page_1', array(), t('Save'));
-    $this->drupalGet('frontpage');
+    $this->drupalPost('admin/structure/views/nojs/display/glossary/page_1/title', $edit, t('Apply'));
+    $this->drupalPost('admin/structure/views/view/glossary/edit/page_1', array(), t('Save'));
+    $this->drupalGet('glossary');
     $this->assertResponse(200);
     $this->assertText($new_title);
 
@@ -70,7 +70,7 @@ function testDefaultViews() {
     // $this->assertLink(t('Revert'));
     // $this->assertLinkByHref($revert_href);
     // $this->drupalPost($revert_href, array(), t('Revert'));
-    // $this->drupalGet('frontpage');
+    // $this->drupalGet('glossary');
     // $this->assertNoText($new_title);
 
     // Now disable the view, and make sure it stops appearing on the main view
@@ -78,13 +78,13 @@ function testDefaultViews() {
     // listing page.
     // @todo Test this behavior with templates instead.
     $this->drupalGet('admin/structure/views');
-    $this->clickViewsOperationLink(t('Disable'), '/frontpage/');
+    $this->clickViewsOperationLink(t('Disable'), '/glossary/');
     // $this->assertUrl('admin/structure/views');
     // $this->assertNoLinkByHref($edit_href);
     // The easiest way to verify it appears on the disabled views listing page
     // is to try to click the "enable" link from there again.
     $this->drupalGet('admin/structure/views/templates');
-    $this->clickViewsOperationLink(t('Enable'), '/frontpage/');
+    $this->clickViewsOperationLink(t('Enable'), '/glossary/');
     $this->assertUrl('admin/structure/views');
     $this->assertLinkByHref($edit_href);
 
@@ -110,7 +110,7 @@ function testDefaultViews() {
    * @param $unique_href_part
    *   A unique string that is expected to occur within the href of the desired
    *   link. For example, if the link URL is expected to look like
-   *   "admin/structure/views/view/frontpage/...", then "/frontpage/" could be
+   *   "admin/structure/views/view/glossary/...", then "/glossary/" could be
    *   passed as the expected unique string.
    *
    * @return
