NoJavaScriptAnonymousTest.php

Same filename and directory in other branches
  1. 8.9.x core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php

Namespace

Drupal\Tests\system\Functional\Common

File

core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php

View source
<?php

namespace Drupal\Tests\system\Functional\Common;

use Drupal\node\NodeInterface;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests that anonymous users are not served any JavaScript.
 *
 * This is tested with the core modules that are enabled in the 'standard'
 * profile.
 *
 * @group Common
 */
class NoJavaScriptAnonymousTest extends BrowserTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * {@inheritdoc}
     */
    protected $profile = 'standard';
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // Grant the anonymous user the permission to look at user profiles.
        user_role_grant_permissions('anonymous', [
            'access user profiles',
        ]);
    }
    
    /**
     * Tests that anonymous users are not served any JavaScript.
     */
    public function testNoJavaScript() {
        // Create a node of content type 'article' that is listed on the frontpage.
        $this->drupalCreateNode([
            'type' => 'article',
            'promote' => NodeInterface::PROMOTED,
        ]);
        // Test frontpage.
        $this->drupalGet('');
        $this->assertNoJavaScript();
        // Test node page.
        $this->drupalGet('node/1');
        $this->assertNoJavaScript();
        // Test user profile page.
        $user = $this->drupalCreateUser();
        $this->drupalGet('user/' . $user->id());
        $this->assertNoJavaScript();
    }
    
    /**
     * Passes if no JavaScript is found on the page.
     *
     * @internal
     */
    protected function assertNoJavaScript() : void {
        // Ensure drupalSettings is not set.
        $settings = $this->getDrupalSettings();
        $this->assertEmpty($settings, 'drupalSettings is not set.');
        $this->assertSession()
            ->responseNotMatches('/\\.js/');
    }

}

Classes

Title Deprecated Summary
NoJavaScriptAnonymousTest Tests that anonymous users are not served any JavaScript.

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