Najwyraźniej sleep
lub wait_until
nie są prawidłowe przy użyciu najnowszych wersji Capybara, zgodnie z webpageupdates.Czy Capybara wymaga snu do pracy?
Jednak mam zestaw testów, które działają tylko na szybkich komputerach, jeśli dodaję do testu połączenie sleep(1)
. To jest test, który wygląda następująco:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
staje
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
gdzie mam zdefiniowane unix_wait
jak:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Chodzi o to, mam starą Ubuntu 12.04 QuadCore laptop uruchamiający te testy na Jenkins i wszystko działa dobrze na nim bez wywołań unix_wait
. Testy nie powiodły się losowo na szesnastkowym pulpicie z systemem Ubuntu 13.10 i na macbook pro laptopie, ale jeśli dodam połączenie unix_wait
, testy mijają.
Same niepowodzenia testów wskazują na ładowanie błędów (np. Brak elementów css w niektórych seriach, ale nie na innych), a rzeczy testowane faktycznie działają, gdy strona jest ładowana ręcznie.
Jakie jest właściwe działanie? Najwyraźniej sleep
nie jest dozwolone podczas testowania, ani nie jest wait_until
. Jednak sen działa, ale wydaje mi się to bardzo surowe. Czy powinienem patrzeć na #synchronized
? Z tego, co zbieram z tych postów na blogu, jest już wywoływana, gdy dzwonię pod numer click_link
, a testy nadal nie działają.
Jaki jest tutaj zaakceptowany protokół?
Powinienem dodać, ponieważ uważam, że to ważne: to są wszystkie testy javascript. Używam capybara-webkit zbudowanego na qt4 (nie qt5). Rozważam przejście na poltergeist lub inny sterownik javascript jako etap debugowania.
Możesz spróbować użyć webdrivera do debugowania, ale mam podobne problemy. –
Mam ten sam problem z capybara-webkit, kiedy używam ajax. Nie wiem, czy poltergeist mógłby rozwiązać ten problem, ale warto spróbować. – basgys
Czy możesz wyjaśnić więcej błędów, które widzisz? Nie jestem pewien, co naprawdę oznacza "brakujące elementy css". – Shepmaster