I'd like to be able to see the browser when running my Browser tests using Dusk 2.0 in Laravel 5.5 (specifically so I can use $browser-tinker() and give it some manual commands for debugging purposes).
Does anyone know how to do this? I was hoping some something as simple as:
php artisan dusk --noheadless
Installing Dusk should create a DuskTestCase.php
file in /tests/
directory in your app. DuskTestCase
class within this file contains a driver()
method, which is easy to override (since this is within your app, you can make changes in it directly as it's not part of the package anymore).
Disabling the headless mode is now as simple as just removing the '--headless'
argument from the $options
variable in it's addArguments()
method on ChromeOptions
instance.
As of Laravel 5.5, the $options variable will look something like this:
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
//'--headless'
]);
I wrote a bash script to toggle --headless option from the terminal.
Usage:
Browser is visible: ./run_tests -in-browser
No browser: ./run_tests
The process is as follows:
DuskTestCase.php
protected function driver()
{
$driver_args = env("DISABLE_HEADLESS_TEST") ? ['--disable-gpu'] :
['--disable-gpu','--headless'];
$options = (new ChromeOptions)->addArguments($driver_args);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
run_tests script
Make it executable sudo chmod +x run_tests
#! /bin/bash
function make_env_file_copy {
if cp .env .env.dusk.local; then
return 0;
else
echo "Error. Can't copy .env file to .env.dusk.local";
return 1;
fi
}
function add_line_to_env_file {
if echo $'\r\n'"DISABLE_HEADLESS_TEST=true" >> .env.dusk.local; then
return 0;
else
echo "Error. Can't write to .env.dusk.local";
return 1;
fi
}
#------------ MAIN --------------
if [[ $1 = "-in-browser" ]]; then
echo "Running Dusk tests in the browser.";
make_env_file_copy &&
add_line_to_env_file &&
php artisan dusk;
else
echo "Running tests";
php artisan dusk;
fi
echo "Cleaning up";
rm .env.dusk.local;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.