Rõ ràng, sleep
hoặc wait_until
không hợp lệ khi sử dụng các phiên bản gần đây của Capybara, theo số webpageupdates.Capybara có cần ngủ để làm việc không?
Tuy nhiên, tôi có một tập hợp các thử nghiệm chỉ hoạt động trên các máy nhanh nếu tôi thêm một cuộc gọi sleep(1)
vào thử nghiệm. Nghĩa là, một bài kiểm tra đó trông giống như:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
trở thành
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
nơi tôi đã xác định unix_wait
như:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Có điều là, tôi có một tuổi Ubuntu 12.04 quadcore máy tính xách tay chạy các thử nghiệm này trên Jenkins, và mọi thứ hoạt động tốt trên nó mà không có các cuộc gọi unix_wait
. Các bài kiểm tra thất bại ngẫu nhiên trên một máy tính để bàn hexacore chạy Ubuntu 13,10 và trên một máy tính xách tay macbook pro, nhưng nếu tôi thêm vào các cuộc gọi unix_wait
, sau đó các bài kiểm tra vượt qua.
Bản thân các lỗi thử nghiệm là dấu hiệu của lỗi tải (ví dụ, các phần tử css thiếu trên một số lần chạy, nhưng không phải trên các số khác) và những thứ đang được thử nghiệm thực sự hoạt động khi trang web được tải theo cách thủ công.
Vậy hành động thích hợp ở đây là gì? Rõ ràng, sleep
không được phép trong khi thử nghiệm, cũng không phải là wait_until
. Tuy nhiên, giấc ngủ đang hoạt động, nhưng nó có vẻ rất thô lỗ với tôi. Tôi có nên xem #synchronized
không? Từ những gì tôi thu thập từ các bài đăng trên blog đó, điều đó đã được gọi khi tôi gọi click_link
và các thử nghiệm vẫn không thành công.
Giao thức được chấp nhận ở đây là gì?
Tôi nên thêm, bởi vì tôi nghĩ điều đó quan trọng: Đây là tất cả các bài kiểm tra javascript. Tôi đang sử dụng capybara-webkit được xây dựng trên qt4 (không phải qt5). Tôi đang xem xét chuyển sang poltergeist hoặc một số trình điều khiển javascript khác như là một bước gỡ lỗi.
Bạn có thể thử sử dụng trình gỡ lỗi web để gỡ lỗi nhưng tôi có các vấn đề tương tự trong đó. –
Tôi gặp vấn đề tương tự với capybara-webkit khi tôi sử dụng ajax. Tôi không biết liệu poltergeist có thể giải quyết vấn đề này hay không, nhưng nó đáng để thử. – basgys
Bạn có thể giải thích thêm về những thất bại bạn đang thấy không? Tôi không rõ những gì "yếu tố css thiếu" thực sự đòi hỏi. – Shepmaster