Do not update/delete: Banner broadcast message test data
Do not update/delete: Notification broadcast message test data
This MR ensures that DatabaseCleaner.clean runs AFTER Capybara's cleanup. This is needed because it seems like database is being truncated before capybara session ends, which leads to undefined method ... for nil:NilClass
exceptions causing tests to randomly fail.
Failing spec is https://gitlab.com/gitlab-org/gitlab-ce/blob/master/spec/features/boards/boards_spec.rb. Here are some examples of failed builds:
I've noticed that many branches suffer from random failures and it's not very comfortable for big test suite. Re-running builds until they pass is not a solution so I tried to come up with a fix. Unfortunately I can't be 100% sure about this fix (flaky test is always green on my local environment, so I can't be sure if green build on CI is false-positive or not), but if database is really being cleaned too early (which is clearly proved by logs provided here https://gitlab.com/gitlab-org/gitlab-ce/issues/21841#note_14926675 then it's very likely that this fix will help to get rid of random failures.
Also it's officially recommended in DatabaseCleaner README to use append_after
hook instead of just after
because of the way RSpec runs after hooks (in reverse order):
It's also recommended to use append_after to ensure DatabaseCleaner.clean runs after the after-test cleanup capybara/rspec installs.
(source)