diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php
index 4138bea5b5..03dc589ab5 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php
@@ -112,6 +112,27 @@ public function testMigrateUpgradeReviewPage() {
     $available_paths = $this->getAvailablePaths();
     $missing_paths = $this->getMissingPaths();
     $this->assertUpgradePaths($session, $available_paths, $missing_paths);
+
+    // Check there are no errors when a module in noUpgradePaths is not in
+    // the source system tables. Test with a module that is listed in
+    // noUpgradePaths for both Drupal 6 and Drupal 7.
+    $module = 'help';
+    $query = $this->sourceDatabase->delete('system');
+    $query->condition('type', 'module');
+    $query->condition('name', $module);
+    $query->execute();
+
+    // Start the upgrade process.
+    $this->drupalGet('/upgrade');
+    $this->drupalPostForm(NULL, [], t('Continue'));
+    $this->drupalPostForm(NULL, $edits, t('Review upgrade'));
+    $this->drupalPostForm(NULL, [], t('I acknowledge I may lose data. Continue anyway.'));
+
+    // Test the upgrade paths.
+    $available_paths = $this->getAvailablePaths();
+    $available_paths = array_diff($available_paths, [$module]);
+    $missing_paths = $this->getMissingPaths();
+    $this->assertUpgradePaths($session, $available_paths, $missing_paths);
   }
 
   /**
