Targeted content assertions using CSS selector expressions

1.3.1 2023-11-23 06:55 UTC

This package is auto-updated.

Last update: 2024-05-23 10:06:58 UTC


Latest Version on Packagist Supported PHP Version Software License Build Code Coverage

Targeted content assertions using CSS selector expressions.

Laravel's built-in assertSee is useful, but has some limitations:

  1. It makes a string match against the whole document, and could produce false positives.
  2. It is hard to assert if specific items have been correctly set (page titles, input labels, etc)
  3. When the assertion fails, it outputs the whole HTML document to the console.

This package provides a collection of additional assertions available on Laravel's TestResponse to help target specific elements/attributes and improve message on failure.


assertSelectorContains($selector, $value)
assertSelectorDoesNotContain($selector, $value)

assertSelectorAttributeExists($selector, $attribute)
assertSelectorAttributeDoesNotExist($selector, $attribute)

assertSelectorAttributeEquals($selector, $attribute, $value)
assertSelectorAttributeDoesNotEqual($selector, $attribute, $value)

assertSelectorAttributeContains($selector, $attribute, $value)
assertSelectorAttributeDoesNotContain($selector, $attribute, $value)

So, if you want to make sure that you are correctly setting the document title:

$response->assertSelectorContains('title', 'Welcome');

If you want to assert that a label has been set for a specific form input:


Or if a specific input has been set with the correct initial value:

$response->assertSelectorAttributeEquals('input[name=display_name]', 'value', 'SavvyWombat');


This package is available using Composer.

composer require --dev savvywombat/laravel-assert-selector-contains


namespace Tests\Feature;

use SavvyWombat\LaravelAssertSelectorContains\AssertsWithSelectors;
use Tests\TestCase;

class ExampleTest extends TestCase
  use AssertsWithSelectors;

  public function testDocumentTitleIsCorrect(): void
    $response = $this->get('/');
    $response->assertSelectorContains('title', 'Welcome');


This package was inspired by a blog post from Liam Hammett:

Laravel Testing CSS Selector Assertion Macros


Please report issues using the GitHub issue tracker. You are also welcome to fork the repository and submit a pull request.


This package is licensed under The MIT License (MIT).