Czy kapibara wymaga snu do pracy?
Widocznie,sleep
lubwait_until
nie są poprawne przy użyciu najnowszych wersji Kapibary, zgodnie zStrona internetowa aktualizacje.
Mam jednak zestaw testów, które działają tylko na szybkich komputerach, jeśli dodamsleep(1)
zadzwoń do testu. To jest test, który wygląda tak:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
staje się
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
gdzie zdefiniowałemunix_wait
tak jak:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Rzecz w tym, że mam stary laptop Ubuntu 12.04 quadcore z tymi testami na Jenkinsie i wszystko działa dobrze bezunix_wait
połączenia. Testy nie powiodły się losowo na sześciokątnym pulpicie z Ubuntu 13.10 i laptopem MacBook Pro, ale jeśli dodamunix_wait
zadzwoń, a następnie testy miną.
Same błędy testowe wskazują na błędy ładowania (tj. Brak elementów css w niektórych uruchomieniach, ale nie na innych), a testowane rzeczy faktycznie działają, gdy witryna jest ładowana ręcznie.
Więc jaka jest właściwa akcja tutaj? Widocznie,sleep
nie jest dozwolone podczas testów, ani nie jest dozwolonewait_until
. Jednak sen działa, ale wydaje mi się bardzo prymitywny. Czy powinienem patrzeć#synchronized
? Z tego, co zbieram z tych wpisów na blogu, już dzwonię, gdy dzwonięclick_link
, a testy nadal zawodzą.
Jaki jest tutaj przyjęty 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 krok debugowania.