无法在Windows上的Docker上运行Laravel Dusk测试

问题描述

我正在研究Laravel项目。我正在使用Docker / docker-compose作为开发环境。我正在使用Dusk为我的代码编写浏览器测试。但是当我运行测试时,它不起作用。

这是我的docker-compose.yaml

version: '3'
services:
  apache:
    container_name: res_apache
    image: webdevops/apache:ubuntu-16.04
    environment:
      WEB_DOCUMENT_ROOT: /var/www/public
      WEB_ALIAS_DOMAIN: restaurant.localhost
      WEB_PHP_SOCKET: PHP-fpm:9000
    volumes: # Only shared dirs to apache (to be served)
      - ./public:/var/www/public:cached
      - ./storage:/var/www/storage:cached
    networks:
      - res-network
    ports:
      - "8081:80"
      - "443:443"
  PHP-fpm:
    container_name: res_PHP
    image: jguyomard/laravel-PHP:7.3
    volumes:
      - ./:/var/www/
      - ./ci:/var/www/ci:cached
      - ./vendor:/var/www/vendor:delegated
      - ./storage:/var/www/storage:delegated
      - ./node_modules:/var/www/node_modules:cached
      - ~/.ssh:/root/.ssh:cached
      - ./composer.json:/var/www/composer.json
      - ./composer.lock:/var/www/composer.lock
      - ~/.composer/cache:/root/.composer/cache:delegated
    networks:
      - res-network
  db:
    container_name: res_db
    image: mariadb:10.2
    environment:
      MysqL_ROOT_PASSWORD: root
      MysqL_DATABASE: restaurant
      MysqL_USER: restaurant
      MysqL_PASSWORD: secret
    volumes:
      - res-data:/var/lib/MysqL
    networks:
      - res-network
    ports:
      - "33060:3306"
  selenium:
    image: selenium/standalone-chrome:3.13
    container_name: res_selenium
    volumes:
      - /dev/shm:/dev/shm
    networks:
      - res-network
networks:
  res-network:
    driver: "bridge"
volumes:
  res-data:
    driver: "local"

这是我的DuskTestCase.PHP类。

abstract class DuskTestCase extends BaseTestCase
{
    use CreatesApplication,RefreshDatabase;

    /**
     * Prepare for Dusk test execution.
     *
     * @beforeClass
     * @return void
     */
    public static function prepare()
    {
        static::startChromeDriver();
    }

    /**
     * Create the RemoteWebDriver instance.
     *
     * @return \Facebook\WebDriver\Remote\RemoteWebDriver
     */
    protected function driver()
    {
        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu','--headless','--no-sandBox','--ignore-certificate-errors',]);

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

}

我使用以下命令运行测试。

docker-compose exec PHP-fpm PHP artisan dusk

然后我遇到以下错误

Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--disable-gpu","--headless","--no-sa
ndBox","--ignore-certificate-errors"]},"acceptInsecureCerts":true}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"args":["--disable-gpu","--no-sandBox","acceptSslCerts":true,"acceptInsecureCerts":true}}

Failed to connect to localhost port 9515: Connection refused

我的配置中缺少什么,我该如何解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)