diff --git a/core/modules/help/src/Tests/HelpDependenciesTest.php b/core/modules/help/src/Tests/HelpDependenciesTest.php
new file mode 100644
index 0000000..801b755
--- /dev/null
+++ b/core/modules/help/src/Tests/HelpDependenciesTest.php
@@ -0,0 +1,128 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\help\Tests\HelpDependenciesTest.
+ */
+
+namespace Drupal\help\Tests;
+
+use Drupal;
+use Drupal\Core\Extension\ExtensionDiscovery;
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Verifies that all modules' help can be displayed.
+ *
+ * This test will fail if a module doesn't have help, or if when it and only
+ * its dependencies are enabled, the help cannot be displayed (usually because
+ * of a route with a missing module dependency).
+ *
+ * @group help
+ */
+class HelpDependenciesTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array.
+   */
+  public static $modules = array('help');
+
+  /**
+   * The admin user that will be created.
+   *
+   * @var \Drupal\Core\Session\AccountInterface
+   */
+  protected $adminUser;
+
+  /**
+   * The module installer.
+   *
+   * @var \Drupal\Core\Extension\ModuleInstallerInterface
+   */
+  protected $moduleInstaller;
+
+  /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * The module information parser.
+   *
+   * @var \Drupal\Core\Extension\InfoParserInterface
+   */
+  protected $infoParser;
+
+  /**
+   * The router builder.
+   *
+   * @var \Drupal\Core\Extension\RouteBuilderInterface
+   */
+  protected $routerBuilder;
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->moduleInstaller = $this->container->get('module_installer');
+    $this->moduleHandler = $this->container->get('module_handler');
+    $this->infoParser = $this->container->get('info_parser');
+    $this->routerBuilder = $this->container->get('router.builder');
+
+    $this->adminUser = $this->drupalCreateUser(array('access administration pages', 'view the administration theme', 'administer modules'));
+  }
+
+  /**
+   * Tests that all help can be displayed.
+   */
+  public function testHelp() {
+    $this->drupalLogin($this->adminUser);
+
+    // Make a list of all the modules that exist, and check their help if they
+    // are not hidden modules or test modules. Also make an exception for the
+    // drupal_system_listing_compatible_test module, which is part of the
+    // Testing profile.
+    $listing = new ExtensionDiscovery(Drupal::root());
+    $modules = $listing->scan('module', FALSE);
+    foreach ($modules as $key => $module) {
+      $info = $this->infoParser->parse($module->getPathname());
+      if ((!isset($info['hidden']) || !$info['hidden']) && $key != 'drupal_system_listing_compatible_test') {
+        $this->verifyHelp($key, $info['name']);
+      }
+    }
+  }
+
+  /**
+   * Verifies that one module's help can be viewed, when installed alone.
+   *
+   * @param string $module
+   *   Machine name of the module to verify.
+   * @param string $name
+   *   Human-readable name fo the module to verify.
+   */
+  protected function verifyHelp($module, $name) {
+    // Install the module, if not already installed.
+    $was_installed = $this->moduleHandler->moduleExists($module);
+    if (!$was_installed) {
+      $was_installed_list = $this->moduleHandler->getModuleList();
+      $this->moduleInstaller->install(array($module));
+    }
+    $this->routerBuilder->rebuild();
+
+    // Check the help: page should load and contain the module's name,
+    // matching the .info.yml file.
+    $this->drupalGet('admin/help/' . $module);
+    $this->assertResponse(200);
+    $this->assertText($name . ' module');
+
+    // Uninstall the module, plus dependencies that were installed.
+    if (!$was_installed) {
+      $now_installed_list = $this->moduleHandler->getModuleList();
+      $new_modules = array_diff_key($now_installed_list, $was_installed_list);
+      $this->moduleInstaller->uninstall(array_keys($new_modules));
+    }
+  }
+}
