Por que o meu teste Capybara / Poltergeist não pode selecionar em um campo de preenchimento automático do jQuery?

ATUALIZAÇÃO: Corrigi esse problema depois de muito trabalho por conta própria. Fico feliz em ser um recurso para quem precisa de ajuda. Aqui está uma essência da minhaconfiguração de trabalho.

Eu tentei todas as soluções que pude encontrar no Google e no SO. Aqui estão algumas coisas diferentes que eu tentei:

page.execute_script %Q{$('#{selector}').val('#{value}').trigger('keydown')}

e

fill_in field, with: options[:with]
page.execute_script %Q{ $('##{field}').trigger('focus') }
page.execute_script %Q{ $('##{field}').trigger('keydown') }

Isto é o que falha:

page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')

Mas está definitivamente lá quando olho para o Firebug e o testo no navegador.

Aqui estão todos os detalhes, incluindo uma reformulação dos itens acima. Lembre-se de que o campo de preenchimento automático funciona bem no navegador.

listing_integration_spec.rb

require "spec_helper"

describe "Listing Integration" do

  let!(:user) { login_user }

  it "lets a user add information listing", js: true do
    listing = create(:listing, user: user)
    click_link('Additional Information')
    click_link('Create')
    fill_autocomplete('listings_search', with: listing.item_id)
  end

end

spec/support/feature_helper.rb

def fill_autocomplete(field, options = {})
  fill_in field, with: options[:with]
  page.execute_script %Q{ $('##{field}').trigger('focus') }
  page.execute_script %Q{ $('##{field}').trigger('keydown') }
  selector = %Q{ul.ui-autocomplete li.ui-menu-item a:contains('#{options[:with]}')}
  page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')
  page.execute_script %Q{ $("##{selector}").trigger('mouseenter').click() }
end

ERB from view template

<%= simple_fields_for :listings  do |f| %>
  <%= f.input :search, label: "Search by Listing", required: true %>
<% end %>

e o Coffeescript:

$("#listings_search").autocomplete
  source: (request, response) ->
    options = 
      term: request.term
    $.get "/search_listings", options, (data) ->
      if data.length == 0
        alert "No listings found."
      response data
  minLength: 2
  select: (event, ui) ->
    add_listing_hash = 
      type: "GET"
      url: "/add_listing"
      data: { id: ui.item.id }
      success: () ->
    $.ajax(add_listing_hash)

questionAnswers(5)

yourAnswerToTheQuestion