LoginSignup
0
0

Laravelでブラウザテストを試す

Last updated at Posted at 2023-06-04

主な記載内容

Laravel10でlaravel breezeのログインの機能のテストをLaravel duskを使って行ってみる。

準備

composer create-project --prefer-dist laravel/laravel プロジェクト名

(breeze)
php artisan breeze:install
php artisan migrate
npm install
npm run dev

(dusk)
composer require --dev laravel/dusk

php artisan dusk:install

php artisan dusk:make LoginTest

データベースの設定
.envファイル

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889 // MySQLポート
DB_DATABASE=your-database-name
DB_USERNAME=root
DB_PASSWORD=root

テスト実施

以下の画面をテスト

php artisan serve
http://127.0.0.1:8000/login
スクリーンショット 2023-06-04 10.25.25.png

※php artisan serveでテストするとき、.envを以下のように修正
APP_URL=http://127.0.0.1:8000

テスト作成

php artisan dusk:make LoginTest

このコマンドを実行すると、tests/Browser ディレクトリ内に LoginTest.php ファイルが作成される。
このファイル内に具体的なテストケースを記述していくことで、Webアプリケーションのブラウザベースのテストを行うことができる。

以下、ログインで、ユーザ名、パスワードを入力し、ページ遷移するかどうかのテスト

<?php

namespace Tests\Browser;

use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{
    use DatabaseMigrations;

    /**
     * ユーザーがログインページにアクセスしてログインするテスト
     *
     * @return void
     */
    public function testUserCanLoginWithCorrectCredentials()
    {
        $user = User::factory()->create([
            'email' => 'testuser@example.com',
            'password' => bcrypt('password'),
        ]);

        $this->browse(function (Browser $browser) use ($user) {
            $browser->visit('/login')
                ->waitFor('button[type="submit"]', 5)
                ->type('email', $user->email)
                ->type('password', 'password')
                ->click('button[type="submit"]')
                ->assertPathIs('/dashboard');
        });
    }
}

テスト実行

php artisan dusk

以下のように結果が出る。
(下記は、MAMPを使用し、tests/Browserの直下に2つファイルがある例、上記以外にもう一つある)

apple@appurunoMacBook-Pro testRusk % php artisan dusk
PHPUnit 10.1.3 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.0
Configuration: /Applications/MAMP/htdocs/testRusk/phpunit.dusk.xml

..                                                                  2 / 2 (100%)

Time: 00:05.270, Memory: 34.50 MB

OK (2 tests, 2 assertions)

Laravelでのテスト

Laravelでのテストは通常、testsディレクトリに格納され、その中にはFeature、Unit、そしてBrowserという3つのサブディレクトリが存在する。
今回行ったのは、Browserで対応したもの。

まとめ

Laravelでのテストは簡易にできるということがわかったので、念の為記載した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0