In un'applicazione Rails sto provando a testare un Bootstrap modal con un jQuery TokenInput field in Rspec utilizzando Capybara con il driver capybara-webkit
. La parte in questione è la seguente: pulsanteProblemi di interazione con le modalitā Bootstrap via Capybara (v2)
click_link 'Create Team Modal'
sleep 1
within('div#modal_popup') do
fill_in 'input#token-input-team_name', with: 'Fancy team name'
sleep 1
fill_in 'input#token-input-team_name', with: '\t'
sleep 1
click_button 'Create Team'
end
page.should have_content('Fancy team name')
- Fare clic per ottenere modale
- Compilare TokenInput con un nome della squadra
- Simulare un Tab pressione di un tasto per farlo selezionato
- Creare il squadra
- Verificare il nome compare sulla pagina
Questo sarà solo lavoro con tutti quelli sleep 1
s in luogo; altrimenti Capybara si arresta in modo anomalo a have_content
, causando infine un errore del server perché il nome del team non è mai stato possibile selezionare correttamente. Altri mod Bootstrap senza un campo TokenInput non richiede un sleep 1
prima che vengano caricati, tuttavia.
Con tutto ciò detto, esiste un modo per sbarazzarsi dei dormienti e procedere così normalmente? Capybara 2 ha eliminato wait_until
(con una buona ragione) poiché attenderà entro il tempo di attesa predefinito per testare qualcosa ... ma ciò non sembra riflettersi nel mio test precedente; è come se Capibara non si impegnasse in quel periodo di attesa entrando/uscendo da questo modale. Qualcuno ha qualche esperienza con questo? Utilizzo di Rails 3.2.10, Rspec 2.12, Capybara 2, capybara-webkit 0.14.0, TokenInput 1.6.
Questo potrebbe essere utile: http://blog.crowdint.com/2013/09/20/poltergeist-and-bootstrap-modals.html – Matt