Changeset View
Changeset View
Standalone View
Standalone View
src/tests/DuskTestCase.php
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | abstract class DuskTestCase extends BaseTestCase | ||||
/** | /** | ||||
* Create the RemoteWebDriver instance. | * Create the RemoteWebDriver instance. | ||||
* | * | ||||
* @return \Facebook\WebDriver\Remote\RemoteWebDriver | * @return \Facebook\WebDriver\Remote\RemoteWebDriver | ||||
*/ | */ | ||||
protected function driver() | protected function driver() | ||||
{ | { | ||||
$options = (new ChromeOptions())->addArguments([ | $options = (new ChromeOptions())->addArguments([ | ||||
'--lang=en_US', | |||||
'--disable-gpu', | '--disable-gpu', | ||||
'--headless', | '--headless', | ||||
'--window-size=1280,720', | '--window-size=1280,720', | ||||
]); | ]); | ||||
// For file download handling | |||||
$prefs = [ | |||||
'profile.default_content_settings.popups' => 0, | |||||
'download.default_directory' => __DIR__ . '/Browser/downloads', | |||||
]; | |||||
$options->setExperimentalOption('prefs', $prefs); | |||||
if (getenv('TESTS_MODE') == 'phone') { | |||||
// Fake User-Agent string for mobile mode | |||||
$ua = 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/537.36' | |||||
. ' (KHTML, like Gecko) Chrome/60.0.3112.90 Mobile Safari/537.36'; | |||||
$options->setExperimentalOption('mobileEmulation', ['userAgent' => $ua]); | |||||
$options->addArguments(['--window-size=375,667']); | |||||
} elseif (getenv('TESTS_MODE') == 'tablet') { | |||||
// Fake User-Agent string for mobile mode | |||||
$ua = 'Mozilla/5.0 (Linux; Android 6.0.1; vivo 1603 Build/MMB29M) AppleWebKit/537.36 ' | |||||
. ' (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36'; | |||||
$options->setExperimentalOption('mobileEmulation', ['userAgent' => $ua]); | |||||
$options->addArguments(['--window-size=800,640']); | |||||
} else { | |||||
$options->addArguments(['--window-size=1280,720']); | |||||
} | |||||
// Make sure downloads dir exists and is empty | |||||
if (!file_exists(__DIR__ . '/Browser/downloads')) { | |||||
mkdir(__DIR__ . '/Browser/downloads', 0777, true); | |||||
} else { | |||||
foreach (glob(__DIR__ . '/Browser/downloads/*') as $file) { | |||||
@unlink($file); | |||||
} | |||||
} | |||||
return RemoteWebDriver::create( | return RemoteWebDriver::create( | ||||
'http://localhost:9515', | 'http://localhost:9515', | ||||
DesiredCapabilities::chrome()->setCapability( | DesiredCapabilities::chrome()->setCapability( | ||||
ChromeOptions::CAPABILITY, | ChromeOptions::CAPABILITY, | ||||
$options | $options | ||||
) | ) | ||||
); | ); | ||||
} | } | ||||
/** | |||||
* Replace Dusk's Browser with our (extended) Browser | |||||
*/ | |||||
protected function newBrowser($driver) | |||||
{ | |||||
return new Browser($driver); | |||||
} | |||||
} | } |