123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- namespace 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);
- }
- }
|