diff --git a/tests/DuskTestCase.php b/tests/DuskTestCase.php index 1e7a3d4b6..4cde3e963 100644 --- a/tests/DuskTestCase.php +++ b/tests/DuskTestCase.php @@ -2,24 +2,59 @@ namespace Tests; +use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; +use Illuminate\Support\Collection; use Laravel\Dusk\TestCase as BaseTestCase; abstract class DuskTestCase extends BaseTestCase { use CreatesApplication; + /** + * Prepare for Dusk test execution. + * + * @beforeClass + */ + public static function prepare(): void + { + if (! static::runningInSail()) { + static::startChromeDriver(); + } + } + + /** + * Create the RemoteWebDriver instance. + */ protected function driver(): RemoteWebDriver { + $options = (new ChromeOptions)->addArguments(collect([ + $this->shouldStartMaximized() ? '--start-maximized' : '--window-size=1920,1080', + ])->unless($this->hasHeadlessDisabled(), function (Collection $items) { + return $items->merge([ + '--disable-gpu', + '--headless=new', + ]); + })->all()); + return RemoteWebDriver::create( - env('DUSK_DRIVER_URL'), - DesiredCapabilities::chrome() + 'http://localhost:9515', + DesiredCapabilities::chrome()->setCapability( + ChromeOptions::CAPABILITY, + $options + ) ); } + /** + * Determine if the browser window should start maximized. + */ protected function baseUrl() { - return 'https://staging.heyandras.dev'; + $app_url = config('app.url'); + $port = config('app.port'); + + return $app_url.':'.$port; } }