AssetAggregationAcrossPagesTest.php

Same filename in other branches
  1. 10 core/profiles/demo_umami/tests/src/FunctionalJavascript/AssetAggregationAcrossPagesTest.php

Namespace

Drupal\Tests\demo_umami\FunctionalJavascript

File

core/profiles/demo_umami/tests/src/FunctionalJavascript/AssetAggregationAcrossPagesTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\demo_umami\FunctionalJavascript;

use Drupal\FunctionalJavascriptTests\PerformanceTestBase;

/**
 * Tests demo_umami profile performance.
 *
 * @group #slow
 */
class AssetAggregationAcrossPagesTest extends PerformanceTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected $profile = 'demo_umami';
    
    /**
     * Checks the asset requests made when the front and recipe pages are visited.
     */
    public function testFrontAndRecipesPages() : void {
        $performance_data = $this->collectPerformanceData(function () {
            $this->doRequests();
        }, 'umamiFrontAndRecipePages');
        $expected = [
            'ScriptCount' => 1,
            'ScriptBytes' => 11700,
            'StylesheetCount' => 6,
            'StylesheetBytes' => 124450,
        ];
        $this->assertMetrics($expected, $performance_data);
    }
    
    /**
     * Checks the asset requests made when the front and recipe pages are visited.
     */
    public function testFrontAndRecipesPagesAuthenticated() : void {
        $user = $this->createUser();
        $this->drupalLogin($user);
        sleep(2);
        $performance_data = $this->collectPerformanceData(function () {
            $this->doRequests();
        }, 'umamiFrontAndRecipePagesAuthenticated');
        $expected = [
            'ScriptCount' => 2,
            'ScriptBytes' => 249200,
            'StylesheetCount' => 6,
        ];
        $this->assertMetrics($expected, $performance_data);
    }
    
    /**
     * Performs a common set of requests so the above test methods stay in sync.
     */
    protected function doRequests() : void {
        $this->drupalGet('<front>');
        // Give additional time for the request and all assets to be returned
        // before making the next request.
        sleep(2);
        $this->drupalGet('articles');
        sleep(2);
        $this->drupalGet('recipes');
        sleep(2);
        $this->drupalGet('recipes/deep-mediterranean-quiche');
    }

}

Classes

Title Deprecated Summary
AssetAggregationAcrossPagesTest Tests demo_umami profile performance.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.