我正在尝试配置一个 Rails 应用程序以在 CircleCI 2.0 上进行测试(它在 v1.0 上运行良好)。
我已经使用以下 Docker 镜像设置了一个配置文件(我第一次使用 Docker,所以不确定这是否正确):
build:
docker:
- image: circleci/ruby:2.4-node
environment:
SELENIUM_DRIVER_URL: http://localhost:4444/wd/hub
- image: circleci/postgres:10.2
environment:
POSTGRES_USER: user
POSTGRES_DB: datatbase
POSTGRES_PASSWORD: ""
- image: selenium/standalone-chrome:3.5.3
一切正常,所有测试都通过,除了一个!
Failure/Error: attach_file 'file', File.join(Rails.root, 'spec', 'support', 'images', 'test_image.jpg'), visible: false
Selenium::WebDriver::Error::ExpectedError:
invalid argument: File not found : /home/circleci/project/spec/support/images/test_image.jpg
test_image.jpg
确实存在。它被其他所有成功通过的非 JS 规范所使用。
这个失败的规范是唯一测试 javascript 的规范,因此是通过 selenium/chrome 运行的。
从测试输出来看,selenium 似乎是在 home/circleci/project
中查找,而不是在 Rails 根文件夹中查找。
如何配置以确保此规范在该文件的正确根目录中查找?
最佳答案
我花了很长时间才弄清楚这件事的真相。我对 Docker 还很陌生,CircleCI 文档的很多地方让我感觉一无所知。
如果这对遇到此问题的任何人都有用,我从配置文件中删除了image: selenium/standalone-chrome:3.5.3
,而是使用了包含所有内容的 Ruby 镜像circleci/ruby:2.4-node-bowsers
。
build:
docker:
- image: circleci/ruby:2.4-node-bowsers
environment:
RAILS_ENV: test
- image: circleci/postgres:10.2
environment:
POSTGRES_USER: user
POSTGRES_DB: datatbase
POSTGRES_PASSWORD: ""
问题解决了!
关于ruby-on-rails - 为什么 Selenium 在 CircleCI 2.0 版本中使用了不正确的根目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48969917/