trait ContextualLinkClickTrait in Drupal 9
Same name and namespace in other branches
- 8 core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php \Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait
Functions for testing contextual links.
Hierarchy
- trait \Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait
14 files declare their use of ContextualLinkClickTrait
- BlockFormMessagesTest.php in core/
modules/ layout_builder/ tests/ src/ FunctionalJavascript/ BlockFormMessagesTest.php - ContentPreviewToggleTest.php in core/
modules/ layout_builder/ tests/ src/ FunctionalJavascript/ ContentPreviewToggleTest.php - ContextualLinksTest.php in core/
modules/ node/ tests/ src/ FunctionalJavascript/ ContextualLinksTest.php - FieldTest.php in core/
modules/ quickedit/ tests/ src/ FunctionalJavascript/ FieldTest.php - InlineBlockTestBase.php in core/
modules/ layout_builder/ tests/ src/ FunctionalJavascript/ InlineBlockTestBase.php
File
- core/
modules/ contextual/ tests/ src/ FunctionalJavascript/ ContextualLinkClickTrait.php, line 8
Namespace
Drupal\Tests\contextual\FunctionalJavascriptView source
trait ContextualLinkClickTrait {
/**
* Clicks a contextual link.
*
* @param string $selector
* The selector for the element that contains the contextual link.
* @param string $link_locator
* The link id, title, or text.
* @param bool $force_visible
* If true then the button will be forced to visible so it can be clicked.
*/
protected function clickContextualLink($selector, $link_locator, $force_visible = TRUE) {
$page = $this
->getSession()
->getPage();
$page
->waitFor(10, function () use ($page, $selector) {
return $page
->find('css', "{$selector} .contextual-links");
});
if ($force_visible) {
$this
->toggleContextualTriggerVisibility($selector);
}
$element = $this
->getSession()
->getPage()
->find('css', $selector);
$element
->find('css', '.contextual button')
->press();
$element
->findLink($link_locator)
->click();
if ($force_visible) {
$this
->toggleContextualTriggerVisibility($selector);
}
}
/**
* Toggles the visibility of a contextual trigger.
*
* @param string $selector
* The selector for the element that contains the contextual link.
*/
protected function toggleContextualTriggerVisibility($selector) {
// Hovering over the element itself with should be enough, but does not
// work. Manually remove the visually-hidden class.
$this
->getSession()
->executeScript("jQuery('{$selector} .contextual .trigger').toggleClass('visually-hidden');");
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContextualLinkClickTrait:: |
protected | function | Clicks a contextual link. | 1 |
ContextualLinkClickTrait:: |
protected | function | Toggles the visibility of a contextual trigger. |