2017-05-05 26 views
6

Các documentation for Rails 5.1 system tests là một chút thưa thớt. Tôi không thể nhận được các bài kiểm tra không đầu mà thực thi javascript đang chạy. Tôi nghĩ rằng một cách tiếp cận đòi hỏi phải cài đặt và chạy xvf. Nhưng đây là thiết lập thủ công hơn tôi thường sử dụng khi chạy capybara trong các phiên bản khác của đường ray.Làm cách nào để chạy thử nghiệm hệ thống trình duyệt không đầu trong Rails 5.1?

Cách đơn giản nhất để đạt được điều này là gì?

Trả lời

8

Trong bản kiểm tra hệ thống Rails 5.1, trình điều khiển được sử dụng được đặt bởi cuộc gọi driven_by trong ApplicationSystemTestCase (test/application_system_test_case.rb). Giả sử bạn đã đăng ký lái xe Capybara-webkit của bạn là 'webkit' bạn sẽ có thể để làm

driven_by :webkit 

Một tùy chọn khác tiềm năng nếu bạn sử dụng Chrome 59+ trên linux/mac là sử dụng không đầu chrome

Capybara.register_driver :headless_chrome do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ['headless']) 
end 

và sau đó kiểm tra trong trường hợp lớp học của bạn

driven_by :headless_chrome 

Cung cấp cho bạn một phiên bản không đầu của chrome nên không ai trong số các vấn đề về Capybara-webkit/poltergeist không hỗ trợ các chuẩn web hiện hành. Thật không may hiện chromedriver có vấn đề với các phương thức hệ thống JS (cảnh báo, xác nhận, nhanh chóng - workaround trong chi nhánh chủ capybara) và treo cứng nếu bạn cố gắng đóng cửa sổ trong các thử nghiệm của bạn. Hy vọng rằng 2 vấn đề đó sẽ sớm được khắc phục. Cũng lưu ý rằng đường ray 5.1 nên đã loại bỏ sự cần thiết cho database_cleaner đối với hầu hết mọi người thử nghiệm vì nó đã xử lý việc chia sẻ một kết nối cơ sở dữ liệu duy nhất giữa nhiều luồng trong chế độ thử nghiệm.

+0

cảm ơn! "Giả sử bạn đã đăng ký trình điều khiển capybara-webkit của bạn là 'webkit'" - làm cách nào để thực hiện việc này? –

+1

@JohnBachir sử dụng 'Capybara.register_driver' - khi bạn bao gồm capybara-webkit trong dự án của bạn sẽ có một đăng ký tự động - bạn chỉ cần thay đổi điều đó nếu bạn cần thay đổi cài đặt chỉ có thể được định cấu hình thông qua đăng ký trình điều khiển - https : //github.com/teamcapybara/capybara#configuring-and-adding-drivers –

+0

Để tránh một thông báo không dùng nữa, bạn sẽ cần sử dụng cú pháp ['add_argument' của' Selenium :: WebDriver :: Chrome :: Tùy chọn'] (https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html#add_argument-instance_method). – croceldon

Các vấn đề liên quan