protected function WebTestBase::assertNoDuplicateIds

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

Parameters

$message: (optional) A message to display with the assertion. Do not translate messages: use format_string() to embed variables in the message text, not t(). If left blank, a default message will be displayed.

$group: (optional) The group this message is in, which is displayed in a column in test output. Use 'Debug' to indicate this is debugging output. Do not translate this string. Defaults to 'Other'; most tests do not override this default.

$ids_to_skip: An optional array of ids to skip when checking for duplicates. It is always a bug to have duplicate HTML IDs, so this parameter is to enable incremental fixing of core code. Whenever a test passes this parameter, it should add a "todo" comment above the call to this function explaining the legacy bug that the test wishes to ignore and including a link to an issue that is working to fix that legacy bug.

Return value

TRUE on pass, FALSE on fail.

2 calls to WebTestBase::assertNoDuplicateIds()
HTMLIdTest::testHTMLId in drupal/core/modules/system/lib/Drupal/system/Tests/Form/HTMLIdTest.php
Tests that HTML IDs do not get duplicated when form validation fails.
MultiFormTest::testMultiForm in drupal/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php
Tests that pages with the 'page_node_form' included twice work correctly.

File

drupal/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php, line 2908
Definition of Drupal\simpletest\WebTestBase.

Class

WebTestBase
Test case for typical Drupal tests.

Namespace

Drupal\simpletest

Code

protected function assertNoDuplicateIds($message = '', $group = 'Other', $ids_to_skip = array()) {
  $status = TRUE;
  foreach ($this
    ->xpath('//*[@id]') as $element) {
    $id = (string) $element['id'];
    if (isset($seen_ids[$id]) && !in_array($id, $ids_to_skip)) {
      $this
        ->fail(t('The HTML ID %id is unique.', array(
        '%id' => $id,
      )), $group);
      $status = FALSE;
    }
    $seen_ids[$id] = TRUE;
  }
  return $this
    ->assert($status, $message, $group);
}