🐡

Laravel Duskのブラウザ統合テストでlaravel-adminの認証を通す

2021/04/24に公開

環境

  • macOSローカルでchromedriver-mac-intelドライバを利用した
  • laravelはv8.0系、laravel-adminはv1.8系を使用

セットアップは Laravel Dusk を参照

実行

./vendor/laravel/dusk/bin/chromedriver-mac-intel

Heasless ChromeDriverを起動する

php artisan --env=testing serve

テスト対象のウェブサーバーを起動

php artisan test tests/Browser

テスト実行

<?php

namespace Tests\Browser;

use App\Models\Administrator;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use Illuminate\Database\Eloquent\Factories\Factory;

class ExampleTest extends DuskTestCase
{
    /**
     * A basic browser test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $class = config('admin.auth.providers.admin.model');
        $admin = Factory::factoryForModel($class)->create();

        $this->browse(function (Browser $browser) use ($admin) {
            $browser->loginAs($admin, config('admin.auth.guard'))
                ->visit('/')
                ->assertSee($admin->name);
        });
    }
}

ログインしてユーザー名が表示されているかを検証するテストコード

ただこれだけではControllerで呼び出している Admin::user() は解決されないので以下でセットする

Admin::guard()->setUser($admin);

Discussion