Skip to content
Snippets Groups Projects
Verified Commit 5a89db6f 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
parent b3c0ee60
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