function OffCanvasTest::testOffCanvasLinks
Same name in other branches
- 9 core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php \Drupal\Tests\system\FunctionalJavascript\OffCanvasTest::testOffCanvasLinks()
- 8.9.x core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php \Drupal\Tests\system\FunctionalJavascript\OffCanvasTest::testOffCanvasLinks()
- 10 core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php \Drupal\Tests\system\FunctionalJavascript\OffCanvasTest::testOffCanvasLinks()
Tests that non-contextual links will work with the off-canvas dialog.
@dataProvider themeDataProvider
File
-
core/
modules/ system/ tests/ src/ FunctionalJavascript/ OffCanvasTest.php, line 40
Class
- OffCanvasTest
- Tests the off-canvas dialog functionality.
Namespace
Drupal\Tests\system\FunctionalJavascriptCode
public function testOffCanvasLinks($theme) : void {
$this->enableTheme($theme);
$this->drupalGet('/off-canvas-test-links');
$page = $this->getSession()
->getPage();
$web_assert = $this->assertSession();
// Confirm touchevents detection is loaded with Off Canvas assets.
$this->assertNotNull($web_assert->waitForElement('css', 'html.no-touchevents'));
// Make sure off-canvas dialog is on page when first loaded.
$web_assert->elementNotExists('css', '#drupal-off-canvas');
// Check opening and closing with two separate links.
// Make sure tray updates to new content.
// Check the first link again to make sure the empty title class is
// removed.
foreach ([
1,
2,
1,
] as $link_index) {
$this->assertOffCanvasDialog($link_index, 'side');
$header_text = $this->getOffCanvasDialog()
->find('css', '.ui-dialog-title')
->getText();
if ($link_index === 2) {
// Check no title behavior.
$web_assert->elementExists('css', '.ui-dialog-empty-title');
$this->assertEquals(' ', $header_text);
$style = $page->find('css', '.ui-dialog-off-canvas')
->getAttribute('style');
$this->assertStringContainsString('width: 555px;', $style, 'Dialog width respected.');
$page->clickLink("Open side panel 1");
$this->waitForOffCanvasToOpen();
$style = $page->find('css', '.ui-dialog-off-canvas')
->getAttribute('style');
$this->assertStringNotContainsString('width: 555px;', $style, 'Dialog width reset to default.');
}
else {
// Check that header is correct.
$this->assertEquals("Thing {$link_index}", $header_text);
$web_assert->elementNotExists('css', '.ui-dialog-empty-title');
}
}
// Test the off_canvas_top tray.
foreach ([
1,
2,
] as $link_index) {
$this->assertOffCanvasDialog($link_index, 'top');
$style = $page->find('css', '.ui-dialog-off-canvas')
->getAttribute('style');
if ($link_index === 1) {
$this->assertStringContainsString('height: auto;', $style);
}
else {
$this->assertStringContainsString('height: 421px;', $style);
}
}
// Ensure an off-canvas link opened from inside the off-canvas dialog will
// work.
$this->drupalGet('/off-canvas-test-links');
$page->clickLink('Display more links!');
$this->waitForOffCanvasToOpen();
$web_assert->linkExists('Off_canvas link!');
// Click off-canvas link inside off-canvas dialog
$page->clickLink('Off_canvas link!');
$this->waitForOffCanvasToOpen();
$web_assert->elementTextContains('css', '.ui-dialog[aria-describedby="drupal-off-canvas"]', 'Thing 2 says hello');
// Ensure an off-canvas link opened from inside the off-canvas dialog will
// work after another dialog has been opened.
$this->drupalGet('/off-canvas-test-links');
$page->clickLink("Open side panel 1");
$this->waitForOffCanvasToOpen();
$page->clickLink('Display more links!');
$this->waitForOffCanvasToOpen();
$web_assert->linkExists('Off_canvas link!');
// Click off-canvas link inside off-canvas dialog
$page->clickLink('Off_canvas link!');
$this->waitForOffCanvasToOpen();
$web_assert->elementTextContains('css', '.ui-dialog[aria-describedby="drupal-off-canvas"]', 'Thing 2 says hello');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.