A quanto pare, sleep
o wait_until
non sono validi con le versioni recenti di Capybara, secondo il webpageupdates.Capybara richiede il sonno per funzionare?
Tuttavia, ho una serie di test che funzionano solo su macchine veloci se aggiungo una chiamata sleep(1)
al test. Cioè, un test che assomiglia:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
diventa
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
dove ho definito come unix_wait
:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
La cosa è, ho un vecchio Ubuntu 12.04 quadcore il portatile esegue questi test su Jenkins e tutto funziona bene senza le chiamate unix_wait
. I test sono falliti casualmente su un desktop hexacore con Ubuntu 13.10 e un laptop MacBook Pro, ma se aggiungo la chiamata unix_wait
, i test passano.
Gli stessi errori di test sono indicativi di errori di caricamento (ad esempio, mancano elementi di css su alcune esecuzioni, ma non su altri) e gli elementi testati funzionano effettivamente quando il sito viene caricato manualmente.
Quindi qual è l'azione appropriata qui? Apparentemente, sleep
non è consentito durante il test, né wait_until
. Tuttavia, il sonno funziona, ma a me sembra estremamente rude. Dovrei guardare #synchronized
? Da quello che raccolgo da quei post del blog, questo viene già chiamato quando chiamo click_link
, e i test continuano a fallire.
Qual è il protocollo accettato qui?
Dovrei aggiungere, perché penso che sia importante: questi sono tutti i test di JavaScript. Sto usando capybara-webkit costruito su qt4 (non qt5). Sto considerando di passare al poltergeist o ad un altro driver javascript come passo di debug.
È possibile provare a utilizzare il webdriver per il debug ma ho problemi simili in esso. –
Ho riscontrato lo stesso problema con capybara-webkit quando uso ajax. Non so se il poltergeist potrebbe risolvere questo problema, ma vale la pena provarlo. – basgys
Puoi spiegare di più quali guasti stai vedendo? Non sono chiaro cosa significhi veramente "elementi mancanti". – Shepmaster