5

问题:在 ddev 容器内获取基于 Behat Drupal Extension的测试。这包括向现有配置添加单独的 selenium 容器,能够运行 Behat 测试,以及能够引用web主机容器。

4

1 回答 1

5

先决条件:有一个托管 Drupal 的工作 ddev 实例。已经有例子可以设置它,所以我不会在这里重复。

上述任务需要添加以下内容:

  • selenium 容器:运行 selenium 的容器。我使用的是 chrome 独立版本。将以下内容添加到您的 .ddev 文件夹中:

文件:docker-compose.selenium.yml

version: '3.6'

services:
  selenium:
    container_name: ddev-${DDEV_SITENAME}-selenium
    image: selenium/standalone-chrome-debug:3.13.0-argon
    networks:
      default:
        aliases:
          - web

最后一点很关键;selenium 容器需要知道运行 drupal 实例的 web 容器才能连接到它,但由于它是 web 容器的依赖项,所以不能使用“链接”。您必须使用别名方法,使用默认网络。

  • compose override:一个覆盖 web 容器默认值的文件,以将 selenium 容器链接到它。

文件:docker-compose.override.yml

version: '3.6'

services:
  web:
    depends_on:
      - db
      - selenium
    links:
      - db:db
      - selenium:selenium
  • Behat 配置:以下 Behat 配置MinkExtension对我有用:

(修改文件 behat.yml)

default:
  extensions:
    "Behat\\MinkExtension":
      goutte: null
      base_url: 'http://web'
      javascript_session: selenium2
      selenium2:
        browser: "chrome"
        wd_host: http://selenium:4444/wd/hub
        capabilities:
          extra_capabilities:
            idle-timeout: 50

base_url并且wd_host条目对于使其发挥作用至关重要。

有关最后一个的更多信息,请参阅Behat Drupal 扩展文档中的第 5 步:

通过使用以下内容创建一个名为 behat.yml 的文件来配置您的测试环境。确保将 base_url 指向您打算测试的网站。不要包含尾部斜杠:

default:
  suites:
    default:
      contexts:
        - FeatureContext
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
        - Drupal\DrupalExtension\Context\MessageContext
        - Drupal\DrupalExtension\Context\DrushContext
  extensions:
    Drupal\MinkExtension:
      goutte: ~
      selenium2: ~
      base_url: http://seven.l
    Drupal\DrupalExtension:
      blackbox: ~
于 2018-07-25T21:08:51.600 回答