diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb
index c9057c8a6794f554b59dd7c41432a3564f352e95..4f150a9569187fc6f96c94be10ace7ba33061b5d 100644
--- a/spec/features/boards/boards_spec.rb
+++ b/spec/features/boards/boards_spec.rb
@@ -3,17 +3,18 @@ require 'rails_helper'
 describe 'Issue Boards', feature: true, js: true do
   include WaitForAjax
 
-  let(:project)   { create(:empty_project) }
-  let(:user)      { create(:user) }
-  let(:user2)     { create(:user) }
+  let(:project) { create(:empty_project) }
+  let(:user)    { create(:user) }
+  let!(:user2)  { create(:user) }
 
   before do
-    project.create_board!
-    create(:backlog_list, board: project.board)
-    create(:done_list, board: project.board)
+    project.create_board
+    project.board.lists.create(list_type: :backlog)
+    project.board.lists.create(list_type: :done)
 
     project.team << [user, :master]
     project.team << [user2, :master]
+
     login_as(user)
   end
 
@@ -52,7 +53,7 @@ describe 'Issue Boards', feature: true, js: true do
   end
 
   context 'with lists' do
-    let(:milestone)           { create(:milestone, project: project) }
+    let(:milestone) { create(:milestone, project: project) }
 
     let(:planning)    { create(:label, project: project, name: 'Planning') }
     let(:development) { create(:label, project: project, name: 'Development') }
@@ -81,7 +82,10 @@ describe 'Issue Boards', feature: true, js: true do
       wait_for_vue_resource
 
       expect(page).to have_selector('.board', count: 4)
-      has_issues
+      expect(find('.board:nth-child(1)')).to have_selector('.card')
+      expect(find('.board:nth-child(2)')).to have_selector('.card')
+      expect(find('.board:nth-child(3)')).to have_selector('.card')
+      expect(find('.board:nth-child(4)')).to have_selector('.card')
     end
 
     it 'shows lists' do
@@ -123,9 +127,10 @@ describe 'Issue Boards', feature: true, js: true do
       page.within(find('.board:nth-child(2)')) do
         find('.board-delete').click
       end
+
       wait_for_vue_resource
-      expect(page).to have_selector('.board', count: 3)
 
+      expect(page).to have_selector('.board', count: 3)
       expect(find(".js-board-list-#{planning.id}", visible: false)).not_to have_css('.is-active')
     end
 
@@ -273,6 +278,8 @@ describe 'Issue Boards', feature: true, js: true do
             click_link testing.title
           end
 
+          wait_for_vue_resource
+
           expect(page).to have_selector('.board', count: 5)
         end
 
@@ -283,6 +290,8 @@ describe 'Issue Boards', feature: true, js: true do
             click_link backlog.title
           end
 
+          wait_for_vue_resource
+
           expect(page).to have_selector('.board', count: 5)
         end
 
@@ -293,6 +302,8 @@ describe 'Issue Boards', feature: true, js: true do
             click_link done.title
           end
 
+          wait_for_vue_resource
+
           expect(page).to have_selector('.board', count: 5)
         end
 
@@ -308,6 +319,8 @@ describe 'Issue Boards', feature: true, js: true do
             click_link testing.title
           end
 
+          wait_for_vue_resource
+
           page.within(find('.board', match: :first)) do
             expect(page.find('.board-header')).to have_content('5')
             expect(page).to have_selector('.card', count: 5)
@@ -537,18 +550,21 @@ describe 'Issue Boards', feature: true, js: true do
     end
   end
 
-  def has_issues
-    expect(find('.board:nth-child(1)')).to have_selector('.card')
-    expect(find('.board:nth-child(2)')).to have_selector('.card')
-    expect(find('.board:nth-child(3)')).to have_selector('.card')
-    expect(find('.board:nth-child(4)')).to have_selector('.card')
-  end
-
   def drag_to(list_from_index: 0, card_index: 0, to_index: 0, list_to_index: 0, selector: '.board-list')
     evaluate_script("simulateDrag({scrollable: document.getElementById('board-app'), from: {el: $('#{selector}').eq(#{list_from_index}).get(0), index: #{card_index}}, to: {el: $('.board-list').eq(#{list_to_index}).get(0), index: #{to_index}}});")
+
+    Timeout.timeout(Capybara.default_max_wait_time) do
+      loop until page.evaluate_script('window.SIMULATE_DRAG_ACTIVE').zero?
+    end
+
+    wait_for_vue_resource
   end
 
   def wait_for_vue_resource
+    Timeout.timeout(Capybara.default_max_wait_time) do
+      loop until page.evaluate_script('Vue.activeResources').zero?
+    end
+
     expect(find('.boards-list')).not_to have_selector('.fa-spinner')
   end
 end