You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:53:10