Tôi đang cố gắng chạy thử nghiệm tính năng Ruby on Rails trên trình duyệt firefox độc lập selenium dockerized. Có vẻ như tôi đang gặp sự cố với mạng vì bản sao selen không thể kết nối với url do Capybara bắt đầu.Trình duyệt selen được hỗ trợ không thể truy cập vào địa chỉ kiểm tra Capybara
Dưới đây là mẫu của tôi docker-compose.yml
file:
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"
Và tôi bắt đầu Docker-soạn with Networking được kích hoạt:
docker-compose --x-networking up
Các kịch bản thử nghiệm chạy một lệnh rspec như thế này
rspec ./spec/features/login_spec.rb:43
Đối với các thử nghiệm docker, tôi đã bật trình điều khiển từ xa cho 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
Và cuối cùng tôi gọi là thử nghiệm như thế này:
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"
...
tôi có thể đuôi các bản ghi chứa trình duyệt và tôi thấy rằng selen nhận lệnh từ Capybara. Vấn đề là nó không thể kết nối với url được cung cấp, mà tôi có thể xác nhận với ảnh chụp màn hình.
Firefox không thể thiết lập một kết nối đến máy chủ tại my-app: 56555
Để hiểu rõ hơn vấn đề, tôi bắt đầu ứng dụng đường ray và tôi đã cố gắng để truy cập nó từ container selen . Tôi nhận thấy rằng tôi chỉ có thể truy cập ứng dụng từ vùng chứa selen nếu tôi bắt đầu ứng dụng đường ray với một ràng buộc ip.
rails s Puma -b 0.0.0.0
Điều này có vẻ như vấn đề về mạng, nhưng tôi không thể tìm ra giải pháp.
Làm cách nào để tạo vùng chứa selen truy cập ứng dụng đường ray chạy các thử nghiệm tính năng Rspec với Capybara?
capybara (2.6.0)
selenium-webdriver (2.48.1)
Cảm ơn sự giúp đỡ của bạn.
máy chủ ray đề chạy các ứng dụng thử nghiệm trong liên kết với Capybara.server_host (127.0.0.1 theo mặc định) - bạn có thể thử thay đổi đó để bất cứ điều gì ip giao diện container Docker có thể nói chuyện trở lại máy tính của bạn trên - có thể 0.0.0.0 –
@TomWalpole Bạn đang đề cập đến 'Capybara.app_host'? Tôi phân tích các ip được giao cho container chạy đường ray và tôi vượt qua nó để app_host. Tuy nhiên, tôi không thể truy cập nó từ thùng chứa selen. – artsince
Không - Capybara.app_host được sử dụng để xây dựng địa chỉ trình duyệt được yêu cầu truy cập, Capybara.server_host đặt ứng dụng thử nghiệm ip lắng nghe cho các kết nối từ trình duyệt –