diff --git a/core/modules/navigation/tests/src/FunctionalJavascript/TopBarPerformanceTest.php b/core/modules/navigation/tests/src/FunctionalJavascript/TopBarPerformanceTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f12ee50a1b259a33f2fa3b8feb560e5cc2bae9a
--- /dev/null
+++ b/core/modules/navigation/tests/src/FunctionalJavascript/TopBarPerformanceTest.php
@@ -0,0 +1,81 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\Tests\navigation\FunctionalJavascript;
+
+use Drupal\Core\Cache\Cache;
+use Drupal\FunctionalJavascriptTests\PerformanceTestBase;
+
+/**
+ * Tests the performance impacts of navigation module.
+ *
+ * Stark is used as the default theme so that this test is not Olivero specific.
+ *
+ * @group navigation
+ */
+class TopBarPerformanceTest extends PerformanceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'navigation',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $profile = 'testing';
+
+  /**
+   * Tests performance for anonymous users is not affected by the Top Bar.
+   */
+  public function testTopBarPerformance(): void {
+    // Request the front page, then immediately clear all object caches, so that
+    // aggregates and image styles are created on disk but otherwise caches are
+    // empty.
+    $this->drupalGet('');
+    // Give time for big pipe placeholders, asset aggregate requests, and post
+    // response tasks to finish processing and write to any caches before
+    // clearing caches again.
+    sleep(2);
+    foreach (Cache::getBins() as $bin) {
+      $bin->deleteAll();
+    }
+
+    // Gather performance data before enabling navigation_top_bar.
+    $performance_data_before_top_bar = $this->collectPerformanceData(function () {
+      $this->drupalGet('');
+    }, 'navigationFrontPageTopBarDisabled');
+
+    // Install navigation_top_bar module.
+    \Drupal::service('module_installer')->install(['navigation_top_bar']);
+
+    // Clear caches to prep for another performance data collect.
+    foreach (Cache::getBins() as $bin) {
+      $bin->deleteAll();
+    }
+
+    // Gather performance data after enabling navigation_top_bar.
+    $performance_data_after_top_bar = $this->collectPerformanceData(function () {
+      $this->drupalGet('');
+    }, 'navigationFrontPageTopBarEnabled');
+
+    // Ensure that there is no change to performance metrics from the Top Bar.
+    // Anonymous users should never see the Top Bar.
+    $this->assertSame($performance_data_before_top_bar->getQueryCount(), $performance_data_after_top_bar->getQueryCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheGetCount(), $performance_data_after_top_bar->getCacheGetCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheSetCount(), $performance_data_after_top_bar->getCacheSetCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheDeleteCount(), $performance_data_after_top_bar->getCacheDeleteCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheTagChecksumCount(), $performance_data_after_top_bar->getCacheTagChecksumCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheTagIsValidCount(), $performance_data_after_top_bar->getCacheTagIsValidCount());
+    $this->assertSame($performance_data_before_top_bar->getCacheTagInvalidationCount(), $performance_data_after_top_bar->getCacheTagInvalidationCount());
+  }
+
+}