<?php declare(strict_types=1); namespace Drupal\FunctionalJavascriptTests\Theme; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; /** * Tests usage of localStorage. * * @group olivero */ final class OliveroAvoidStorageUsingTest extends WebDriverTestBase { /** * {@inheritdoc} */ protected static $modules = ['block', 'node']; /** * {@inheritdoc} */ protected $defaultTheme = 'olivero'; /** * Tests use of localStorage. */ public function testStorageUsing(): void { $this->drupalGet('<front>'); // Check if initial no storage item is written. $this->assertJsCondition("localStorage.getItem('Drupal.olivero.stickyHeaderState') === null", 10000, 'Written not strictly necessary Drupal.olivero.stickyHeaderState to localStorage without consent.'); // Resize and scroll to show stickyHeaderToggleButton. $session = $this->getSession(); $session->resizeWindow(1280, 1024); $session->executeScript('window.scrollTo(0, 500);'); // Click stickyHeaderToggleButton. $this->getSession()->getPage()->find('css', '.sticky-header-toggle')->click(); // Test if localStorage is set now. $this->assertJsCondition("localStorage.getItem('Drupal.olivero.stickyHeaderState') !== null"); // Click stickyHeaderToggleButton again. $this->getSession()->getPage()->find('css', '.sticky-header-toggle')->click(); // Storage item should be removed now. $this->assertJsCondition("localStorage.getItem('Drupal.olivero.stickyHeaderState') === null", 10000, 'Storage item Drupal.olivero.stickyHeaderState should be removed.'); } }