W aplikacji Rails próbuję przetestować Bootstrap modal przy użyciu jQuery TokenInput field w Rspec przy użyciu Capybara ze sterownikiem capybara-webkit
. Część o którym mowa jest w następujący sposób: przyciskProblemy z interakcjami z modami Bootstrap przez 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')
- Kliknij aby uzyskać modalne
- Wypełnij TokenInput z nazwą zespołu
- Symulacja naciśnięcia klawisza Tab, aby dostać wybrany
- Stworzy Zespół
- Sprawdź nazwę pokazuje się na stronie
będzie to tylko praca z wszystkimi tymi sleep 1
s na miejscu; w przeciwnym razie Capybara ulega awarii pod numerem have_content
, co może doprowadzić do błędu serwera, ponieważ nazwa zespołu nigdy nie została poprawnie wybrana. Inne modemy Bootstrap: bez pole TokenInput nie wymaga jednak przed załadowaniem sleep 1
.
Z tym wszystkim, co powiedziane, czy istnieje sposób na pozbycie się snu i czy postępowanie to przebiega normalnie? Kapibara 2 wyjęła wait_until
(bez ważnego powodu), ponieważ będzie czekać w domyślnym czasie oczekiwania na przetestowanie czegoś ... ale to nie wydaje się być odzwierciedlone w powyższym teście; to tak, jakby Capybara nie angażowała się w ten okres oczekiwania po wejściu/wyjściu z tego modalu. Ktoś ma jakieś doświadczenie z tym? Używanie Rails 3.2.10, Rspec 2.12, Capybara 2, capybara-webkit 0.14.0, TokenInput 1.6.
Może to być pomocne: http://blog.crowdint.com/2013/09/20/poltergeist-and-bootstrap-modals.html – Matt