Laravel Dusk で簡単に自動ブラウザテストをやってみる
Contents
Laravel5.5 自動ブラウザテスト Dusk
Laravel/Duskで結構簡単にブラウザテストができたのでブログ書きます。
laravel5.5インストール済み、artisanコマンド使用できる環境の前提で進めます。
インストール
composerから設定
composer require --dev laravel/dusk:"^2.0"
※最新版はlaravel5.5と合わないので注意
インストール
php artisan dusk:install
特にエラーなく、tests/配下にBrowserができていれば成功
ServiceProviderに登録する
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Laravel\Dusk\DuskServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
}
}
テストケースを作成
artisanコマンドから作成します
$ php artisan dusk:make ExampleTest
するとテストのひな型(tests/Browser/ExampleTest.php)ができます 。
テストを書く (サンプル)
コマンドから生成したひな型(tests/Browser/ExampleTest.php)にテストを書いていきます。
利用可能なアサーションはこちらを参照してください。
?php
namespace Tests\Browser;
use App\User;
use Tests\DuskTestCase;
use Laravel\Dusk\Chrome;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleTest extends DuskTestCase
{
use DatabaseMigrations;
/**
* A basic browser test example.
*
* @return void
*/
public function testBasicExample()
{
$user = factory(User::class)->create([
'email' => '[email protected]',
]);
$this->browse(function ($browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home')
->assertTtile('Laravel')
->assertSee('Laravel');
});
}
}
テスト実行する
php artisan serve
WEBサーバー立てれればxammpとかでもok。今回はaritsanコマンドから
テストにDBデータが必要ならDBも起動させる
以下コマンドでテスト実行
php artisan dusk
テストが通ればOK出してくれます。
# php artisan dusk
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.
[17108:13428:1116/151145.185:ERROR:gpu_process_transport_factory.cc(980)] Lost UI shared context.
DevTools listening on ws://127.0.0.1:12097/devtools/browser/43d31ebf-0eaf-4c69-a7de-8856ea4f468b
. 1 / 1 (100%)
Time: 13.47 seconds, Memory: 10.00MB
OK (1 test, 3 assertions)
自動でブラウザを起動させる場合
※Chromeが必要です
デフォルトではCUIのみですが、テスト実行と共にブラウザを自動で起動させてテストしたい場合は、
tests/DuskTestCase.php 内の
DuskTestCase->driver()内で設定されている
option “–headless” をコメントアウトするとブラウザが自動で起動し、テストが実行されます。
<?php
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
//'--headless'
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
ディスカッション
ピンバック & トラックバック一覧
[…] ↓Duskのインストール、自動テストの実行等についてはこちらから Laravel5.5 Duskのインストール/実行方法 […]