gpt4 book ai didi

ruby-on-rails - 在 Docker 中使用 capybara 和 headless selenium 浏览器进行 Rails 系统测试

转载 作者:行者123 更新时间:2023-12-04 19:29:57 29 4
gpt4 key购买 nike

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

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

我正在使用默认测试套件(minitest?)和 capybaraselenium-webdriver gem 。

我已经安装了 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)

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

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

在那一刻,测试似乎表现良好,因为我没有错误,但它总是失败。

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

无论是否接到电话,我都收到了“无法访问站点”的错误消息 ( here is the screenshot )
这是 the test file I used . (测试一些 react 动态显示)

但是,我可以从主机的浏览器中使用给定的 URL 访问 selenium 容器。两个容器都能看到对方。我在容器 shell 内做了一些 ping。

以下有帮助的问题对我不起作用:
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 浏览器的任何想法?

非常感谢。

最佳答案

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

关于ruby-on-rails - 在 Docker 中使用 capybara 和 headless selenium 浏览器进行 Rails 系统测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732620/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com