@@ -114,11 +114,11 @@ public function test_assert_doesnt_match_selector_fails(): void
114114
115115 /*
116116 |--------------------------------------------------------------------------
117- | Assert Count
117+ | Assert Elements Count
118118 |--------------------------------------------------------------------------
119119 */
120120
121- public function test_assert_count_comparisons_pass (): void
121+ public function test_elements_assert_count_comparisons_pass (): void
122122 {
123123 $ assertable = $ this ->getAssertableElement (<<<'HTML'
124124 <ul>
@@ -148,8 +148,8 @@ public function test_assert_count_comparisons_pass(): void
148148 $ assertable ->assertNumberOfElements ('li ' , '<= ' , 4 );
149149 }
150150
151- #[DataProvider('assert_count_comparisons_fail_data_provider ' )]
152- public function test_assert_count_comparisons_fail (string $ selector , string $ comparison , int $ expected , string $ message ): void
151+ #[DataProvider('assert_elements_count_comparisons_fail_data_provider ' )]
152+ public function test_elements_assert_count_comparisons_fail (string $ selector , string $ comparison , int $ expected , string $ message ): void
153153 {
154154 $ this ->expectException (AssertionFailedError::class);
155155 $ this ->expectExceptionMessage ($ message );
@@ -173,7 +173,7 @@ public function test_assert_count_comparisons_fail(string $selector, string $com
173173 };
174174 }
175175
176- public static function assert_count_comparisons_fail_data_provider (): iterable
176+ public static function assert_elements_count_comparisons_fail_data_provider (): iterable
177177 {
178178 yield 'equals ' => [
179179 'li ' , '= ' , 1 , "The element [ul] doesn't have exactly [1] elements matching the given selector [li]. " ,
@@ -200,6 +200,37 @@ public static function assert_count_comparisons_fail_data_provider(): iterable
200200 ];
201201 }
202202
203+ /*
204+ |--------------------------------------------------------------------------
205+ | Assert Elements Present/Missing
206+ |--------------------------------------------------------------------------
207+ */
208+
209+ public function test_assert_elements_present_missing_pass (): void
210+ {
211+ $ this ->getAssertableElement ('<ul><li>Foo</li></ul> ' )
212+ ->assertElementsPresent ('li ' )
213+ ->assertElementsMissing ('p ' );
214+ }
215+
216+ public function test_assert_elements_present_fails (): void
217+ {
218+ $ this ->expectException (AssertionFailedError::class);
219+ $ this ->expectExceptionMessage ("The element [ul] doesn't have one or more elements matching the given selector [p]. " );
220+
221+ $ this ->getAssertableElement ('<ul><li>Foo</li></ul> ' )
222+ ->assertElementsPresent ('p ' );
223+ }
224+
225+ public function test_assert_elements_missing_fails (): void
226+ {
227+ $ this ->expectException (AssertionFailedError::class);
228+ $ this ->expectExceptionMessage ('The element [ul] has one or more elements matching the given selector [li]. ' );
229+
230+ $ this ->getAssertableElement ('<ul><li>Foo</li></ul> ' )
231+ ->assertElementsMissing ('li ' );
232+ }
233+
203234 /*
204235 |--------------------------------------------------------------------------
205236 | Assert Text
0 commit comments