function AssertLegacyTrait::assertNoText
Passes if the page (with HTML stripped) does not contains the text.
Note that stripping HTML tags also removes their attributes, such as the values of text fields.
Parameters
string $text: Plain text to look for.
Deprecated
in drupal:8.2.0 and is removed from drupal:10.0.0. Use
- $this->assertSession()->responseNotContains() for non-HTML responses, like XML or Json.
- $this->assertSession()->pageTextNotContains() for HTML responses. Unlike the deprecated assertNoText(), the passed text should be HTML decoded, exactly as a human sees it in the browser.
See also
https://www.drupal.org/node/3129738
File
-
core/
tests/ Drupal/ FunctionalTests/ AssertLegacyTrait.php, line 116
Class
- AssertLegacyTrait
- Provides convenience methods for assertions in browser tests.
Namespace
Drupal\FunctionalTestsCode
protected function assertNoText($text) {
@trigger_error('AssertLegacyTrait::assertNoText() is deprecated in drupal:8.2.0 and is removed from drupal:10.0.0. Use $this->assertSession()->responseNotContains() or $this->assertSession()->pageTextNotContains() instead. See https://www.drupal.org/node/3129738', E_USER_DEPRECATED);
if (func_num_args() > 1) {
@trigger_error('Calling AssertLegacyTrait::assertNoText() with more than one argument is deprecated in drupal:8.2.0 and the method is removed from drupal:10.0.0. Use $this->assertSession()->responseNotContains() or $this->assertSession()->pageTextNotContains() instead. See https://www.drupal.org/node/3129738', E_USER_DEPRECATED);
}
// Cast MarkupInterface to string.
$text = (string) $text;
$content_type = $this->getSession()
->getResponseHeader('Content-type');
// In case of a Non-HTML response (example: XML) check the original
// response.
if (strpos($content_type, 'html') === FALSE) {
$this->assertSession()
->responseNotContains($text);
}
else {
// Trying to simulate what the user sees, given that it removes all text
// inside the head tags, removes inline JavaScript, fix all HTML entities,
// removes dangerous protocols and filtering out all HTML tags, as they are
// not visible in a normal browser.
$raw_content = preg_replace('@<head>(.+?)</head>@si', '', $this->getSession()
->getPage()
->getContent());
$page_text = Xss::filter($raw_content, []);
$this->assertStringNotContainsString($text, $page_text, "\"{$text}\" not found");
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.