(new ChromeOptions)->addArguments([ '--disable-gpu', '--headless', '--no-sandbox', '--disable-dev-shm-usage', '--window-size=1920,1080', ]);
Has any got Dusk to work with Bitbucket Pipelines?
I've been trying to get Laravel Dusk working correctly with Bitbucket pipelines. Here's what my current configuration files looks like:
image: mightycode/docker-laravel-dusk
pipelines:
default:
- step:
caches:
- composer
script:
- /usr/bin/chromium --version
- cp .env.dusk.local .env
- composer install --no-interaction
- npm install
- npm run production
- Xvfb :0 -screen 0 1280x960x24 &
- export DISPLAY=:0
- touch database/testing.sqlite
- php artisan serve &
- php artisan dusk
- vendor/bin/phpunit
Once it reaches the /usr/bin/chromium command I see the following error and the system hangs:
[419:435:0922/195622.191318:ERROR:bus.cc(427)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Xlib: extension "RANDR" missing on display ":0".
[419:448:0922/195622.299121:ERROR:zygote_host_impl_linux.cc(277)] Failed to adjust OOM score of renderer with pid 472: Permission denied
(chromium:419): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Failed to execute child process "dbus-launch" (No such file or directory)
[419:448:0922/195622.383154:ERROR:zygote_host_impl_linux.cc(277)] Failed to adjust OOM score of renderer with pid 478: Permission denied
[419:448:0922/195622.451447:ERROR:zygote_host_impl_linux.cc(277)] Failed to adjust OOM score of renderer with pid 502: Permission denied
[419:448:0922/195622.678652:ERROR:zygote_host_impl_linux.cc(277)] Failed to adjust OOM score of renderer with pid 520: Permission denied
I think the above error is causing the next error I see since Dusk cannot connect to chromium (since it failed to start):
1) Tests\Browser\PickupFormTest::testExample
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"\/usr\/bin\/chromium","args":["--window-size=1280x960","--disable-gpu"]}}}
Failed to connect to localhost port 9515: Connection refused
When I run the config file locally using Convey everything works fine. It's just once I push it up to bitbucket it fails.
Also heres the slightly modified contents of my DuskTestCase.php file:
<?php
namespace Tests;
use Laravel\Dusk\TestCase as BaseTestCase;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Symfony\Component\Process\ProcessBuilder;
abstract class DuskTestCase extends BaseTestCase
{
use CreatesApplication;
/**
* Prepare for Dusk test execution.
*
* @beforeClass
* @return void
*/
public static function prepare()
{
static::startChromeDriver();
}
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
$desiredCapabilities = DesiredCapabilities::chrome();
$options = new ChromeOptions();
$options->setBinary('/usr/bin/chromium');
$options->addArguments([
'--no-sandbox',
'--window-size=1280x960',
'--disable-gpu',
]);
$desiredCapabilities->setCapability(ChromeOptions::CAPABILITY, $options);
return RemoteWebDriver::create(
'http://localhost:9515', $desiredCapabilities
);
}
}
Anyone have any ideas on how to get Dusk working with Bitbucket Pipelines?
Please or to participate in this conversation.