DEV Community

David Carr
David Carr

Posted on • Originally published at dcblog.dev on

Testing Blade components in Laravel

Laravel provides a range of methods to test parts of the framework, one of which is called blade() which allows you to test blade components work as expected.

Let's take a simple blade component:


@props([
    'type' => 'submit'
])

<div>
    <button type="{{ $type }}" {{ $attributes->merge(['class' => "btn btn-blue"]) }}>
        {{ $slot }}
    </button>
</div>

Enter fullscreen mode Exit fullscreen mode

this creates a button with a type of submit by default which can be changed by using type="button" when calling the component:


<button type="button">Submit</button>
Enter fullscreen mode Exit fullscreen mode

Create a test to confirm the button contains Submit text:


/ **@test** /
public function button_can_submit(): void
{
    $this->blade('<x-form.button>Submit</x-form.button>')
    ->assertSee('Submit');
}
Enter fullscreen mode Exit fullscreen mode

The test passes since the button does contain Submit.

Next test the type can be changed from the default of submit to button:


/ **@test** /
public function button_acts_as_a_button(): void
{
    $this->blade('<x-button type="button">Submit</x-button>')
    ->assertSee('type="button"', false);
}
Enter fullscreen mode Exit fullscreen mode

In order to test the HTML type="button" the assertSee method needs to stop escaping the markup, this is down by passing false as a second param.

As you can see testing blade components is simple to do, let's do a final test to test the class 'btn btn-blue' exists


/ **@test** /
public function button_has_class(): void
{
    $this->blade('<x-button>Submit</x-button>')
    ->assertSee('btn btn-blue');
}
Enter fullscreen mode Exit fullscreen mode

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs