function NavigationTopBarTest::testTopBarVisibility
Same name in other branches
- 10 core/modules/navigation/tests/src/Functional/NavigationTopBarTest.php \Drupal\Tests\navigation\Functional\NavigationTopBarTest::testTopBarVisibility()
Tests the top bar visibility.
File
-
core/
modules/ navigation/ tests/ src/ Functional/ NavigationTopBarTest.php, line 79
Class
- NavigationTopBarTest
- Tests the top bar functionality.
Namespace
Drupal\Tests\navigation\FunctionalCode
public function testTopBarVisibility() : void {
// Test page does not include the Top Bar.
$test_page_url = Url::fromRoute('test_page_test.test_page');
$this->verifyDynamicPageCache($test_page_url, 'MISS');
$this->verifyDynamicPageCache($test_page_url, 'HIT');
$this->assertSession()
->elementNotExists('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button");
$this->verifyDynamicPageCache($this->node
->toUrl(), 'MISS');
$this->verifyDynamicPageCache($this->node
->toUrl(), 'HIT');
// Top Bar is not visible if the feature flag module is disabled.
$this->assertSession()
->elementNotExists('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button");
$this->assertSession()
->elementExists('xpath', '//div[@id="block-tabs"]');
\Drupal::service('module_installer')->install([
'navigation_top_bar',
]);
// Test page does not include the Top Bar.
$test_page_url = Url::fromRoute('test_page_test.test_page');
$this->verifyDynamicPageCache($test_page_url, 'MISS');
$this->verifyDynamicPageCache($test_page_url, 'HIT');
$this->assertSession()
->elementNotExists('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button");
// Top Bar is visible once the feature flag module is enabled.
$this->verifyDynamicPageCache($this->node
->toUrl(), 'MISS');
$this->verifyDynamicPageCache($this->node
->toUrl(), 'HIT');
$this->assertSession()
->elementExists('xpath', "(//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button)[1]");
$this->assertSession()
->elementTextEquals('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/a[contains(@class, 'toolbar-button--icon--thin-pencil')]", "Edit");
$this->assertSession()
->elementAttributeContains('xpath', "(//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button)[1]", 'class', 'toolbar-button--icon--dots');
// Find all the dropdown links and check if the top bar is there as well.
$toolbar_links = $this->mink
->getSession()
->getPage()
->find('xpath', '//*[@id="top-bar-page-actions"]/ul');
foreach ($toolbar_links->findAll('css', 'li') as $toolbar_link) {
$this->clickLink($toolbar_link->getText());
$this->assertSession()
->elementExists('xpath', "(//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button)[1]");
$this->assertSession()
->elementAttributeContains('xpath', "(//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button)[1]", 'class', 'toolbar-button--icon--dots');
// Ensure that link to current page is not included in the dropdown.
$url = $this->getSession()
->getCurrentUrl();
$this->assertSession()
->linkByHrefNotExistsExact(parse_url($url, PHP_URL_PATH));
}
// Regular tabs are visible for user that cannot access to navigation.
$this->drupalLogin($this->drupalCreateUser([
'bypass node access',
]));
$this->drupalGet($this->node
->toUrl());
$this->assertSession()
->elementNotExists('xpath', "//div[contains(@class, 'top-bar__content')]/div[contains(@class, 'top-bar__actions')]/button");
$this->assertSession()
->elementExists('xpath', '//div[@id="block-tabs"]');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.