在WSL2+Laravel Sail环境下无法关闭Laravel Dusk无头模式
解决Laravel Dusk在WSL2 Sail环境下无法关闭无头模式的问题
1. 配置Windows端X服务器
WSL2无法直接渲染GUI应用,需在Windows系统安装X服务器工具(如VcXsrv、X410),启动时务必勾选Disable access control选项,允许WSL2容器的GUI请求接入。
2. 设置WSL2的DISPLAY环境变量
在WSL2的Ubuntu终端执行以下命令临时配置:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
若要永久生效,将上述命令追加到~/.bashrc或~/.zshrc文件末尾,执行source ~/.bashrc使配置立即生效。
3. 修改Docker Compose配置
在项目根目录的docker-compose.yml中,为selenium服务添加DISPLAY环境变量:
selenium: image: selenium/standalone-chrome:latest volumes: - '/dev/shm:/dev/shm' environment: - DISPLAY=${DISPLAY} networks: - sail
4. 调整Dusk浏览器启动参数
修改tests/DuskTestCase.php的driver方法,彻底移除无头模式相关参数:
protected function driver() { $options = (new ChromeOptions)->addArguments([ '--disable-gpu', '--no-sandbox', '--window-size=1920,1080', ]); return RemoteWebDriver::create( 'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()->setCapability( ChromeOptions::CAPABILITY, $options ) ); }
5. 配置Dusk环境变量
确保.env.dusk.local中包含以下配置:
DUSK_HEADLESS_DISABLED=true DUSK_DRIVER_URL=http://selenium:4444/wd/hub
6. 重启Sail服务
执行命令清理并重建容器:
sail down -v sail up --build -d
7. 运行Dusk测试
执行测试命令,此时Chrome浏览器窗口应正常弹出:
sail artisan dusk
内容的提问来源于stack exchange,提问作者Andy BnOne
相关产品推荐
相关产品推荐

