Laravel dusk 无法使用 wsl2 禁用 laravel sail 上的无头模式

问题描述 投票:0回答:1

我有一个现有的最新 laravel 11 项目,该项目在带有 wsl2 (ubuntu) 的 Windows 11 中使用 docker 在 laravel sail 下运行。我已经根据 Laravel 官方文档安装并配置了 Laravel Dusk,Dusk 测试运行良好,但无论我如何尝试,我都无法禁用无头模式来打开浏览器窗口

我尝试的第一个想法是在我的 .env.dusk.local 中添加 DUSK_HEADLESS_DISABLED=true 不起作用。

接下来我在 DuskTestCase.php 的驱动程序方法中注释掉了 '--headless=new' 并且什么也没做

与“--disable-gpu”相同

尝试添加聊天 GPT 建议的“--no-sandbox”,你猜怎么着?它什么也没做

接下来我发起了关于 laracast 的讨论,其中有人建议将我的 docker-compose.yml 中的 selenium 镜像更改为:

image: 'selenium/standalone-chrome:4.1.2-20220217'

那也不起作用。

尝试向下航行--build -d。

我陷入困境,非常感谢任何帮助。

laravel docker laravel-dusk laravel-sail
1个回答
0
投票

运行 laravel-dusk headless false

在使用 wsl2 在 laravel sail 上的可视浏览器中运行 laravel dusk 测试之前,您需要预先执行以下几个步骤:

第1步:

您需要编辑您的

DuskTestCase.php
,例如:

 protected function driver()
{
    $options = (new ChromeOptions)->addArguments([
        // '--disable-gpu', //disable or remove disable-gpu to run with an browser it needs gpu 
        // '--headless', //disable or remove headless to run with an browser
        '--no-sandbox',
        '--disable-dev-shm-usage' //this isnt necesery but can help you with future problems look "https://stackoverflow.com/a/75719112/20538588"
    ]);

    return RemoteWebDriver::create(
        'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY, $options
        )
    );
}

第2步:

确保您还解锁端口 7900 并定义了 chrome 独立映像。您可以通过如下配置

docker-compose.yml
来做到这一点:

selenium:
image: 'selenium/standalone-chrome:4.1.2-20220217' // <---have a chrome image configured
environment:
    LARAVEL_SAIL: 1
volumes:
    - '/dev/shm:/dev/shm'
ports:
    - '${FORWARD_SELENIUM_PORT:-4444}:4444'
    - '${FORWARD_SELENIUM_HEADFUL_PORT:-7900}:7900' // <---open port :7900
networks:
    - sail

然后您可以访问该网址

localhost:7900
默认凭据是“秘密”

第三步:

最后一步是通过添加以下内容来配置您

.env
DUSK_HEADLESS_DISABLED=true

© www.soinside.com 2019 - 2024. All rights reserved.