<?php namespace Pterodactyl\Tests\Browser; use Laravel\Dusk\TestCase; use BadMethodCallException; use Tests\CreatesApplication; use Illuminate\Database\Eloquent\Model; use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Illuminate\Foundation\Testing\DatabaseMigrations; abstract class BrowserTestCase extends TestCase { use CreatesApplication, DatabaseMigrations; /** * Setup tests. */ protected function setUp() { // Don't accidentally run the migrations aganist the non-testing database. Ask me // how many times I've accidentally dropped my database... if (env('DB_CONNECTION') !== 'testing') { throw new BadMethodCallException('Cannot call browser tests using the non-testing database connection.'); } parent::setUp(); // Gotta unset this to continue avoiding issues with the validation. Model::unsetEventDispatcher(); } /** * Create the RemoteWebDriver instance. * * @return \Facebook\WebDriver\Remote\RemoteWebDriver */ protected function driver() { $options = (new ChromeOptions)->addArguments([ '--disable-gpu', '--disable-infobars', ]); return RemoteWebDriver::create( 'http://host.pterodactyl.local:4444/wd/hub', DesiredCapabilities::chrome()->setCapability( ChromeOptions::CAPABILITY, $options ) ); } /** * Return an instance of the browser to be used for tests. * * @param \Facebook\WebDriver\Remote\RemoteWebDriver $driver * @return \Pterodactyl\Tests\Browser\PterodactylBrowser */ protected function newBrowser($driver): PterodactylBrowser { return new PterodactylBrowser($driver); } }