diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md index 8072319b5eaf7..e947361e7fb48 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md @@ -7,6 +7,9 @@ CHANGELOG * Add native return type to `Translator` and to `Application::reset()` * Deprecate the integration of Doctrine annotations, either uninstall the `doctrine/annotations` package or disable the integration by setting `framework.annotations` to `false` * Enable `json_decode_detailed_errors` context for Serializer by default if `kernel.debug` is true and the `seld/jsonlint` package is installed + * Add `DomCrawlerAssertionsTrait::assertAnySelectorTextContains(string $selector, string $text)` + * Add `DomCrawlerAssertionsTrait::assertAnySelectorTextSame(string $selector, string $text)` + * Add `DomCrawlerAssertionsTrait::assertAnySelectorTextNotContains(string $selector, string $text)` 6.3 --- diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php b/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php index 02e3ad848b1ae..a167094614097 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php +++ b/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php @@ -47,6 +47,14 @@ public static function assertSelectorTextContains(string $selector, string $text ), $message); } + public static function assertAnySelectorTextContains(string $selector, string $text, string $message = ''): void + { + self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( + new DomCrawlerConstraint\CrawlerSelectorExists($selector), + new DomCrawlerConstraint\CrawlerAnySelectorTextContains($selector, $text) + ), $message); + } + public static function assertSelectorTextSame(string $selector, string $text, string $message = ''): void { self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( @@ -55,6 +63,14 @@ public static function assertSelectorTextSame(string $selector, string $text, st ), $message); } + public static function assertAnySelectorTextSame(string $selector, string $text, string $message = ''): void + { + self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( + new DomCrawlerConstraint\CrawlerSelectorExists($selector), + new DomCrawlerConstraint\CrawlerAnySelectorTextSame($selector, $text) + ), $message); + } + public static function assertSelectorTextNotContains(string $selector, string $text, string $message = ''): void { self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( @@ -63,6 +79,14 @@ public static function assertSelectorTextNotContains(string $selector, string $t ), $message); } + public static function assertAnySelectorTextNotContains(string $selector, string $text, string $message = ''): void + { + self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( + new DomCrawlerConstraint\CrawlerSelectorExists($selector), + new LogicalNot(new DomCrawlerConstraint\CrawlerAnySelectorTextContains($selector, $text)) + ), $message); + } + public static function assertPageTitleSame(string $expectedTitle, string $message = ''): void { self::assertSelectorTextSame('title', $expectedTitle, $message); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php index 802f676070519..fbaa7a02c277d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php @@ -208,6 +208,30 @@ public function testAssertSelectorTextNotContains() $this->getCrawlerTester(new Crawler('

Foo'))->assertSelectorTextNotContains('body > h1', 'Foo'); } + public function testAssertAnySelectorTextContains() + { + $this->getCrawlerTester(new Crawler('