Skip to content
Snippets Groups Projects
Verified Commit 7dd09dbd authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3444152 by m4olivei, smustgrave: Add test coverage to ensure navigation...

Issue #3444152 by m4olivei, smustgrave: Add test coverage to ensure navigation isn't rendered for users that don't have access

(cherry picked from commit 5a89db6f)
parent 69f22495
No related branches found
No related tags found
No related merge requests found
<?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());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment