--> -->

skimemo


skimemo - 日記/2018-11-15/Laravel5.4+php5.6でduskをセットアップする のバックアップ(No.2)


_ Laravel5.4+php5.6でduskをセットアップする

Laravel5.4+php5.6の環境にdusk入れるメモです。

公式をはじめ、詳しく導入手順を書いてあるのですが、いろいろと上手くいかない点があったのでメモ・・・(._.)φ

  1. 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

  2. $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);
     } 

  3. 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.

  4. 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