<?php namespace Tests; use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; use Illuminate\Foundation\Testing\DatabaseMigrations; use Laravel\Dusk\Browser; use Laravel\Dusk\Page; use Laravel\Dusk\TestCase as BaseTestCase; Browser::macro('assertPageIs', function ($page) { if (! $page instanceof Page) { $page = new $page(); } // waiting for location before asserting, because window.location.pathname may be updated asynchronously return $this->waitForLocation($page->url())->assertPathIs($page->url()); }); abstract class DuskTestCase extends BaseTestCase { use CreatesApplication; use DatabaseMigrations; use TestHelpers; /** * Prepare for Dusk test execution. * * @beforeClass * * @return void */ public static function prepare() { static::startChromeDriver(); } /** * Create the RemoteWebDriver instance. * * @return \Facebook\WebDriver\Remote\RemoteWebDriver */ protected function driver() { $options = (new ChromeOptions())->addArguments([ '--disable-gpu', '--headless', '--window-size=1920,1080', ]); return RemoteWebDriver::create( 'http://localhost:9515', DesiredCapabilities::chrome()->setCapability( ChromeOptions::CAPABILITY, $options ) ); } }