Fix flakey time-senstive group filter specs

This passed previously because the filtered group search is debounced by 0.5s. The test cleared the input, entered `group1`, cleared the input, entered nothing, and the all of groups are still listed because of the 0.5s debounce hasn't triggered and the test passes before anything is actually filtered.

Even if we assert that the list is filtered before clearing the input, the test still fails because the nature of the `fill_in 'filter', with: ""` method is that ["if you're setting the value to "", no keys are ever actually sent, hence no [`input`] event"](https://github.com/teamcapybara/capybara/issues/203#issuecomment-557281) and we never filter back to everything in the list.

So the solution is two-fold, add in the assertions that the list is actually filtered after each step. Then use a method that fills the input with proper events fired.
This commit is contained in:
Eric Eastwood 2018-06-14 21:31:54 -05:00
parent 69966fcb8d
commit a1d0a16bfb
2 changed files with 8 additions and 0 deletions

View file

@ -65,7 +65,11 @@ feature 'Dashboard Groups page', :js do
fill_in 'filter', with: group.name
wait_for_requests
expect(page).to have_content(group.name)
expect(page).not_to have_content(nested_group.parent.name)
fill_in 'filter', with: ''
page.find('[name="filter"]').send_keys(:enter)
wait_for_requests
expect(page).to have_content(group.name)

View file

@ -35,7 +35,11 @@ describe 'Explore Groups page', :js do
fill_in 'filter', with: group.name
wait_for_requests
expect(page).to have_content(group.full_name)
expect(page).not_to have_content(public_group.full_name)
fill_in 'filter', with: ""
page.find('[name="filter"]').send_keys(:enter)
wait_for_requests
expect(page).to have_content(group.full_name)