Skip to content

🍹 A lightweight package for testing Laravel views in isolation

License

Notifications You must be signed in to change notification settings

SimoTod/laravel-mojito

 
 

Repository files navigation

Mojito example

Build Status Total Downloads Latest Version License

About Mojito

Mojito was created by, and is maintained by Nuno Maduro, and is lightweight package for testing Laravel views in isolation.

Installation & Usage

Requires PHP 7.2+

Require Mojito using Composer:

composer require nunomaduro/laravel-mojito --dev

How to use:

class WelcomeTest extends TestCase
{
    // First, add the `InteractsWithViews` trait to your test case class.
    use InteractsWithViews; 

    public function testDisplaysLaravel()
    {
        // Then, get started with Mojito using the `assertView` method.
        $this->assertView('welcome')->contains('Laravel');
    }
}

Optionally, you can also perform view testing from your HTTP Tests:

class WelcomeTest extends TestCase
{
    public function testDisplaysLaravel()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    
        $response->assertView()->contains('Laravel');
    }
}

contains

Asserts that the view contains the given text.

$this->assertView('button')->contains('Click me');
$this->assertView('button', ['submitText' => 'Cancel'])->contains('Cancel');

$this->assertView('welcome')->in('title')->contains('Laravel');
$this->assertView('welcome')->in('.content')->contains('Nova');

has

Asserts that the view has the given selector.

$this->assertView('button')->has('button');

$this->assertView('welcome')->has('head');
$this->assertView('welcome')->in('body')->has('.content');

hasAttribute

Asserts that the view root element has the given attribute value.

$this->assertView('button')->hasAttribute('attribute', 'value');
$this->assertView('button')->hasAttribute('data-attribute', 'value');

$this->assertView('welcome')->hasAttribute('lang', 'en');
$this->assertView('welcome')->in('head')->first('meta')->hasAttribute('charset','utf-8');

hasClass

Asserts that the view has an element with the given class.

$this->assertView('button')->hasClass('btn');

$this->assertView('welcome')->in('.content')->at('div > p', 0)->hasClass('title');

hasLink

Asserts that the view has an element with the given link.

$this->assertView('button')->hasLink(route('welcome'));

$this->assertView('welcome')->in('.links')->first('a')->hasLink('https://laravel.com/docs');
$this->assertView('welcome')->in('.links')->at('a', 6)->hasLink('https://vapor.laravel.com');
$this->assertView('welcome')->in('.links')->last('a')->hasLink('https://github.com/laravel/laravel');

Macroable

Fell free to add your own macros to the ViewAssertion::class.

use NunoMaduro\LaravelMojito\ViewAssertion;

// Within a service provider:
ViewAssertion::macro('hasCharset', function (string $charset) {
    return $this->in('head')->first('meta')->hasAttribute('charset', $charset);
});

// In your tests:
$this->assertView('welcome')->hasCharset('utf-8');

Contributing

Thank you for considering to contribute to Mojito. All the contribution guidelines are mentioned here.

You can have a look at the CHANGELOG for constant updates & detailed information about the changes. You can also follow the twitter account for latest announcements or just come say hi!: @enunomaduro

Support the development

Do you like this project? Support it by donating

License

Mojito is an open-sourced software licensed under the MIT license.

About

🍹 A lightweight package for testing Laravel views in isolation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%