Вам нужно использовать драйвер с поддержкой JS для вашего теста. Если вы используете webrat o capybara, вы можете попробовать использовать селен.
Then I should see "foo"
Это не работает при использовании веб-шага по умолчанию, поскольку DOM не обновлялся при поиске текста. Есть 2 варианта:
Вариант 1: Ожидание
And I wait for 1 second
Then I should see "foo"
Вам нужно реализовать этот шаг для вызова sleep (n)
Вариант 2: выборочное местоположение
Метод локации Капибары покажет, присутствует ли цель в DOM. Если нет, он подождет несколько секунд и попробует еще раз, и выдаст ошибку, если ее все еще нет.
Then I should see the following autocomplete options:
| foo |
Вот так выглядит реализация шагов для меня:
Then /^I should see the following autocomplete options:$/ do |table|
table.raw.each do |row|
locate(:xpath, "//a[text()='#{row[0]}']")
end
end
Если вам нужна более подробная информация по этому вопросу, я написал пост в блоге с примерами и некоторыми фрагментами, также касающимися нажатия представленных вариантов автозаполнения:
http://www.aentos.com/blog/testing-ajax-autocomplete-fields-cucumber-and-capybara