         expect(userConfigEditor.getPath()).toBe(configPath)
 
       it "load config on save", ->
-        dispatchCommand(workspaceElement, 'project-folder:add')
-        expect(view).toHaveClass('add')
-
-        ensureSelectListItems [
-          itemDirNormalDir1
-          itemDirNormalDir2
-        ]
-
-        view.cancel()
-        expect(view.getItemsForGroups()).toEqual([])
-        userConfigEditor.setText """
-          groups:
-            atom: [
-              "~/github/atom.org"
-              "~/github/text-buffer"
-              "~/github/atom-keymap"
-            ]
-            hello: [
-              "~/dir/hello-project"
-              "~/dir/world-project"
-            ]
-          """
-        userConfigEditor.save()
-
-        itemGroupAtom =
-          name: 'atom'
-          dirs: ["~/github/atom.org", "~/github/text-buffer", "~/github/atom-keymap"].map(normalize)
-
-        itemGroupHello =
-          name: 'hello'
-          dirs: ["~/dir/hello-project", "~/dir/world-project"].map(normalize)
-
-        expect(view.getItemsForGroups()).toEqual [
-          itemGroupAtom
-          itemGroupHello
-        ]
-
-        dispatchCommand(workspaceElement, 'project-folder:add')
-        expect(view).toHaveClass('add')
-        ensureSelectListItems [
-          itemGroupAtom
-          itemGroupHello
-          itemDirNormalDir1
-          itemDirNormalDir2
-        ]
+        runs ->
+          dispatchCommand(workspaceElement, 'project-folder:add')
+          expect(view).toHaveClass('add')
+
+          ensureSelectListItems [
+            itemDirNormalDir1
+            itemDirNormalDir2
+          ]
+
+          view.cancel()
+          expect(view.getItemsForGroups()).toEqual([])
+          userConfigEditor.setText """
+            groups:
+              atom: [
+                "~/github/atom.org"
+                "~/github/text-buffer"
+                "~/github/atom-keymap"
+              ]
+              hello: [
+                "~/dir/hello-project"
+                "~/dir/world-project"
+              ]
+            """
+
+        waitsForPromise ->
+          Promise.resolve(userConfigEditor.save())
+
+        runs ->
+          itemGroupAtom =
+            name: 'atom'
+            dirs: ["~/github/atom.org", "~/github/text-buffer", "~/github/atom-keymap"].map(normalize)
+
+          itemGroupHello =
+            name: 'hello'
+            dirs: ["~/dir/hello-project", "~/dir/world-project"].map(normalize)
+
+          expect(view.getItemsForGroups()).toEqual [
+            itemGroupAtom
+            itemGroupHello
+          ]
+
+          dispatchCommand(workspaceElement, 'project-folder:add')
+          expect(view).toHaveClass('add')
+          ensureSelectListItems [
+            itemGroupAtom
+            itemGroupHello
+            itemDirNormalDir1
+            itemDirNormalDir2
+          ]
 
     describe "add/remove groups of project", ->
       loadUserConfig = ->

            ]
          """
        userConfigEditor.save()
        expect(view.groups).not.toBe(null)

      beforeEach ->
        setConfig('gitProjectDirectories', [gitRoot])

        # By changing showGroupOnRemoveListCondition from default 'never' to
        # 'some-member-was-loaded', we can test removal of group.
        setConfig('showGroupOnRemoveListCondition', 'some-member-was-loaded')

        waitsForPromise ->
          loadUserConfig().then ->
            expect(view.getItemsForGroups()).toHaveLength(2)

      it "add/remove set of project defined in groups", ->
        dispatchCommand(workspaceElement, 'project-folder:add')
