You are here

trait ContextualLinkClickTrait in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php \Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait

Functions for testing contextual links.

Hierarchy

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

... See full list

File

core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinkClickTrait.php, line 8

Namespace

Drupal\Tests\contextual\FunctionalJavascript
View 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

Namesort descending Modifiers Type Description Overrides
ContextualLinkClickTrait::clickContextualLink protected function Clicks a contextual link. 1
ContextualLinkClickTrait::toggleContextualTriggerVisibility protected function Toggles the visibility of a contextual trigger.