Search code examples
ruby-on-railsajaxcapybarapoltergeist

Make capybara wait for an element to disappear


After a click on some element I expect a placeholder to disappear and another element to appear after an AJAX call is finished.

find(someLocator).click
expect(page).not_to have_css(disappearingPlaceholderLocator)
expect(page).to have_css(appearingElementLocator)

The first expectation fails though and the AJAX call is not executed.

I think this is somehow related to this SO question but I just can't figure out how.


Solution

  • This works when the expectations are flipped.

    find(someLocator).click
    expect(page).to have_css(appearingElementLocator)
    expect(page).not_to have_css(disappearingPlaceholderLocator)