function DocumentElement::getText

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/DocumentElement.php \Drupal\Tests\DocumentElement::getText()
  2. 11.x core/tests/Drupal/Tests/DocumentElement.php \Drupal\Tests\DocumentElement::getText()

File

core/tests/Drupal/Tests/DocumentElement.php, line 58

Class

DocumentElement
Document element.

Namespace

Drupal\Tests

Code

public function getText() {
  if ($this->getDriver() instanceof BrowserKitDriver) {
    // Work around https://github.com/minkphp/MinkBrowserKitDriver/issues/153.
    // To simulate what the user sees, it removes:
    // - all text inside the head tags
    // - Drupal settings json.
    $raw_content = preg_replace([
      '@<head>(.+?)</head>@si',
      '@<script type="application/json" data-drupal-selector="drupal-settings-json">([^<]*)</script>@',
    ], '', $this->getContent());
    // Filter out all HTML tags, as they are not visible in a normal browser.
    $text = strip_tags($raw_content);
    // To preserve BC and match \Behat\Mink\Element\Element::getText() include
    // the page title.
    $title_element = $this->find('css', 'title');
    if ($title_element) {
      $text = $title_element->getText() . ' ' . $text;
    }
    // To match what the user sees and \Behat\Mink\Element\Element::getText()
    // decode HTML entities.
    $text = html_entity_decode($text, ENT_QUOTES);
    // To match \Behat\Mink\Element\Element::getText() remove new lines and
    // normalize spaces.
    $text = str_replace("\n", ' ', $text);
    $text = preg_replace('/ {2,}/', ' ', $text);
    return trim($text);
  }
  // If using a real browser fallback to the \Behat\Mink\Element\Element
  // implementation.
  return parent::getText();
}

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