我希望能够在Laravel 5.5中使用Dusk 2.0运行我的浏览器测试时看到浏览器(特别是我可以使用$ browser-tinker()并为调试目的提供一些手动命令)。
有谁知道怎么做?我希望有一些简单的东西:
php artisan dusk --noheadless
答案 0 :(得分:3)
安装Dusk应在您应用的DuskTestCase.php
目录中创建一个/tests/
文件。此文件中的DuskTestCase
类包含driver()
方法,该方法很容易覆盖(因为这是在您的应用程序中,您可以直接对其进行更改,因为它不再是程序包的一部分)。
现在,禁用无头模式就像从'--headless'
实例上的$options
方法中的addArguments()
变量中删除ChromeOptions
参数一样简单。
从Laravel 5.5开始,$ options变量看起来像这样:
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
//'--headless'
]);
答案 1 :(得分:0)
我写了一个bash脚本来从终端切换--headless选项。
用法:
可见浏览器: ./ run_tests-浏览器
没有浏览器: ./ run_tests
过程如下:
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脚本
使它可执行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;