diff --git a/core/modules/node/lib/Drupal/node/Tests/Views/AnalyzeNodeTest.php b/core/modules/node/lib/Drupal/node/Tests/Views/AnalyzeNodeTest.php
new file mode 100644
index 0000000..b5bb644
--- /dev/null
+++ b/core/modules/node/lib/Drupal/node/Tests/Views/AnalyzeNodeTest.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\node\Tests\Views\AnalyzeNodeTest.
+ */
+
+namespace Drupal\node\Tests\Views;
+
+/**
+ * Tests the node analyzer.
+ *
+ * @see node_views_analyze()
+ */
+class AnalyzeNodeTest extends NodeTestBase {
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = array('test_node_analyze');
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('views_ui');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Node: Analyzer',
+      'description' => 'Tests the node analyzer.',
+      'group' => 'Views module integration',
+    );
+  }
+
+  /**
+   * Tests the warnings given by node module in Views Analyze.
+   */
+  public function testNodeAnalyze() {
+    // Deny anonymous users the ability to access content, to cause analyzer warnings.
+    user_role_revoke_permissions(DRUPAL_ANONYMOUS_RID, array('access content'));
+
+    // Check the analyzer results for an incorrectly built view.
+    $this->drupalLogin($this->drupalCreateUser(array('administer views')));
+    $this->drupalGet('admin/structure/views/nojs/analyze/test_node_analyze/page_1');
+    $this->assertRaw(t('Some roles lack permission to access content, but display %display has no access control.', array('%display' => 'Master')));
+    $this->assertRaw(t('Display %display has no access control but does not contain a filter for published nodes.', array('%display' => 'Master')));
+    $this->assertRaw(t('Display %display has set node/%node as path. This will not produce what you want. If you want to have multiple versions of the node view, use panels.', array('%display' => 'Page')));
+
+    // Fix the errors and check the results again.
+    $view = views_get_view('test_node_analyze');
+    $view->initDisplay();
+    $view->displayHandlers->get('page_1')->setOption('path', 'test_node_analyze');
+    $view->displayHandlers->get('default')->setOption('access', array(
+      'type' => 'perm',
+      'options' => array(
+        'perm' => 'access content',
+      ),
+    ));
+    $view->addItem('default', 'filter', 'node', 'status', array('value' => TRUE));
+    $view->storage->save();
+    $this->drupalGet('admin/structure/views/nojs/analyze/test_node_analyze/page_1');
+    $this->assertText(t('View analysis can find nothing to report.'));
+  }
+
+}
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_analyze.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_analyze.yml
new file mode 100644
index 0000000..d0f48a3
--- /dev/null
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_analyze.yml
@@ -0,0 +1,108 @@
+base_field: nid
+base_table: node
+core: 8.x
+description: ''
+status: '1'
+display:
+  default:
+    display_plugin: default
+    id: default
+    display_title: Master
+    position: '0'
+    display_options:
+      access:
+        type: none
+      cache:
+        type: none
+      query:
+        type: views_query
+      exposed_form:
+        type: basic
+      pager:
+        type: full
+      style:
+        type: default
+        options:
+          grouping: {  }
+          row_class: ''
+          default_row_class: '1'
+          row_class_special: '1'
+      arguments:
+        nid:
+          id: nid
+          table: node
+          field: nid
+          plugin_id: numeric
+      row:
+        type: fields
+        options:
+          default_field_elements: '1'
+          inline: {  }
+          separator: ''
+          hide_empty: '0'
+      fields:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: ''
+          exclude: '0'
+          alter:
+            alter_text: '0'
+            text: ''
+            make_link: '0'
+            path: ''
+            absolute: '0'
+            external: '0'
+            replace_spaces: '0'
+            path_case: none
+            trim_whitespace: '0'
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: '0'
+            max_length: ''
+            word_boundary: '0'
+            ellipsis: '0'
+            more_link: '0'
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: '0'
+            trim: '0'
+            preserve_tags: ''
+            html: '0'
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: '0'
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: '1'
+          empty: ''
+          hide_empty: '0'
+          empty_zero: '0'
+          hide_alter_empty: '1'
+          link_to_node: '1'
+          plugin_id: node
+      filters: {  }
+      sorts: {  }
+  page_1:
+    display_plugin: page
+    id: page_1
+    display_title: Page
+    position: '1'
+    display_options:
+      path: node/%
+human_name: test_node_analyze
+module: views
+id: test_node_analyze
+tag: ''
+langcode: en
+label: ''
