ContextualLinkClickTrait.php

Same filename in other branches
  1. 9 core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php
  2. 8.9.x core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php
  3. 11.x core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php

Namespace

Drupal\Tests\contextual\FunctionalJavascript

File

core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\contextual\FunctionalJavascript;


/**
 * Functions for testing contextual links.
 */
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');");
    }

}

Traits

Title Deprecated Summary
ContextualLinkClickTrait Functions for testing contextual links.

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