| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | <?phpnamespace Tests;use Dcat\Admin\Models\Administrator;use Facebook\WebDriver\Chrome\ChromeOptions;use Facebook\WebDriver\Remote\DesiredCapabilities;use Facebook\WebDriver\Remote\RemoteWebDriver;use Laravel\Dusk\TestCase as BaseTestCase;abstract class DuskTestCase extends BaseTestCase{    use CreatesApplication, BrowserExtension, InteractsWithDatabase;    /**     * @var Administrator     */    protected $user;    /**     * @var bool     */    protected $login = true;    public function login(Browser $browser)    {        $browser->loginAs($this->getUser(), 'admin');    }    public function setUp(): void    {        parent::setUp();        $this->extendBrowser();        $this->boot();    }    public function tearDown(): void    {        $this->destory();        parent::tearDown();    }    /**     * Prepare for Dusk test execution.     *     * @beforeClass     *     * @return void     */    public static function prepare()    {        static::startChromeDriver();    }    /**     * @param  \Facebook\WebDriver\Remote\RemoteWebDriver  $driver     * @return \Laravel\Dusk\Browser     */    protected function newBrowser($driver)    {        $browser = (new Browser($driver))->resize(1566, 1080);        $browser->resolver->prefix = 'html';        if ($this->login) {            $this->login($browser);        }        return $browser;    }    /**     * 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_W3C, $options            )        );    }    /**     * Build the process to run the Chromedriver.     *     * @param  array  $arguments     * @return \Symfony\Component\Process\Process     *     * @throws \RuntimeException     */    protected static function buildChromeProcess(array $arguments = [])    {        return (new ChromeProcess(static::$chromeDriver))->toProcess($arguments);    }}
 |