_ Laravel5.4+php5.6でduskをセットアップする
Laravel5.4+php5.6の環境にdusk入れるメモです。
公式をはじめ、詳しく導入手順を書いてあるのですが、いろいろと上手くいかない点があったのでメモ・・・(._.)φ
- phpのバージョン問題
公式の導入手順ではインストール時に以下をしろと書いてあります。
composer require --dev laravel/dusk
しかし、現在duskの最新は2.0系で、これは(正確には依存パッケージが)php7.1.3以上を必要とします。そのため以下のエラーが出ます。
Problem 1
- laravel/dusk v2.0.0 requires illuminate/support ~5.5 -> satisfiable by illuminate/support[v5.5.0, v5.5.16...
:
- illuminate/support v5.7.9 requires php ^7.1.3 -> your PHP version (5.6.37) does not satisfy that requirement.
dusk本体ではなく、依存関係のあるパッケージがphp7.1.3を要求するようです。
そこで、duskのバージョンを指定して導入します。
composer require --dev laravel/dusk:~1.0
- $this->app->environment()問題
次に、app/Providers/AppServiceProvider.phpに以下を追加するとあります。
1
2
3
| if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
|
しかし、何故か手元の5.4.36では$this->app->environment()という関数がありません。そこで、localとtestingをそれぞれの関数でチェックするように書き換えました。
1
2
3
| if (app()->isLocal() and app()->runningUnitTests()) {
$this->app->register(DuskServiceProvider::class);
}
|
- artisanコマンド登録問題
さらに、テスト実装のディレクトリ構造を生成するため、artisan duke:installを実行しろとあります。しかしこれがまた以下のエラーが出て実行できません。
>php artisan dusk:install
There are no commands defined in the "dusk" namespace.
artisan listなどしてみると、コマンドが登録されていないようです。仕方が無いので、手動でapp/console/kernel.phpに追記して登録します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Laravel\Dusk\Console\DuskCommand;
use Laravel\Dusk\Console\InstallCommand;
use Laravel\Dusk\Console\MakeCommand;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
DuskCommand::class,
InstallCommand::class,
MakeCommand::class,
];
:
|
これでコマンドが通るようになりました。
>php artisan dusk:install
Dusk scaffolding installed successfully.
- TTY mode is not supported on Windows platform.問題
テストを実行しようとすると、
TTY mode is not supported on Windows platform.
というメッセージが出て実行されません。
これは、こちらのページを参考に、ソースを修正します。
chromeの実行は、公式サイトにも書かれているChromeDriverを落としてきて、ファイル名を変更して、vendor\laravel\dusk\bin\chromedriver-win.exeに置きます。
すると、php artisan dusk で自動的にchromeが立ち上がり、画面遷移しながら試験を実施してくれます。すごーい(笑)
でも、昔に比べてパッケージ管理が発達してしているのに、どうしてこういう違いが出てくるんでしょうね・・・。
ドキュメントによると「(ダースク:夕暮れ)」だそうです。ということはこれはダスキンではなくて「ダースキン」?(そんなわけはない...)
|
Category: [
Linux] - 21:28:03