**
When making assertions inside a within
block the assertion scope
is limited to the element selected by the within() function, although
it looks like you are asserting on the entire page!
**
scenario 'Pressing Escape closes autocomplete popup' do
within('#new-broadcast') do
find('#broadcast_field').set('Hello ')
start_typing_name('#broadcast_field', '@Bret')
# will fail below
expect(page).to have_selector('.ui-autocomplete')
send_keys('#broadcast_field', :escape)
end
expect(page).to have_no_selector('.ui-autocomplete')
end
The above code failed the first expect()
and it took me some time before
I figured it out. Capybara's test suite itself gives you the answer
it "should assert content in the given scope" do
@session.within(:css, "#for_foo") do
expect(@session).not_to have_content('First Name')
end
expect(@session).to have_content('First Name')
end
So know your frameworks and happy testing.
Comments !