在 DDEV 容器内使用 Behat Drupal Extension 运行 selenium 测试

Aro*_*ron 5 selenium drupal ddev

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

Aro*_*ron 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
Run Code Online (Sandbox Code Playgroud)

最后一点很关键;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
Run Code Online (Sandbox Code Playgroud)
  • 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
Run Code Online (Sandbox Code Playgroud)

base_urlwd_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: ~
Run Code Online (Sandbox Code Playgroud)