ruby-on-rails - 为什么 Selenium 在 CircleCI 2.0 版本中使用了不正确的根目录?

标签 ruby-on-rails selenium selenium-webdriver circleci circleci-2.0

我正在尝试配置一个 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/

相关文章:

java - 如何处理没有任何元素的浏览器通知弹出窗口?

python - 使用 Python-Selenium 自动化 GMAIL 登录

python - 如何在 Python 中更改 chrome selenium 驱动程序的地理位置?

javascript - 如何在 Node 中注册 WebDriverJS 的错误处理程序?

selenium - 如何获取selenium grid2中节点的空闲浏览器数量

javascript - 带有 Rails(设计)身份验证的 Marionette.js

mysql - rails 4 : Using ActiveRecord object from one thread in another

ruby-on-rails - 如何将heroku上回形针的上传目录更改为/tmp?

ruby-on-rails - Rails Ajax 单行 RJS 文件

java - 如何使元素在selenium java中可见