相关疑难解决方法(0)

如何在Rails 5.1中运行无头浏览器系统测试?

Rails 5.1系统测试文档有点稀疏.我无法进行执行javascript运行的无头测试.我认为一种方法需要安装和运行xvf.但这比我在其他版本的rails中运行capybara时使用的手动设置更多.

实现这一目标最直接的方法是什么?

ruby-on-rails system-testing capybara capybara-webkit

8
推荐指数
1
解决办法
1482
查看次数

Dockerized selenium浏览器无法访问Capybara测试网址

我试图在dockerized selenium独立firefox浏览器上运行Ruby on Rails功能测试.看起来我遇到了网络问题,因为selenium实例无法连接到Capybara启动的url.

这是我的示例docker-compose.yml文件:

ff:
  image: selenium/standalone-firefox:2.48.2
  container_name: firefox-browser
web:
  build: .
  container_name: my-app
  volumes:
    - ".:/home/ubuntu/my-app"
  command: /bin/bash -l scripts/docker-start-tests.sh
  ports:
    - "3000:3000"
Run Code Online (Sandbox Code Playgroud)

我启动了docker-compose并启用了网络:

docker-compose --x-networking up
Run Code Online (Sandbox Code Playgroud)

测试脚本运行这样的rspec命令

rspec ./spec/features/login_spec.rb:43
Run Code Online (Sandbox Code Playgroud)

对于docker测试,我为Capybara启用了远程驱动程序:

Capybara.register_driver :docker_firefox do |app|
  Capybara::Selenium::Driver.new(app, {
    browser: :remote,
    url: "#{ENV['FF_URL']}/wd/hub",
    desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox
  })
end
Run Code Online (Sandbox Code Playgroud)

最后我将测试称为:

unless ENV['FF_URL'].nil?
  Capybara.current_driver = :docker_firefox
  Capybara.javascript_driver = :docker_firefox

  Capybara.app_host = "http://my-app:56555"
  Capybara.server_port = "56555"
  # Capybara.server_host = "my-app"
end

visit root_path
save_and_open_screenshot
click_link "Sign in"
...
Run Code Online (Sandbox Code Playgroud)

我可以拖尾浏览器容器日志,我看到selenium从Capybara接收命令.问题是它无法连接到提供的网址,我可以通过屏幕截图确认.

Firefox无法在my-app上建立与服务器的连接:56555

为了更好地理解这个问题,我启动了rails app,并尝试从selenium容器中访问它.我注意到,如果我使用ip绑定启动rails应用程序,我只能从selenium容器访问该应用程序. …

selenium rspec ruby-on-rails capybara docker

6
推荐指数
1
解决办法
1512
查看次数