補足情報(FW/ツールのバージョンなど)
- PHP 7.1
- Laravel 5.6
- docker-compose
- OS X High Sierra
前提・実現したいこと
docker-composeでLaravelの動作環境を構築しました。
問題なく動作するのですが、一点問題が発覚し、ブラウザテストのDuskがコンテナ内で動作せず、
解決のヒントをいただければと思います。
該当のソースコード
docker-compose.yml
yaml
1version: '2' 2 3services: 4 web: 5 build: ./docker-config/php 6 volumes: 7 - .:/var/www 8 depends_on: 9 - mysql 10 11 nginx: 12 image: nginx 13 ports: 14 - "80:80" 15 volumes: 16 - .:/var/www 17 - ./docker-config/nginx/default.conf:/etc/nginx/conf.d/default.conf 18 depends_on: 19 - web 20 21 mysql: 22 image: mysql:5.7 23 environment: 24 MYSQL_DATABASE: development 25 MYSQL_ROOT_USER: root 26 MYSQL_ROOT_PASSWORD: testdb 27 MYSQL_USER: test 28 MYSQL_PASSWORD: testdb 29 volumes: 30 - db-data:/var/lib/mysql 31 32 phpmyadmin: 33 image: phpmyadmin/phpmyadmin 34 environment: 35 - PMA_ARBITRARY=1 36 - PMA_HOST=mysql 37 - PMA_USER=root 38 - PMA_PASSWORD=testdb 39 links: 40 - mysql 41 ports: 42 - 8080:80 43 volumes: 44 - /sessions 45 46 selenium: 47 image: selenium/standalone-chrome 48 ports: 49 - 4444:4444 50 51volumes: 52 db-data: 53 driver: local 54
DuskTestCase.php
php
1<?php 2 3namespace Tests; 4 5use Laravel\Dusk\TestCase as BaseTestCase; 6use Facebook\WebDriver\Chrome\ChromeOptions; 7use Facebook\WebDriver\Remote\RemoteWebDriver; 8use Facebook\WebDriver\Remote\DesiredCapabilities; 9 10abstract class DuskTestCase extends BaseTestCase 11{ 12 use CreatesApplication; 13 14 protected function baseUrl() 15 { 16 return 'http://nginx'; 17 } 18 19 /** 20 * Prepare for Dusk test execution. 21 * 22 * @beforeClass 23 * @return void 24 */ 25 public static function prepare() 26 { 27 //static::startChromeDriver(); 28 } 29 30 /** 31 * Create the RemoteWebDriver instance. 32 * 33 * @return \Facebook\WebDriver\Remote\RemoteWebDriver 34 */ 35 protected function driver() 36 { 37 $options = (new ChromeOptions)->addArguments([ 38 '--disable-gpu', 39 '--headless' 40 ]); 41 42 return RemoteWebDriver::create( 43 'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()->setCapability( 44 ChromeOptions::CAPABILITY, $options 45 ) 46 ); 47 } 48} 49
tests/Browser/ExampleTest.php
php
1<?php 2 3namespace Tests\Browser; 4 5use Tests\DuskTestCase; 6use Laravel\Dusk\Browser; 7use Illuminate\Foundation\Testing\DatabaseMigrations; 8 9class ExampleTest extends DuskTestCase 10{ 11 /** 12 * A basic browser test example. 13 * 14 * @return void 15 */ 16 public function testBasicExample() 17 { 18 $this->browse(function (Browser $browser) { 19 $browser->visit('/') 20 ->assertSee('Laravel'); 21 }); 22 } 23} 24
発生している問題・エラーメッセージ
Time: 3.49 seconds, Memory: 12.00MB There was 1 error: 1) Tests\Browser\ExampleTest::testBasicExample Error: Call to undefined method Facebook\WebDriver\Remote\RemoteWebDriver::getCapabilities() /var/www/vendor/laravel/dusk/src/Browser.php:257 /var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:152 /var/www/vendor/laravel/framework/src/Illuminate/Support/Collection.php:397 /var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:153 /var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:77 /var/www/tests/Browser/ExampleTest.php:21 ERRORS! Tests: 1, Assertions: 1, Errors: 1.
検索でcomposer update facebook/webdriver
を実行すると直るという記事を見つけ試したのですが、同様のエラーが出てしまいました。
参考にしたサイトは以下です。
こちら何かわかる方いましたら、ヒントをいただけますと幸いです
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。