function MultiFormTest::assertNoDuplicateIds

Asserts that each HTML ID is used for just a single element on the page.

Parameters

string $message: (optional) A message to display with the assertion.

1 call to MultiFormTest::assertNoDuplicateIds()
MultiFormTest::testMultiForm in core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php
Tests that pages with the 'node_page_form' included twice work correctly.

File

core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php, line 122

Class

MultiFormTest
Tests that AJAX-enabled forms work when multiple instances of the same form are on a page.

Namespace

Drupal\FunctionalJavascriptTests\Ajax

Code

protected function assertNoDuplicateIds($message = '') {
  $args = [
    '@url' => $this->getUrl(),
  ];
  if (!$elements = $this->xpath('//*[@id]')) {
    $this->fail(new FormattableMarkup('The page @url contains no HTML IDs.', $args));
    return;
  }
  $message = $message ?: new FormattableMarkup('The page @url does not contain duplicate HTML IDs', $args);
  $seen_ids = [];
  foreach ($elements as $element) {
    $id = $element->getAttribute('id');
    if (isset($seen_ids[$id])) {
      $this->fail($message);
      return;
    }
    $seen_ids[$id] = TRUE;
  }
  $this->assertTrue(TRUE, $message);
}

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