【问题标题】:Rails system test with capybara and headless selenium browser in Docker在 Docker 中使用水豚和无头硒浏览器进行 Rails 系统测试
【发布时间】:2017-11-27 16:39:30
【问题描述】:

TL;DR:关于如何正确配置 capybara 以便能够在具有默认 Rails minitest 系统测试的 docker 容器中驱动远程 selenium 浏览器的任何想法?

我在 dockerized 环境中运行 Rails.. 现在我想开始一些“系统测试”,但由于我在 Docker 中运行,所以我遇到了一些问题。

我正在使用带有 capybara 和 selenium-webdriver gems 的默认测试套件(minitest?)。

我已经使用以下方法在容器中安装了chromedriver 数据包:

RUN apt-get install -y chromedriver \
  && ln -s /usr/lib/chromium-browser/chromedriver /usr/local/bin

但是运行rails test:system会输出以下错误Selenium::WebDriver::Error::WebDriverError: Unable to find chromedriver.

其实我也不知道chrome本身有没有安装?
which chrome 什么也不输出。
which chromium 输出/usr/bin/chromium。

我也尝试了xvfb,但没有成功。

所以(因为我不知道)我试图更进一步,实际上也使用了一个 dockerized 系统测试环境。

我从 selenium 中找到了一些 Docker 映像。所以我在我的 Rails 和数据库容器中运行了一个 selenium-standalone-chrome 容器(实际的 docker-compose.yml I'm using is here)

然后我发现了一些有用的信息,关于配置让水豚驱动 remote selenium 浏览器。
我在互联网上找到的所有示例都使用 rspec,但由于我使用的是默认的 minispec,因此我尝试将 capybara 驱动程序调整为 minispec,但我对如何执行此操作以及将配置放在哪里有些疑问。

对于系统测试,我猜最好的位置是文件application_system_test_case.rb。我还发现并尝试了许多不同的水豚配置,最终得到以下似乎是最完整的(available here)

此时测试似乎表现良好,因为我没有错误,但它总是失败。

无论在测试用例之前调用驱动程序配置(我定义服务器主机和端口的 setup_remote 方法),它都会失败。

无论是否拨打电话,我都会收到 “无法访问网站” 错误 (here is the screenshot)
这里是the test file I used。 (测试一些react动态显示)

但是,我可以从主机的浏览器中使用给定的 URL 访问 selenium 容器。两个容器都能看到对方。 我从容器外壳中执行了一些 ping 操作。

以下对我有帮助的 SO 问题对我不起作用:
Dockerized selenium browser cannot access Capybara test url
How can I run headless browser system tests in Rails 5.1?

任何关于如何正确配置 capybara 以能够在具有默认 Rails minitest 系统测试的 docker 容器中驱动远程 selenium 浏览器的想法?

非常感谢。

【问题讨论】:

  • 再次嗨..远程selenium的默认地址似乎是http://172.18.0.2:4444/wd/hub/之类的地址。但是,当我使用浏览器从主机访问此 URL 时,它会重定向到以下页面 http://172.18.0.2:4444/wd/hub/static/resource/hub.html。所以我试图把这个 URL 放在注册驱动程序部分。这次我遇到了其他一些硒错误。但最重要的是,在控制台错误中,我还得到了一些 "System Info",它显示了 selenium 站点显示的相同元数据,这意味着连接 rails->selenium 似乎运行良好。

标签: ruby-on-rails selenium docker automated-tests integration-testing


【解决方案1】:

您必须重写 host 方法,以便 Capybara 使用容器的 IP 地址。看看这个帖子:https://medium.com/@pacuna/using-rails-5-1-system-tests-with-docker-a90c52ed0648

【讨论】:

猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2018-02-11
  • 2017-11-19
相关资源
最近更新 更多