diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6
index 9564f48fdbe651dd58fd3027a3933c02e9a05749..e55941cd5bd4776e8e8b0c4cb9cb36193321fc78 100644
--- a/app/assets/javascripts/boards/stores/boards_store.js.es6
+++ b/app/assets/javascripts/boards/stores/boards_store.js.es6
@@ -71,8 +71,8 @@
     welcomeIsHidden () {
       return $.cookie('issue_board_welcome_hidden') === 'true';
     },
-    removeList (id) {
-      const list = this.findList('id', id, 'blank');
+    removeList (id, type = 'blank') {
+      const list = this.findList('id', id, type);
 
       if (!list) return;
 
@@ -107,6 +107,8 @@
           list.removeIssue(issue);
         }
         issue.removeLabels(listLabels);
+      } else {
+        listFrom.removeIssue(issue);
       }
     },
     findList (key, val, type = 'label') {
diff --git a/app/assets/javascripts/boards/test_utils/simulate_drag.js b/app/assets/javascripts/boards/test_utils/simulate_drag.js
index 8c5196e7719224f31abef1bf8a0b2aa7528bb166..75f8b73019555ee8af9ba3a5e8e3ddde3f9d2ae8 100755
--- a/app/assets/javascripts/boards/test_utils/simulate_drag.js
+++ b/app/assets/javascripts/boards/test_utils/simulate_drag.js
@@ -84,6 +84,7 @@
 		var duration = options.duration || 1000;
 		simulateEvent(fromEl, 'mousedown', {button: 0});
 		options.ontap && options.ontap();
+		window.SIMULATE_DRAG_ACTIVE = 1;
 
 		var dragInterval = setInterval(function loop() {
 			var progress = (new Date().getTime() - startTime) / duration;
@@ -100,6 +101,7 @@
 				options.ondragend && options.ondragend();
 				simulateEvent(toEl, 'mouseup');
 				clearInterval(dragInterval);
+				window.SIMULATE_DRAG_ACTIVE = 0;
 			}
 		}, 100);
 
diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb
index 13bf440cc8f3f0fda103c213fa36161578e4c22e..8c101a251b35d0012a097e8fd2c4e6d436fdaaad 100644
--- a/spec/features/boards/boards_spec.rb
+++ b/spec/features/boards/boards_spec.rb
@@ -508,6 +508,9 @@ describe 'Issue Boards', feature: true, js: true do
 
   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}}});")
-    sleep 1
+
+    Timeout.timeout(Capybara.default_max_wait_time) do
+      loop until page.evaluate_script('window.SIMULATE_DRAG_ACTIVE').zero?
+    end
   end
 end
diff --git a/spec/javascripts/boards/boards_store_spec.js.es6 b/spec/javascripts/boards/boards_store_spec.js.es6
index b7923c85cecdbc386c032a7a66ebcd0bb0fd5fe7..078e4b00023c2574509948a6806eb617b33c70e3 100644
--- a/spec/javascripts/boards/boards_store_spec.js.es6
+++ b/spec/javascripts/boards/boards_store_spec.js.es6
@@ -125,39 +125,35 @@
 
         expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1);
 
-        gl.issueBoards.BoardsStore.removeList(1);
+        gl.issueBoards.BoardsStore.removeList(1, 'label');
 
         expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0);
       });
 
       it('moves the position of lists', () => {
-        gl.issueBoards.BoardsStore.addList(listObj);
-        gl.issueBoards.BoardsStore.addList(listObjDuplicate);
+        const listOne = gl.issueBoards.BoardsStore.addList(listObj),
+              listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate);
 
         expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2);
 
-        gl.issueBoards.BoardsStore.moveList(0, 1);
+        gl.issueBoards.BoardsStore.moveList(listOne, ['2', '1']);
 
-        const list = gl.issueBoards.BoardsStore.findList('id', 1);
-        expect(list.position).toBe(1);
+        expect(listOne.position).toBe(1);
       });
 
       it('moves an issue from one list to another', (done) => {
-        gl.issueBoards.BoardsStore.addList(listObj);
-        gl.issueBoards.BoardsStore.addList(listObjDuplicate);
+        const listOne = gl.issueBoards.BoardsStore.addList(listObj),
+              listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate);
 
         expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2);
 
-        const list = gl.issueBoards.BoardsStore.findList('id', 1),
-              listTwo = gl.issueBoards.BoardsStore.findList('id', 2);
-
         setTimeout(() => {
-          expect(list.issues.length).toBe(1);
+          expect(listOne.issues.length).toBe(1);
           expect(listTwo.issues.length).toBe(1);
 
-          gl.issueBoards.BoardsStore.moveIssueToList(1, 2, 1);
+          gl.issueBoards.BoardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1));
 
-          expect(list.issues.length).toBe(0);
+          expect(listOne.issues.length).toBe(0);
           expect(listTwo.issues.length).toBe(1);
 
           done();