Skip to content

Latest commit

 

History

History
198 lines (133 loc) · 5.86 KB

plugins.md

File metadata and controls

198 lines (133 loc) · 5.86 KB
title description
Plugins
In this section, we will discuss the official and community developed plugins that we endorse. Plugins primarily offer namespaced functions, console commands, custom expectations, and additional command-line options to augment the default Pest experience.

Plugins

In this section, we will discuss the official and community developed plugins that we endorse. Plugins primarily offer namespaced functions, console commands, custom expectations, and additional command-line options to augment the default Pest experience.

If you are a plugin developer, please consult our documentation on creating plugins for more information on how to create Pest plugins.

The following plugins are maintained by the Pest team:


Faker

Source code: github.com/pestphp/pest-plugin-faker

To start using Pest's Faker plugin, you need to require the plugin via Composer.

composer require pestphp/pest-plugin-faker --dev

After installing the plugin, you may utilize the namespaced fake function to generate fake data for your tests.

use function Pest\Faker\fake;

it('generates a name', function () {
    $name = fake()->name; // random name...

    //
});

You can also designate the "locale" that should be utilized by the fake() function by providing the locale to the function.

use function Pest\Faker\fake;

it('generates a portuguese name', function () {
    $name = fake('pt_PT')->name; // Nuno Maduro

    //
});

To learn more about Faker, including comprehensive details about the API it provides, please consult its official documentation.


Laravel

Source code: github.com/pestphp/pest-plugin-laravel

To start using Pest's Laravel plugin, you need to require this plugin via Composer.

composer require pestphp/pest-plugin-laravel --dev

This plugin adds additional Artisan commands and functions to the default Pest installation. For example, to generate a new test in the tests/Feature directory, you can now utilize the pest:test Artisan command.

php artisan pest:test UsersTest

You may provide the --unit option when creating a test to place the test in the tests/Unit directory.

php artisan pest:test UsersTest --unit

Executing the pest:dataset Artisan command will create a fresh dataset in the tests/Datasets directory.

php artisan pest:dataset Emails

As you may know, Laravel provides a variety of assertions you can take advantage of in your feature tests. When using Pest's Laravel plugin, you may access all of those assertions as you typically would.

it('has a welcome page', function () {
    $this->get('/')->assertStatus(200);
});

In addition, with the assistance of this plugin, it is possible for you to bypass the $this variable while using namespaced functions such as actingAs, get, post and delete.

use function Pest\Laravel\{get};

it('has a welcome page', function () {
    get('/')->assertStatus(200);
    // same as $this->get('/')...
});

To illustrate this convenient feature using another example, we can write a test acting as an authenticated user accessing the restricted dashboard page.

use App\Models\User;
use function Pest\Laravel\{actingAs};

test('authenticated user can access the dashboard', function () {
    $user = User::factory()->create();

    actingAs($user)->get('/dashboard')
        ->assertStatus(200);
});

As you may expect, all of the assertions that were previously accessible via $this-> are available as namespace functions.

use function Pest\Laravel\{actingAs, get, post, delete, ...};

You can find the full testing documentation on the Laravel website: laravel.com/docs/11.x/testing.


Livewire

Source code: github.com/pestphp/pest-plugin-livewire

To install Pest's Livewire plugin, you need to require the plugin via Composer.

composer require pestphp/pest-plugin-livewire --dev

After installing the plugin, you may use the livewire namespaced function to access your Livewire components.

use function Pest\Livewire\livewire;

it('can be incremented', function () {
    livewire(Counter::class)
        ->call('increment')
        ->assertSee(1);
});

it('can be decremented', function () {
    livewire(Counter::class)
        ->call('decrement')
        ->assertSee(-1);
});

Watch

Source code: github.com/pestphp/pest-plugin-watch

To install Pest's "watch" plugin, you need to require the plugin via Composer.

composer require pestphp/pest-plugin-watch --dev

Make sure you also install fswatch so Pest can monitor when a file changes.

Once both the plugin and fswatch are installed, you will be able to use the --watch option when running Pest. This option instructs Pest to monitor your application and automatically re-run your tests when you change files within a list of specified directories.

pest --watch

By default, the plugin monitors the following directories.

tests/
app/
src/

To customize the watched directories, supply a comma-separated list of directories (relative to your application root) to the --watch flag.

pest --watch=app,routes,tests

In this section, we have seen how plugins can enhance your Pest experience. Now, let's see how you can manage your team's tasks and responsibilities using Pest: Team Management